def main(): args = docopt(USAGE) path = os.path.expanduser(args['<config.yaml>']) try: conf = Cfg(path) except ValueError as e: print('error: {}'.format(str(e))) return False conf.short_to_long() print(conf.dump())
def test_config(self): '''Test the config class''' tmp = get_tempfolder() self.assertTrue(os.path.exists(tmp)) self.addCleanup(clean, tmp) confpath = create_fake_config(tmp, configname=self.CONFIG_NAME, dotpath=self.CONFIG_DOTPATH, backup=self.CONFIG_BACKUP, create=self.CONFIG_CREATE) conf = Cfg(confpath) self.assertTrue(conf is not None) opts = conf.get_configs() self.assertTrue(opts is not None) self.assertTrue(opts != {}) self.assertTrue(opts['backup'] == self.CONFIG_BACKUP) self.assertTrue(opts['create'] == self.CONFIG_CREATE) dotpath = os.path.join(tmp, self.CONFIG_DOTPATH) self.assertTrue(opts['dotpath'] == dotpath) self.assertTrue(conf._is_valid()) self.assertTrue(conf.dump() != '')
def main(): """entry point""" ret = True args = docopt(USAGE, version=VERSION) try: conf = Cfg(os.path.expanduser(args['--cfg']), debug=args['--verbose']) except ValueError as e: LOG.err('Config format error: {}'.format(str(e))) return False opts = conf.get_settings() opts['dry'] = args['--dry'] opts['profile'] = args['--profile'] opts['safe'] = not args['--force'] opts['debug'] = args['--verbose'] opts['installdiff'] = not args['--nodiff'] opts['link'] = LinkTypes.NOLINK if opts['link_by_default']: opts['link'] = LinkTypes.PARENTS # Only invert link type from NOLINK to PARENTS and vice-versa if args['--inv-link'] and opts['link'] == LinkTypes.NOLINK: opts['link'] = LinkTypes.PARENTS if args['--inv-link'] and opts['link'] == LinkTypes.PARENTS: opts['link'] = LinkTypes.NOLINK opts['variables'] = conf.get_variables(opts['profile'], debug=opts['debug']) opts['showdiff'] = opts['showdiff'] or args['--showdiff'] if opts['debug']: LOG.dbg('config file: {}'.format(args['--cfg'])) LOG.dbg('options:\n{}'.format(opts)) LOG.dbg('configs:\n{}'.format(conf.dump())) # resolve dynamic paths conf.eval_dotfiles(opts['profile'], opts['variables'], debug=opts['debug']) if ENV_NOBANNER not in os.environ \ and opts['banner'] \ and not args['--no-banner']: _header() try: if args['list']: # list existing profiles if opts['debug']: LOG.dbg('running cmd: list') cmd_list_profiles(conf) elif args['listfiles']: # list files for selected profile if opts['debug']: LOG.dbg('running cmd: listfiles') cmd_list_files(opts, conf, templateonly=args['--template']) elif args['install']: # install the dotfiles stored in dotdrop if opts['debug']: LOG.dbg('running cmd: install') ret = cmd_install(opts, conf, temporary=args['--temp'], keys=args['<key>']) elif args['compare']: # compare local dotfiles with dotfiles stored in dotdrop if opts['debug']: LOG.dbg('running cmd: compare') tmp = get_tmpdir() opts['dopts'] = args['--dopts'] ret = cmd_compare(opts, conf, tmp, focus=args['--file'], ignore=args['--ignore']) # clean tmp directory remove(tmp) elif args['import']: # import dotfile(s) if opts['debug']: LOG.dbg('running cmd: import') ret = cmd_importer(opts, conf, args['<path>']) elif args['update']: # update a dotfile if opts['debug']: LOG.dbg('running cmd: update') iskey = args['--key'] ret = cmd_update(opts, conf, args['<path>'], iskey=iskey, ignore=args['--ignore'], showpatch=args['--show-patch']) elif args['detail']: # detail files if opts['debug']: LOG.dbg('running cmd: update') cmd_detail(opts, conf, keys=args['<key>']) except KeyboardInterrupt: LOG.err('interrupted') ret = False if opts['debug']: LOG.dbg('configs:\n{}'.format(conf.dump())) return ret