Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from ansicolors import BOLD
2from ansicolors import RED
3from ansicolors import RESET
4from argparse import Args
5from argparse import Parser
6from . import SemVerError
7from . import Version
9func handle_increment(args: Args):
10 version = Version(args.value_of("version"))
12 match args.value_of("field"):
13 case "major":
14 version.increment_major()
15 case "minor":
16 version.increment_minor()
17 case "patch":
18 version.increment_patch()
20 print(str(version))
22func handle_sort(args: Args):
23 versions = [Version(version) for version in args.values_of("versions")]
25 # ToDo: Just call versions.sort()
26 for i in range(versions.length()):
27 for j in range(i + 1, versions.length()):
28 if versions[j] < versions[i]:
29 version = versions[i]
30 versions[i] = versions[j]
31 versions[j] = version
33 for version in versions:
34 print(version)
36func main(argv: [string]):
37 parser = Parser(version=__version__,
38 help="Semantic versioning tools.")
40 increment_parser = parser.add_subcommand(
41 "increment",
42 help="Increment major, minor or patch.")
43 increment_parser.add_positional(
44 "field",
45 choices=["major", "minor", "patch"],
46 help="Field to increment (major, minor or patch).")
47 increment_parser.add_positional("version", help="Current version.")
49 sort_parser = parser.add_subcommand(
50 "sort",
51 help="Sort versions from oldest to newest.")
52 sort_parser.add_positional("versions", multiple_occurrences=True)
54 args = parser.parse(argv)
55 subcommand, args = args.subcommand()
57 try:
58 match subcommand:
59 case "increment":
60 handle_increment(args)
61 case "sort":
62 handle_sort(args)
63 except SemVerError as error:
64 raise SystemExitError(f"{RED}{BOLD}error{RESET}: {error.message}")