commit 48cdba812c660fccd16052f7f2119b867a736ec2
Author: Tomás Touceda <chiiph(a)torproject.org>
Date: Thu Oct 20 09:54:30 2011 -0300
Handle Thp package creation in a separate CLI from Signer
---
lib/thandy/SignerCLI.py | 85 +-----------------------------------
lib/thandy/ThpCLI.py | 111 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 113 insertions(+), 83 deletions(-)
diff --git a/lib/thandy/SignerCLI.py b/lib/thandy/SignerCLI.py
index fd22c69..06536aa 100644
--- a/lib/thandy/SignerCLI.py
+++ b/lib/thandy/SignerCLI.py
@@ -3,10 +3,6 @@
import os
import getopt
import sys
-import tempfile
-import time
-import shutil
-import zipfile
import thandy.keys
import thandy.formats
@@ -97,81 +93,6 @@ def makepackage(args):
f.write(metaFile)
f.close()
-def makethppackage(args):
- options, args = getopt.getopt(args, "", "keyid=")
- keyid = None
- scriptsPath = None
- for o,v in options:
- if o == "--keyid":
- keyid = v
-
- if len(args) < 3:
- usage()
-
- tmpPath = tempfile.mkdtemp(suffix=str(time.time()),
- prefix="thp")
-
- print "Using temporary directory: %s" % tmpPath
-
- configFile = args[0]
- dataPath = args[1]
- thpPath = args[2]
- if len(args) > 3:
- scriptsPath = args[3]
-
- print "Generating package metadata..."
- metadata = thandy.formats.makeThpPackageObj(configFile, dataPath)
-
- print "Generating directory structure..."
- try:
- os.mkdir(os.path.join(tmpPath, "meta"));
- except Exception as e:
- print e
- thandy.util.deltree(tmpPath)
- sys.exit(1)
-
- thandy.util.replaceFile(os.path.join(tmpPath, "meta", "package.json"),
- json.dumps(metadata, indent=3))
-
- shutil.copytree(dataPath, os.path.join(tmpPath, "content"))
-
- if "scripts" in metadata:
- try:
- os.mkdir(os.path.join(tmpPath, "meta", "scripts"))
- except Exception as e:
- print e
- thandy.util.deltree(tmpPath)
- sys.exit(1)
- for lang in metadata["scripts"]:
- for script in metadata['scripts'][lang]:
- shutil.copyfile(os.path.join(scriptsPath, script[0]),
- os.path.join(tmpPath, "meta", "scripts", script[0]))
-
- thpFileName = "%s-%s.thp" % (metadata['package_name'],
- metadata['package_version'])
-
- print "Generating thp file in %s" % thpFileName
- thpFile = zipfile.ZipFile(os.path.join(thpPath,
- thpFileName), "w")
-
- for file in metadata['manifest']:
- thpFile.write(os.path.join(tmpPath, "content", file['name']),
- os.path.join("content", file['name']))
-
- if "scripts" in metadata:
- for lang in metadata["scripts"]:
- for script in metadata['scripts'][lang]:
- thpFile.write(os.path.join(tmpPath, "meta", "scripts", script[0]),
- os.path.join("meta", "scripts", script[0]))
-
- thpFile.write(os.path.join(tmpPath, "meta", "package.json"),
- os.path.join("meta", "package.json"))
-
- thpFile.close()
-
- print "All done. Cleaning tmp directory..."
- thandy.util.deltree(tmpPath)
-
def makebundle(args):
options, args = getopt.getopt(args, "", "keyid=")
keyid = None
@@ -386,7 +307,6 @@ def usage():
print " delrole keyid role path"
print " dumpkey [--include-secret] keyid"
print " makepackage config datafile"
- print " makethppackage config datapath thpPath scriptsPath"
print " makebundle config packagefile ..."
print " signkeylist keylist"
print " makekeylist keylist"
@@ -399,9 +319,8 @@ def main():
cmd = sys.argv[1]
args = sys.argv[2:]
if cmd in [ "keygen", "listkeys", "addrole", "delrole", "chpass",
- "dumpkey", "makepackage", "makebundle", "makethppackage",
- "signkeylist", "makekeylist", "signkeylist",
- "makemirrorlist", ]:
+ "dumpkey", "makepackage", "makebundle", "signkeylist",
+ "makekeylist", "signkeylist", "makemirrorlist", ]:
try:
globals()[cmd](args)
except thandy.BadPassword:
diff --git a/lib/thandy/ThpCLI.py b/lib/thandy/ThpCLI.py
new file mode 100644
index 0000000..52938d6
--- /dev/null
+++ b/lib/thandy/ThpCLI.py
@@ -0,0 +1,111 @@
+# Copyright 2011 The Tor Project, Inc. See LICENSE for licensing information.
+
+import sys
+import os
+import getopt
+import tempfile
+import time
+import shutil
+import zipfile
+
+import thandy.keys
+import thandy.util
+import thandy.formats
+
+json = thandy.util.importJSON()
+
+def makethppackage(args):
+ options, args = getopt.getopt(args, "", "keyid=")
+ keyid = None
+ scriptsPath = None
+ for o,v in options:
+ if o == "--keyid":
+ keyid = v
+
+ if len(args) < 3:
+ usage()
+
+ tmpPath = tempfile.mkdtemp(suffix=str(time.time()),
+ prefix="thp")
+
+ print "Using temporary directory: %s" % tmpPath
+
+ configFile = args[0]
+ dataPath = args[1]
+ thpPath = args[2]
+ if len(args) > 3:
+ scriptsPath = args[3]
+
+ print "Generating package metadata..."
+ metadata = thandy.formats.makeThpPackageObj(configFile, dataPath)
+
+ print "Generating directory structure..."
+ try:
+ os.mkdir(os.path.join(tmpPath, "meta"));
+ except Exception as e:
+ print e
+ thandy.util.deltree(tmpPath)
+ sys.exit(1)
+
+ thandy.util.replaceFile(os.path.join(tmpPath, "meta", "package.json"),
+ json.dumps(metadata, indent=3))
+
+ shutil.copytree(dataPath, os.path.join(tmpPath, "content"))
+
+ if "scripts" in metadata:
+ try:
+ os.mkdir(os.path.join(tmpPath, "meta", "scripts"))
+ except Exception as e:
+ print e
+ thandy.util.deltree(tmpPath)
+ sys.exit(1)
+ for lang in metadata["scripts"]:
+ for script in metadata['scripts'][lang]:
+ shutil.copyfile(os.path.join(scriptsPath, script[0]),
+ os.path.join(tmpPath, "meta", "scripts", script[0]))
+
+ thpFileName = "%s-%s.thp" % (metadata['package_name'],
+ metadata['package_version'])
+
+ print "Generating thp file in %s" % thpFileName
+ thpFile = zipfile.ZipFile(os.path.join(thpPath,
+ thpFileName), "w")
+
+ for file in metadata['manifest']:
+ thpFile.write(os.path.join(tmpPath, "content", file['name']),
+ os.path.join("content", file['name']))
+
+ if "scripts" in metadata:
+ for lang in metadata["scripts"]:
+ for script in metadata['scripts'][lang]:
+ thpFile.write(os.path.join(tmpPath, "meta", "scripts", script[0]),
+ os.path.join("meta", "scripts", script[0]))
+
+ thpFile.write(os.path.join(tmpPath, "meta", "package.json"),
+ os.path.join("meta", "package.json"))
+
+ thpFile.close()
+
+ print "All done. Cleaning tmp directory..."
+ thandy.util.deltree(tmpPath)
+
+def usage():
+ print "Known commands:"
+ print " makethppackage config datapath thpPath scriptsPath"
+ sys.exit(1)
+
+def main():
+ if len(sys.argv) < 2:
+ usage()
+ cmd = sys.argv[1]
+ args = sys.argv[2:]
+ if cmd in [ "makethppackage", ]:
+ try:
+ globals()[cmd](args)
+ except thandy.BadPassword:
+ print >>sys.stderr, "Password incorrect."
+ else:
+ usage()
+
+if __name__ == '__main__':
+ main()