Mercurial > piecrust2
diff piecrust/commands/builtin/util.py @ 1:aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Added `init` command.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 22 Dec 2013 08:00:24 -0800 |
parents | |
children | f485ba500df3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/piecrust/commands/builtin/util.py Sun Dec 22 08:00:24 2013 -0800 @@ -0,0 +1,49 @@ +import os +import os.path +import codecs +import logging +import yaml +from piecrust.app import CONFIG_PATH +from piecrust.commands.base import ChefCommand + + +logger = logging.getLogger(__name__) + + +class InitCommand(ChefCommand): + def __init__(self): + super(InitCommand, self).__init__() + self.name = 'init' + self.description = "Creates a new empty PieCrust website." + self.requires_website = False + + def setupParser(self, parser): + parser.add_argument('destination', + help="The destination directory in which to create the website.") + + def run(self, ctx): + destination = ctx.args.destination + if destination is None: + destination = os.getcwd() + + if not os.path.isdir(destination): + os.makedirs(destination, 0755) + + config_path = os.path.join(destination, CONFIG_PATH) + if not os.path.isdir(os.path.dirname(config_path)): + os.makedirs(os.path.dirname(config_path)) + + config_text = yaml.dump({ + 'site': { + 'title': "My New Website", + 'description': "A website recently generated with PieCrust", + 'pretty_urls': True + }, + 'smartypants': { + 'enable': True + } + }, + default_flow_style=False) + with codecs.open(config_path, 'w', 'utf-8') as fp: + fp.write(config_text) +