[Supervisor-checkins] r783 - supervisor/branches/tabcomplete/src/supervisor
Siddhant Goel
siddhantgoel at gmail.com
Fri Jul 25 06:28:56 EDT 2008
Author: Siddhant Goel <siddhantgoel at gmail.com>
Date: Fri Jul 25 06:28:55 2008
New Revision: 783
Log:
fixed third level completions
Modified:
supervisor/branches/tabcomplete/src/supervisor/supervisorctl.py
Modified: supervisor/branches/tabcomplete/src/supervisor/supervisorctl.py
==============================================================================
--- supervisor/branches/tabcomplete/src/supervisor/supervisorctl.py (original)
+++ supervisor/branches/tabcomplete/src/supervisor/supervisorctl.py Fri Jul 25 06:28:55 2008
@@ -162,6 +162,64 @@
return False
raise
return True
+
+ def completionmatches(self,text,line):
+ supervisor=self.get_supervisor()
+ li=supervisor.getAllProcessInfo()
+ groups=[]
+ programs=[]
+ groupwiseprograms={}
+ for i in li:
+ programs.append(i['name'])
+ if i['group'] not in groups:
+ groups.append(i['group'])
+ groupwiseprograms[i['group']]=[]
+ groupwiseprograms[i['group']].append(i['name'])
+ total=[]
+ for i in groups:
+ if i in programs:
+ total.append(i+' ')
+ else:
+ for n in groupwiseprograms[i]:
+ total.append(i+':'+n+' ')
+ if len(line.split()) == 1:
+ return total
+ else:
+ current=line.split()[-1]
+ if line.endswith(' ') and len(line.split()) > 1:
+ results=[i for i in total if i.startswith(text)]
+ return results
+ if ':' in current:
+ g=current.split(':')[0]
+ results = [i+' ' for i in groupwiseprograms[g] if i.startswith(text)]
+ return results
+ results = [i for i in total if i.startswith(text)]
+ return results
+
+ def complete(self,text,state):
+ try:
+ import readline
+ except ImportError:
+ return None
+ line=readline.get_line_buffer()
+ if line == '':
+ results = [i+' ' for i in self.vocab if i.startswith(text)]+[None]
+ return results[state]
+ else:
+ exp=line.split()[0]
+ if exp in ['start','stop','restart','clear','status','tail']:
+ results=self.completionmatches(text,line)+[None]
+ return results[state]
+ elif exp in ['maintail','pid','reload','shutdown','exit','open','quit','version','EOF']:
+ return None
+ elif exp == 'help':
+ if line.endswith(' ') and len(line.split()) > 1:
+ return None
+ results=[i+' ' for i in self.vocab if i.startswith(text)]+[None]
+ return results[state]
+ else:
+ results=[i+' ' for i in self.vocab if i.startswith(text)]+[None]
+ return results[state]
def do_help(self, arg):
for plugin in self.options.plugins:
@@ -177,63 +235,6 @@
def help_EOF(self):
self.output("To quit, type ^D or use the quit command")
-
- def completionmatches(self,text,line):
- s=getattr(self.options.getServerProxy(),'supervisor')
- li=s.getAllProcessInfo()
- groups=[]
- programs=[]
- groupwiseprograms={}
- for i in li:
- programs.append(i['name'])
- if i['group'] not in groups:
- groups.append(i['group'])
- groupwiseprograms[i['group']]=[]
- groupwiseprograms[i['group']].append(i['name'])
- total=programs+groups
- text=text.lstrip()
- text_alt=line.split()[-1]
- if ':' in text_alt:
- results=groupwiseprograms[text_alt.split(':')[0]]
- i=0
- while i < len(results):
- if results[i] in programs:
- results[i]=results[i]+' '
- i=i+1
- return [i for i in results if i.startswith(text_alt.split(':')[-1])]
- elif ':' not in text_alt or text_alt=='':
- results=[i for i in total if i.startswith(text)]
- i=0
- while i < len(results):
- if (results[i] in groups) and (results[i] in programs):
- # process could be started just by its name
- # and no group:program nomenclature is needed
- i+=1
- continue
- if results[i] in groups:
- results[i]=results[i]+':'
- if results[i] in programs:
- results[i]=results[i]+' '
- i=i+1
- return results
-
- def complete(self,text,state):
- import readline
- current=readline.get_line_buffer()
- if current.lstrip()=='':
- results=[i+' ' for i in self.vocab if i.startswith(text)]+[None]
- return results[state]
- else:
- exp=current.strip().split()[0]
- if exp in ['start','stop','restart','clear','status','tail']:
- results=self.completionmatches(text,current)+[None]
- return results[state]
- elif exp in ['maintail','pid','reload','shutdown','exit','open','quit','version','EOF']:
- return None
- else:
- results=[i+' ' for i in self.vocab if i.startswith(text)]+[None]
- return results[state]
-
def get_names(inst):
names = []
More information about the Supervisor-checkins
mailing list