#!/usr/bin/python2 import argparse,sys,os,subprocess class TildeContrib(object): def __init__(self,progdir): self.progdir=progdir pass def __getattr__(self,k): if k in ("list"): return object.__getattr__(self,k) return lambda x: os.system("/tilde/bin/{} {}".format(k," ".join(x))) def list(self, x, inc=True): cs = filter(None,subprocess.check_output(['/tilde/special/list']).split("\n")) f = " ".join(x) if len(x)>0 else "" ret = [] for c in cs: if f in c: ret.append(c) if inc: ret.extend(["list"]) return ret class TildeLauncher: COMMANDS = ["help","contrib"] USAGE = dict(help="\n Displays this menu",contrib=" \n Your gateway to programs made by teammates,\n for teammates!") def __init__(self,prog_dir): self.progdir = prog_dir self.tc = TildeContrib(prog_dir) def base(self): print """ Welcome to tilde.team :) this program is your gateway to team-specific commands and features. Run tilde help to see the sort of things you can do.""" def help(self,argv): commands_to_display = [] if len(argv)==0: commands_to_display = self.COMMANDS else: commands_to_display = [i for i in argv if i in self.COMMANDS] for cmd in commands_to_display: print "tilde {}{}".format(cmd,self.USAGE[cmd]) def contrib(self,argv): if not argv: argv = ["list"] # default to listing if argv[0]=="list": print "Commands:" for c in self.tc.list(argv[1:]): print " tilde contrib "+c # elif argv[0]=="bootstrap": # for c in self.tc.list([],False): # print("alias {0}=\"tilde contrib {0}\"".format(c)) else: getattr(self.tc,argv[0])(argv[1:]) # def chat(self,argv): # os.system("/tilde/special/chat") if __name__=="__main__": tl = TildeLauncher("/tilde/bin") argv = sys.argv[1:] if len(argv)==0: tl.base() else: if not hasattr(tl,argv[0]): print " Unknown command %s!" tl.help([]) getattr(tl,argv[0])(argv[1:])