Commit 3541bb8f authored by Thomas Gambier's avatar Thomas Gambier 🚴🏼

mkdirectory: move this recipe from slapos.cookbook

Moving this recipe in this egg will make it usable in software.cfg
(because slapos.cookbook had dependencies that makes it non installable
only with pip).
parent 59c1361b
Pipeline #39303 passed with stage
in 0 seconds
......@@ -1229,3 +1229,28 @@ Example
world =
uptime -s
echo ... world!
================================
slapos.recipe.build:mkdirectory
================================
mkdirectory loops on its options and create the directory joined
Example that create 2 directories foo and bar::
[buildout]
parts =
directory
[directory]
recipe = slapos.recipe.build:mkdirectory
foo = ${buildout:directory}/foo
bar = ${buildout:directory}/sub/dir/bar
Use a slash ``/`` as directory separator. Don't use system dependent separator.
The slash will be parsed and replace by the operating system right separator.
Only use relative directory to the buildout root directory.
The created directory won't be added to path list.
......@@ -37,6 +37,7 @@ setup(name=name,
'download = slapos.recipe.download:Recipe',
'download-unpacked = slapos.recipe.downloadunpacked:Recipe',
'gitclone = slapos.recipe.gitclone:Recipe',
'mkdirectory = slapos.recipe.mkdirectory:Recipe',
'vm.install-debian = slapos.recipe.vm:InstallDebianRecipe',
'vm.run = slapos.recipe.vm:RunRecipe',
],
......
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import os
import six
class Recipe(object):
def __init__(self, buildout, name, options):
self.directory = options.copy()
del self.directory['recipe']
self.mode = int(self.directory.pop('mode', '0777'), 8)
def update(self):
return self.install()
def install(self):
for path in sorted(six.itervalues(self.directory)):
if path and not os.path.isdir(path):
os.makedirs(path, self.mode)
# WARNING: This recipe is currently used to create directories that will
# contain user data (e.g. NEO db). Such directories must never
# be purged by the uninstallation of a recipe.
return []
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment