[Checkins] SVN: zc.recipe.deployment/trunk/src/zc/recipe/deployment/ prefix, and everything that depends on it, are absolutized

Fred Drake cvs-admin at zope.org
Thu Mar 7 00:18:50 UTC 2013


Log message for revision 130053:
  prefix, and everything that depends on it, are absolutized

Changed:
  U   zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
  U   zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt

-=-
Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py	2013-03-06 22:48:26 UTC (rev 130052)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py	2013-03-07 00:18:49 UTC (rev 130053)
@@ -36,21 +36,29 @@
 
         name = options['name']
 
-        options['prefix'] = options.get('prefix', '/')
+        prefix = os.path.join('/', options.get('prefix', '/'))
+        options['prefix'] = prefix
         options['run-directory'] = os.path.join(
-            options['prefix'], options.get('run', 'var/run'), name)
+            prefix, options.get('run', 'var/run'), name)
         options['log-directory'] = os.path.join(
-            options['prefix'], options.get('log', 'var/log'), name)
+            prefix, options.get('log', 'var/log'), name)
         options['etc-directory'] = os.path.join(
-            options['prefix'], options.get('etc', 'etc'), name)
-        etc = os.path.join(options['prefix'], options.get('etc', 'etc'))
-        options['crontab-directory'] = options.get(
-            'crontab-directory', os.path.join(etc, 'cron.d'))
-        options['rc-directory'] = options.get(
-            'rc-directory', os.path.join(etc, 'init.d'))
-        options['logrotate-directory'] = options.get(
-            'logrotate-directory', os.path.join(etc, 'logrotate.d'))
+            prefix, options.get('etc', 'etc'), name)
+        etc = os.path.join(prefix, options.get('etc', 'etc'))
 
+        def directory(key, base, tail):
+            key += '-directory'
+            setting = options.get(key)
+            if setting:
+                path = os.path.join(prefix, setting)
+            else:
+                path = os.path.join(prefix, base, tail)
+            options[key] = path
+
+        directory("crontab", etc, "cron.d")
+        directory("logrotate", etc, "logrotate.d")
+        directory("rc", etc, "init.d")
+
     def install(self):
         options = self.options
         run_user = options['user']

Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt	2013-03-06 22:48:26 UTC (rev 130052)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt	2013-03-07 00:18:49 UTC (rev 130053)
@@ -114,3 +114,37 @@
      'prefix': '/usr/local',
      'rc-directory': '/my-rcs',
      'run-directory': '/usr/local/var/run/myapp'}
+
+
+Paths are absolute
+------------------
+
+Output paths (option names ending in '-directory') are absolute, even if
+``prefix`` is relative:
+
+    >>> compute({"prefix": "my/prefix"})
+    {'crontab-directory': '/my/prefix/etc/cron.d',
+     'etc-directory': '/my/prefix/etc/myapp',
+     'log-directory': '/my/prefix/var/log/myapp',
+     'logrotate-directory': '/my/prefix/etc/logrotate.d',
+     'name': 'myapp',
+     'prefix': '/my/prefix',
+     'rc-directory': '/my/prefix/etc/init.d',
+     'run-directory': '/my/prefix/var/run/myapp'}
+
+    >>> compute({"crontab-directory": "my-crontabs",
+    ...          "etc": "antsy",
+    ...          "log": "var/someplace",
+    ...          "logrotate-directory": "my-logrotations",
+    ...          "prefix": "my/prefix",
+    ...          "rc-directory": "my-rcs"})
+    {'crontab-directory': '/my/prefix/my-crontabs',
+     'etc': 'antsy',
+     'etc-directory': '/my/prefix/antsy/myapp',
+     'log': 'var/someplace',
+     'log-directory': '/my/prefix/var/someplace/myapp',
+     'logrotate-directory': '/my/prefix/my-logrotations',
+     'name': 'myapp',
+     'prefix': '/my/prefix',
+     'rc-directory': '/my/prefix/my-rcs',
+     'run-directory': '/my/prefix/var/run/myapp'}



More information about the checkins mailing list