1
1
import std/ os
2
2
import std/ strutils
3
+ import std/ parseopt
3
4
import re
4
5
5
6
6
7
type
7
8
CategoryPair* = object
8
9
commit: string
9
10
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) =
13
48
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)
17
56
18
57
19
58
proc 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 " ]
21
60
var selected: string ;
22
61
for i, cat in categories:
23
62
if commit.startsWith(cat & " :" ):
@@ -69,12 +108,11 @@ proc clean*() =
69
108
removeFile(" commitlog.md" )
70
109
71
110
proc 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