def __init__(self): # Find Project Root path.current = os.getcwd() path.root = recurse_up(path.current, 'Cakefile') if path.root: os.chdir(path.root) sys.path.insert(0, '') # Print project path puts(fore.yellow('(in %s)' % path.root)) else: raise CakeError('Cakefile not found') # Prepare environment self.env = {} self.tasks = {} # Read Cakefile with open('Cakefile') as f: exec(f.read(), self.env) # Load all tasks for name, task in self.env.items(): if getattr(task, '_task', False): self.tasks[name] = task
def list_tasks(self): width = max([len(i._spec) for i in self.tasks.values()] + [50]) keys = self.tasks.keys() keys.sort() for task in [self.tasks[i] for i in keys]: puts('cake %-*s # %s' % (width, task._spec, task._desc), trim=True)
def func(*args, **kwargs): sys.stdout.indent_level += 1 puts(header) base(*args, **kwargs) sys.stdout.indent_level -= 1
def ignore(dirname, names): common = osp.commonprefix([project, dirname]) puts( fore.green(' init ') + osp.join(projname, dirname[len(common) + 1:])) return []
def generate(modname): """ generate new module """ # check for valid name if modname.lower() in pydoc.Helper.keywords.keys(): raise PyscaleError('%s is a Python keyword.' % repr(modname.lower())) # go to project root root = find_project() if root != False: os.chdir(root) else: raise PyscaleError('Pyscale project not found (missing Cakefile?)') # create folder folder = 'app/%s' % modname if osp.isdir(folder): puts(fore.yellow(' exists ') + folder) else: puts(fore.green(' mkdir ') + folder) os.makedirs(folder) # create file modfile = 'app/%s/main' % modname tplfile = osp.join(pyscale.__path__[0], 'files', 'module') if osp.exists(modfile): raise PyscaleError('Module already exists. Aborting...') else: with open(tplfile) as f: tpl = jinja2.Template(f.read()) tpl = tpl.render(module=modname.title()) puts(fore.green(' create ') + modfile) with open(modfile, 'w') as f: f.write(tpl)
def main(): try: app = Application() app.run(*sys.argv[1:]) except CakeError as e: puts(fore.red('cake aborted!\n') + str(e), stream=sys.stderr)
def ignore(dirname, names): common = osp.commonprefix([project, dirname]) puts(fore.green(' init ') + osp.join(projname, dirname[len(common)+1:])) return []