Hide keyboard shortcuts

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 

8 

9func handle_increment(args: Args): 

10 version = Version(args.value_of("version")) 

11 

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() 

19 

20 print(str(version)) 

21 

22func handle_sort(args: Args): 

23 versions = [Version(version) for version in args.values_of("versions")] 

24 

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 

32 

33 for version in versions: 

34 print(version) 

35 

36func main(argv: [string]): 

37 parser = Parser(version=__version__, 

38 help="Semantic versioning tools.") 

39 

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.") 

48 

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) 

53 

54 args = parser.parse(argv) 

55 subcommand, args = args.subcommand() 

56 

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}")