diff options
-rwxr-xr-x | be | 7 | ||||
-rw-r--r-- | libbe/cmdutil.py | 8 |
2 files changed, 15 insertions, 0 deletions
@@ -37,6 +37,13 @@ parser.add_option("-d", "--dir", dest="dir", metavar="DIR", try: options,args = parser.parse_args() + for option,value in cmdutil.option_value_pairs(options, parser): + if value == "--complete": + if option == "dir": + if len(args) == 0: + args = ["."] + paths = cmdutil.complete_path(args[0]) + raise cmdutil.GetCompletions(paths) except cmdutil.GetHelp: print cmdutil.help(parser=parser) sys.exit(0) diff --git a/libbe/cmdutil.py b/libbe/cmdutil.py index a91b1c7..7589241 100644 --- a/libbe/cmdutil.py +++ b/libbe/cmdutil.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +import glob import optparse import os from textwrap import TextWrapper @@ -187,6 +188,13 @@ def default_complete(options, args, parser, bugid_args={}): raise GetCompletions(bugshortnames) raise GetCompletions() +def complete_path(path): + """List possible path completions for path.""" + comps = glob.glob(path+"*") + glob.glob(path+"/*") + if len(comps) == 1 and os.path.isdir(comps[0]): + comps.extend(glob.glob(comps[0]+"/*")) + return comps + def underlined(instring): """Produces a version of a string that is underlined with '=' |