def process_rename(renames, data): if not renames: return c = color.cyan for k, v in renames.items(): t = Template(v) v = t.render(**data) if '{{' in v: log.error('error renaming', c(k), 'to', c(v)) elif os.path.exists(v): log.warn('rewriting', c(v)) shutil.rmtree(v) shutil.move(k, v) else: log.info('renaming', c(k), 'to', c(v)) shutil.move(k, v)
def test_log(): log.info('hello test') log.start('start a level') log.info('info in a level') log.warn('warn in a level') log.error('error in a level') log.debug('debug info') log.verbose.info('will not print this') log.config(verbose=True) log.verbose.info('will print this') log.start('start second level') log.verbose.debug('hello debug') log.end() log.config(quiet=True) log.info('will not print') log.end('close a level') log.message('foo', 'bar')
def shell(argv, cwd=None, input=None): """ Run a shell command, get the response from stdout. """ if not isinstance(argv, (list, tuple)): argv = argv.split() try: p = Popen(argv, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=cwd) except OSError as e: if e.errno == os.errno.ENOENT: log.error("Maybe you haven't installed", argv[0]) else: log.error(e) return None stdout, stderr = p.communicate(input=input) if stderr: # log.error(stderr.decode()) return None return stdout.decode()
from terminal.builtin import log log.start('terminal build') log.info('build foo') log.debug('read file foo.py') log.warn('not found foo.py') log.info('build bar') log.debug('read file bar.py') log.start('sub read') log.info('parse bar.py') log.info('bar is python') log.end('parse end') log.error('syntax error') log.end('end build')
from terminal.builtin import log log.start("terminal build") log.info("build foo") log.debug("read file foo.py") log.warn("not found foo.py") log.info("build bar") log.debug("read file bar.py") log.start("sub read") log.info("parse bar.py") log.info("bar is python") log.end("parse end") log.error("syntax error") log.end("end build")
def init(name): """ The main interface for this program. Define a template yourself, the folder structure of a template:: template.py config.json (optional) root/ In your ``template.py``, define a ``prompt`` function to collect information:: def main(): # prompt for user, and get data from user # return data """ folder = os.path.join(TEMPLATE_DIR, name) if not os.path.exists(folder): install(name) log.info('loading', color.cyan(name)) template = None for name in ['template.yml', 'template.yaml', 'template']: template = os.path.join(folder, name) if os.path.exists(template): break if not template: log.error('template not found.') return config = _get_config(template) if 'register' in config and os.path.exists(config['register']): q = confirm( 'This is not an empty directory, do you want to rewrite it') if not q: return sys.exit(2) # a blank line for seprating the logs and prompts print('') data = process_prompts(config) print('') # write from templates process_write(os.path.join(folder, 'root'), data) # create license if 'license' in data: process_license(data['license'], data) process_rename(config.get('rename', {}), data) footer = config.get('footer') if isinstance(footer, (list, tuple)): footer = '\n'.join(footer) if footer: print('\n%s\n' % footer) return