SVN: zpkgtools/trunk/ add a -t/--tree option to build the tree without making a tarball

"Fred L. Drake, Jr." <[email protected]>
Newsgroups gmane.comp.web.zope.public-cvs
Message-ID <[email protected]>
Log message for revision 38043:
  add a -t/--tree option to build the tree without making a tarball

Changed:
  U   zpkgtools/trunk/doc/zpkg.txt
  U   zpkgtools/trunk/zpkgtools/app.py
  U   zpkgtools/trunk/zpkgtools/tests/test_app.py

-=-
Modified: zpkgtools/trunk/doc/zpkg.txt
===================================================================
--- zpkgtools/trunk/doc/zpkg.txt	2005-08-23 13:30:38 UTC (rev 38042)
+++ zpkgtools/trunk/doc/zpkg.txt	2005-08-23 14:06:13 UTC (rev 38043)
@@ -74,6 +74,13 @@
   This can be used to provide additional software to be used when
   distutils is running for the distributed package.
 
+-t, --tree
+  Build the distribution tree only, but don't create a tarball.  The
+  distribution tree will be created in the current directory and will
+  be given the same name it would have in the tarball.  A directory of
+  that name must not already exist; if it does, it is considered an
+  error.
+
 -v VERSION
   Set the version number of the release to `VERSION`.
 

Modified: zpkgtools/trunk/zpkgtools/app.py
===================================================================
--- zpkgtools/trunk/zpkgtools/app.py	2005-08-23 13:30:38 UTC (rev 38042)
+++ zpkgtools/trunk/zpkgtools/app.py	2005-08-23 14:06:13 UTC (rev 38043)
@@ -118,7 +118,10 @@
         release_name = self.options.release_name
         self.target_name = "%s-%s" % (release_name, self.options.version)
         self.target_file = self.target_name + ".tgz"
-        self.destination = os.path.join(self.tmpdir, self.target_name)
+        if self.options.tree_only:
+            self.destination = os.path.abspath(self.target_name)
+        else:
+            self.destination = os.path.join(self.tmpdir, self.target_name)
         os.mkdir(self.destination)
         self.support_packages = DEFAULT_SUPPORT_PACKAGES[:]
         self.support_packages.extend(
@@ -347,7 +350,8 @@
             except zpkgtools.LoadingError, e:
                 self.error(str(e), e.exitcode)
             self.write_manifests()
-            self.create_tarball()
+            if not self.options.tree_only:
+                self.create_tarball()
             self.cleanup()
         except:
             print >>sys.stderr, "----\ntemporary files are in", self.tmpdir
@@ -601,6 +605,9 @@
         "-s", dest="include_support_code", action="store_true",
         help="include copies of the zpkgtools support code (the default)")
     parser.add_option(
+        "-t", "--tree", dest="tree_only", action="store_true",
+        help="generate an unpacked distribution tree, not a tarball")
+    parser.add_option(
         "-v", dest="version",
         help="version label for the new distribution")
     parser.add_option(

Modified: zpkgtools/trunk/zpkgtools/tests/test_app.py
===================================================================
--- zpkgtools/trunk/zpkgtools/tests/test_app.py	2005-08-23 13:30:38 UTC (rev 38042)
+++ zpkgtools/trunk/zpkgtools/tests/test_app.py	2005-08-23 14:06:13 UTC (rev 38043)
@@ -46,6 +46,14 @@
         self.assertEqual(options.resource, "resource")
         return options
 
+    def test_set_tree_only(self):
+        options = self.parse_args([])
+        self.assert_(not options.tree_only)
+        options = self.parse_args(["-t"])
+        self.assert_(options.tree_only)
+        options = self.parse_args(["--tree"])
+        self.assert_(options.tree_only)
+
     def test_set_package_version(self):
         options = self.parse_args([])
         self.assertEqual(options.version, "0.0.0")
@@ -403,6 +411,26 @@
         # convert package_map to URL so relative names are resolved properly
         return "file://" + urllib.pathname2url(package_map)
 
+    def test_building_distribution_tree_only(self):
+        # This builds a package and checks that the tree_only flag
+        # causes the application to build a tree in the current
+        # directory instead of a tarball.
+        package_map = self.createPackageMap()
+        app = self.createApplication(
+            ["-f", "-t", "-m", package_map, "package"])
+        app.run()
+        # make sure the local tree is present and looks like one of
+        # our distributions:
+        self.assert_(os.path.isdir("package-0.0.0"))
+        self.assert_(os.path.isdir(os.path.join("package-0.0.0", "package")))
+        self.assert_(os.path.isdir(os.path.join("package-0.0.0", "Support")))
+        self.assert_(isfile("package-0.0.0", "setup.py"))
+        self.assert_(isfile("package-0.0.0", "setup.cfg"))
+        self.assert_(isfile("package-0.0.0", "MANIFEST"))
+        self.assert_(isfile("package-0.0.0", "Support", "MANIFEST"))
+        self.assert_(isfile("package-0.0.0", "Support", "README.txt"))
+        self.assert_(isfile("package-0.0.0", "Support", "setup.py"))
+
     def test_adding_extra_support_code(self):
         package_map = self.createPackageMap()
         app = self.createApplication(

_______________________________________________
Zope-CVS maillist  -  [email protected]
http://mail.zope.org/mailman/listinfo/zope-cvs

Zope CVS instructions: http://dev.zope.org/CVS
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.