11import std/ os
22import std/ strutils
3+ import std/ parseopt
34import re
45
56
67type
78 CategoryPair * = object
89 commit: string
910 category: string
10-
11-
12- proc createInitialCommits * () =
11+ Flags * = object
12+ startCommit: string
13+ endCommit: string
14+
15+
16+ proc readParams ():Flags =
17+ var flags = Flags (
18+ startCommit:" " ,
19+ endCommit:" "
20+ )
21+ var resString = " "
22+
23+ for param in commandLineParams ():
24+ resString = resString & " " & param
25+
26+ var parser = initOptParser (resString)
27+
28+ while true :
29+ parser.next ()
30+ case parser.kind
31+ of cmdEnd: break
32+ of cmdShortOption, cmdLongOption:
33+ if parser.val == " " :
34+ echo " hello"
35+ else :
36+ case parser.key
37+ of " s" ," start" :
38+ flags.startCommit = parser.val
39+ of " e" ," end" :
40+ flags.endCommit = parser.val
41+
42+ of cmdArgument:
43+ echo " Argument: " , parser.key
44+
45+ return flags
46+
47+ proc createInitialCommits * (flags:Flags ) =
1348 when defined (posix):
14- # TODO :
15- # handle params where you get the start and end commit
16- discard execShellCmd (" git log --pretty=oneline > commitlog.md" )
49+ var cmd = " git log"
50+ if flags.startCommit != " " :
51+ cmd = cmd & " " & flags.startCommit
52+ if flags.endCommit != " " :
53+ cmd = cmd & " " & flags.endCommit
54+ cmd = cmd & " --pretty=oneline > commitlog.md"
55+ discard execShellCmd (cmd)
1756
1857
1958proc categorise * (commit: string ): string =
20- const categories = [" ci" , " feat" , " fix" , " others " ]
59+ const categories = [" build " , " chore " , " ci" ," docs " , " feat" ," fix" ," perf " , " refactor " , " revert " , " style " , " test " ]
2160 var selected: string ;
2261 for i, cat in categories:
2362 if commit.startsWith (cat & " :" ):
@@ -69,12 +108,11 @@ proc clean*() =
69108 removeFile (" commitlog.md" )
70109
71110proc clog * () =
72- createInitialCommits ()
73- var categorizedCommits = processInitialCommits ();
74- printCategorized (categorizedCommits)
75- clean ()
76-
77-
78-
79-
80-
111+ when declared (commandLineParams):
112+ var flags = readParams ()
113+ createInitialCommits (flags)
114+ var categorizedCommits = processInitialCommits ();
115+ printCategorized (categorizedCommits)
116+ clean ()
117+ else :
118+ echo " Failed to execute program..."
0 commit comments