aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buildout.cfg6
-rw-r--r--mediagoblin/buildout_recipes.py50
-rw-r--r--setup.py3
3 files changed, 58 insertions, 1 deletions
diff --git a/buildout.cfg b/buildout.cfg
index e82e3827..2b36fb7c 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -1,6 +1,6 @@
[buildout]
develop = .
-parts = mediagoblin
+parts = mediagoblin make_user_dev_dirs
[mediagoblin]
recipe=zc.recipe.egg
@@ -10,3 +10,7 @@ entry-points =
nosetests=nose:run_exit
paster=paste.script.command:run
+
+[make_user_dev_dirs]
+recipe = mediagoblin:make_user_dev_dirs
+path = user_dev \ No newline at end of file
diff --git a/mediagoblin/buildout_recipes.py b/mediagoblin/buildout_recipes.py
new file mode 100644
index 00000000..abb01b9e
--- /dev/null
+++ b/mediagoblin/buildout_recipes.py
@@ -0,0 +1,50 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import logging
+import os
+
+
+MAKE_SUBDIRECTORIES = ['media/queue', 'media/public', 'beaker']
+
+
+class MakeUserDevDirs(object):
+ """
+ Simple recipe for making subdirectories for user buildout convenience
+ """
+ def __init__(self, buildout, name, options):
+ self.buildout, self.name, self.options = buildout, name, options
+
+ if self.options['path'].startswith('/'):
+ self.path = self.options['path']
+ else:
+ self.path = os.path.join(
+ self.buildout['buildout']['directory'],
+ self.options['path'])
+
+ def install(self):
+ for make_subdir in MAKE_SUBDIRECTORIES:
+ fulldir = os.path.join(self.path, make_subdir)
+
+ if not os.path.exists(fulldir):
+ logging.getLogger(self.name).info(
+ 'Creating directory %s' % fulldir)
+ os.makedirs(fulldir)
+
+ return ()
+
+ update = install
diff --git a/setup.py b/setup.py
index 1d790779..b47be4c3 100644
--- a/setup.py
+++ b/setup.py
@@ -45,5 +45,8 @@ setup(
entry_points = """\
[paste.app_factory]
app = mediagoblin.app:paste_app_factory
+
+ [zc.buildout]
+ make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs
""",
)