-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgitInitor.nim
More file actions
98 lines (70 loc) · 2.94 KB
/
Copy pathgitInitor.nim
File metadata and controls
98 lines (70 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import times
import os
import terminal
import strformat
const MITLicenseTemplate = """
Copyright (c) {year} {username}
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
proc info(message: string) =
stdout.styledWriteLine(fgGreen, "[INFO] ", fgWhite, message)
proc warn(message: string) =
stdout.styledWriteLine(fgYellow, "[WARN] ", fgWhite, message)
proc error(message: string) =
stdout.styledWriteLine(fgRed, "[ERROR] ", fgWhite, message)
const messages = """
This is a quick personal git init automation tool.
There won't be boilerplate error checking code.
Use -k to also generate ssh pub key.
"""
const warning = "Warning: You are responsible for your input. Use at your own risk.\n"
when isMainModule:
stdout.styledWriteLine(fgYellow, messages)
stdout.styledWriteLine(fgRed, warning)
stdout.write("Enter your git username for repo: ")
let username = stdin.readLine()
stdout.write("Enter your git email for repo: ")
let email = stdin.readLine()
var commands = @[
"git init",
fmt"touch .gitignore",
fmt"git branch -M main",
fmt"git config --local user.name {username}",
fmt"git config --local user.email {email}"
]
for cmd in commands:
info(fmt"Running: {cmd}")
if execShellCmd(cmd) != 0:
error("Failed to execute command")
quit()
info("Creating empty READMD.md")
let readme = open("README.md", fmWrite)
close(readme)
let year = now().utc.year
let licenseContent = fmt(MITLicenseTemplate)
info("Creating LICENSE")
let license = open("LICENSE", fmWrite)
license.write(licenseContent)
close(license)
if paramCount() == 1 and paramStr(1) == "-k":
let sshFile = getHomeDir() / fmt".ssh/id_ed25519_github_{email}"
let cmdKeyGen = fmt"""ssh-keygen -t ed25519 -C "{email}" -f "{sshFile}" -N "" """
if execShellCmd(cmdKeyGen) != 0:
error("Failed to generate SSH key")
quit()
warn(fmt"SSH key saved at: {sshFile}. Added it to your Github. When you add remote repo, use the SSH version.")