@@ -930,6 +930,7 @@ def _cmpkey(
930930
931931 return epoch , _release , _pre , _post , _dev , _local
932932
933+
933934if __name__ == "__main__" :
934935 import argparse
935936 import operator
@@ -949,18 +950,24 @@ def _cmpkey(
949950 ">" : operator .gt ,
950951 }
951952
952- # Argument parsing
953- parser = argparse .ArgumentParser (description = "Compare two semantic versions. Return code is 0 or 1." )
954- parser .add_argument ("version1" , type = Version , help = "First version to compare" )
955- parser .add_argument (
953+ parser = argparse .ArgumentParser (description = "Version utilities" )
954+ subparsers = parser .add_subparsers (dest = "command" , required = True )
955+
956+ compare = subparsers .add_parser (
957+ "compare" ,
958+ help = "Compare two semantic versions." ,
959+ description = "Compare two semantic versions. Return code is 0 or 1." ,
960+ )
961+ compare .add_argument ("version1" , type = Version , help = "First version to compare" )
962+ compare .add_argument (
956963 "operator" ,
957- type = str ,
958964 choices = operations .keys (),
959965 help = "Comparison operator" ,
960966 )
961- parser .add_argument ("version2" , type = Version , help = "Second version to compare" )
962- args = parser .parse_args ()
967+ compare .add_argument ("version2" , type = Version , help = "Second version to compare" )
963968
964- result = operations [args .operator ](args .version1 , args .version2 )
965- raise SystemExit (not result )
969+ args = parser .parse_args ()
966970
971+ if args .command == "compare" :
972+ result = operations [args .operator ](args .version1 , args .version2 )
973+ raise SystemExit (not result )
0 commit comments