Commit 0b08bcfc authored by Ruslan Kuprieiev's avatar Ruslan Kuprieiev Committed by Pavel Emelyanov

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: 's avatarRuslan Kuprieiev <kupruser@gmail.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent e3fec5f8
...@@ -5,25 +5,6 @@ import json ...@@ -5,25 +5,6 @@ import json
import pycriu 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): def inf(opts):
if opts['in']: if opts['in']:
return open(opts['in'], 'r') return open(opts['in'], 'r')
...@@ -54,15 +35,40 @@ def encode(opts): ...@@ -54,15 +35,40 @@ def encode(opts):
pycriu.images.dump(img, outf(opts)) pycriu.images.dump(img, outf(opts))
def main(): def main():
#Handle cmdline options desc = 'CRiu Image Tool'
opts = handle_cmdline_opts() parser = argparse.ArgumentParser(description=desc,
formatter_class=argparse.RawTextHelpFormatter)
cmds = { subparsers = parser.add_subparsers(help='Use crit CMD --help for command-specific help')
'decode' : decode,
'encode' : encode # 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())
cmds[opts['command']](opts) opts["func"](opts)
if __name__ == '__main__': if __name__ == '__main__':
main() main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment