summaryrefslogtreecommitdiff
path: root/sys/lib/python/mercurial/fancyopts.py
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
committerOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
commita73a964e51247ed169d322c725a3a18859f109a3 (patch)
tree3f752d117274d444bda44e85609aeac1acf313f3 /sys/lib/python/mercurial/fancyopts.py
parente64efe273fcb921a61bf27d33b230c4e64fcd425 (diff)
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/lib/python/mercurial/fancyopts.py')
-rw-r--r--sys/lib/python/mercurial/fancyopts.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/sys/lib/python/mercurial/fancyopts.py b/sys/lib/python/mercurial/fancyopts.py
deleted file mode 100644
index 5acf0143d..000000000
--- a/sys/lib/python/mercurial/fancyopts.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# fancyopts.py - better command line parsing
-#
-# Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
-#
-# This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
-
-import getopt
-
-def gnugetopt(args, options, longoptions):
- """Parse options mostly like getopt.gnu_getopt.
-
- This is different from getopt.gnu_getopt in that an argument of - will
- become an argument of - instead of vanishing completely.
- """
- extraargs = []
- if '--' in args:
- stopindex = args.index('--')
- extraargs = args[stopindex+1:]
- args = args[:stopindex]
- opts, parseargs = getopt.getopt(args, options, longoptions)
- args = []
- while parseargs:
- arg = parseargs.pop(0)
- if arg and arg[0] == '-' and len(arg) > 1:
- parseargs.insert(0, arg)
- topts, newparseargs = getopt.getopt(parseargs, options, longoptions)
- opts = opts + topts
- parseargs = newparseargs
- else:
- args.append(arg)
- args.extend(extraargs)
- return opts, args
-
-
-def fancyopts(args, options, state, gnu=False):
- """
- read args, parse options, and store options in state
-
- each option is a tuple of:
-
- short option or ''
- long option
- default value
- description
-
- option types include:
-
- boolean or none - option sets variable in state to true
- string - parameter string is stored in state
- list - parameter string is added to a list
- integer - parameter strings is stored as int
- function - call function with parameter
-
- non-option args are returned
- """
- namelist = []
- shortlist = ''
- argmap = {}
- defmap = {}
-
- for short, name, default, comment in options:
- # convert opts to getopt format
- oname = name
- name = name.replace('-', '_')
-
- argmap['-' + short] = argmap['--' + oname] = name
- defmap[name] = default
-
- # copy defaults to state
- if isinstance(default, list):
- state[name] = default[:]
- elif hasattr(default, '__call__'):
- state[name] = None
- else:
- state[name] = default
-
- # does it take a parameter?
- if not (default is None or default is True or default is False):
- if short: short += ':'
- if oname: oname += '='
- if short:
- shortlist += short
- if name:
- namelist.append(oname)
-
- # parse arguments
- if gnu:
- parse = gnugetopt
- else:
- parse = getopt.getopt
- opts, args = parse(args, shortlist, namelist)
-
- # transfer result to state
- for opt, val in opts:
- name = argmap[opt]
- t = type(defmap[name])
- if t is type(fancyopts):
- state[name] = defmap[name](val)
- elif t is type(1):
- state[name] = int(val)
- elif t is type(''):
- state[name] = val
- elif t is type([]):
- state[name].append(val)
- elif t is type(None) or t is type(False):
- state[name] = True
-
- # return unparsed args
- return args