コード例 #1
0
ファイル: Caf.py プロジェクト: azag0/caf
 def __call__(self, argv):
     log_caf(argv)
     try:
         super().__call__(argv)  # try CLI as if local
     except CLIExit as e:  # store exception to reraise below if remote fails as well
         cliexit = e
     else:
         print_timing()
         return  # finished
     # the local CLI above did not succeed
     # make a usage without local CLI
     usage = '\n'.join(l for l in str(self).splitlines() if 'caf COMMAND' not in l)
     try:  # remote CLI failed as well, reraise CLIExit
         args = docopt(usage, argv=argv[1:], options_first=True, help=False)  # parse local
     except DocoptExit:
         raise cliexit
     rargv = [argv[0], args['COMMAND']] + args['ARGS']  # remote argv
     try:  # try CLI as if remote
         rargs = self.parse(rargv)  # remote parsed arguments
     except DocoptExit:  # remote CLI failed as well, reraise CLIExit
         raise cliexit
     if 'work' in rargs:
         if rargs['--queue']:  # substitute URL
             url = self.get_queue_url(rargs['--queue'], 'get')
             if url:
                 rargv = [arg if arg != rargs['--queue'] else url for arg in rargv]
         elif rargs['--last']:
             with open('.caf/LAST_QUEUE') as f:
                 queue_url = f.read().strip()
             last_index = rargv.index('--last')
             rargv = rargv[:last_index] + ['--queue', queue_url] + rargv[last_index+1:]
     remotes = self.proc_remote(args['REMOTE'])  # get Remote objects
     if args['COMMAND'] in ['init', 'build', 'work']:
         for remote in remotes:
             remote.update()
     if 'work' in rargs and not rargs['build'] and not args['--no-check']:
         for remote in remotes:
             remote.check(self.out)
     for remote in remotes:
         remote.command(' '.join(arg if ' ' not in arg else repr(arg)
                                 for arg in rargv[1:]))
         if 'work' in rargs and rargs['build'] and not args['--no-check']:
             remote.check(self.out)
コード例 #2
0
ファイル: Caf.py プロジェクト: azag0/caf
 def finalize(self, sig, frame):
     print_timing()
     sys.exit()