mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
crit: gather and parse arguments in a proper way
This will allow us to easily extend commands that crit supports, avoiding "--help" confusion. Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
e3fec5f8eb
commit
0b08bcfcad
1 changed files with 32 additions and 26 deletions
58
crit
58
crit
|
|
@ -5,25 +5,6 @@ import json
|
|||
|
||||
import pycriu
|
||||
|
||||
def handle_cmdline_opts():
|
||||
desc = 'CRiu Image Tool'
|
||||
parser = argparse.ArgumentParser(description=desc, formatter_class=argparse.RawTextHelpFormatter)
|
||||
parser.add_argument('command',
|
||||
choices = ['decode', 'encode'],
|
||||
help = 'decode/encode - convert criu image from/to binary type to/from json')
|
||||
parser.add_argument('-i',
|
||||
'--in',
|
||||
help = 'input file (stdin by default)')
|
||||
parser.add_argument('-o',
|
||||
'--out',
|
||||
help = 'output file (stdout by default)')
|
||||
parser.add_argument('--pretty', help = 'Multiline with indents and some numerical fields in field-specific format',
|
||||
action = 'store_true')
|
||||
|
||||
opts = vars(parser.parse_args())
|
||||
|
||||
return opts
|
||||
|
||||
def inf(opts):
|
||||
if opts['in']:
|
||||
return open(opts['in'], 'r')
|
||||
|
|
@ -54,15 +35,40 @@ def encode(opts):
|
|||
pycriu.images.dump(img, outf(opts))
|
||||
|
||||
def main():
|
||||
#Handle cmdline options
|
||||
opts = handle_cmdline_opts()
|
||||
desc = 'CRiu Image Tool'
|
||||
parser = argparse.ArgumentParser(description=desc,
|
||||
formatter_class=argparse.RawTextHelpFormatter)
|
||||
|
||||
cmds = {
|
||||
'decode' : decode,
|
||||
'encode' : encode
|
||||
}
|
||||
subparsers = parser.add_subparsers(help='Use crit CMD --help for command-specific help')
|
||||
|
||||
cmds[opts['command']](opts)
|
||||
# Decode
|
||||
decode_parser = subparsers.add_parser('decode',
|
||||
help = 'convert criu image from binary type json')
|
||||
decode_parser.add_argument('--pretty',
|
||||
help = 'Multiline with indents and some numerical fields in field-specific format',
|
||||
action = 'store_true')
|
||||
decode_parser.add_argument('-i',
|
||||
'--in',
|
||||
help = 'criu image in binary format to be decoded (stdin by default)')
|
||||
decode_parser.add_argument('-o',
|
||||
'--out',
|
||||
help = 'where to put criu image in json format (stdout by default)')
|
||||
decode_parser.set_defaults(func=decode)
|
||||
|
||||
# Encode
|
||||
encode_parser = subparsers.add_parser('encode',
|
||||
help = 'convert criu image from json type to binary')
|
||||
encode_parser.add_argument('-i',
|
||||
'--in',
|
||||
help = 'criu image in json format to be encoded (stdin by default)')
|
||||
encode_parser.add_argument('-o',
|
||||
'--out',
|
||||
help = 'where to put criu image in binary format (stdout by default)')
|
||||
encode_parser.set_defaults(func=encode)
|
||||
|
||||
opts = vars(parser.parse_args())
|
||||
|
||||
opts["func"](opts)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue