@fredlackey/devutils 0.0.18 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/README.md +214 -141
  2. package/package.json +8 -83
  3. package/src/api/loader.js +229 -0
  4. package/src/api/registry.json +62 -0
  5. package/src/cli.js +293 -60
  6. package/src/commands/ai/index.js +16 -0
  7. package/src/commands/ai/launch.js +112 -0
  8. package/src/commands/ai/list.js +54 -0
  9. package/src/commands/ai/resume.js +70 -0
  10. package/src/commands/ai/sessions.js +121 -0
  11. package/src/commands/ai/set.js +131 -0
  12. package/src/commands/ai/show.js +74 -0
  13. package/src/commands/ai/tools.js +46 -0
  14. package/src/commands/alias/add.js +93 -0
  15. package/src/commands/alias/helpers.js +107 -0
  16. package/src/commands/alias/index.js +14 -0
  17. package/src/commands/alias/list.js +55 -0
  18. package/src/commands/alias/remove.js +62 -0
  19. package/src/commands/alias/sync.js +109 -0
  20. package/src/commands/api/disable.js +73 -0
  21. package/src/commands/api/enable.js +148 -0
  22. package/src/commands/api/index.js +15 -0
  23. package/src/commands/api/list.js +66 -0
  24. package/src/commands/api/update.js +87 -0
  25. package/src/commands/auth/index.js +15 -0
  26. package/src/commands/auth/list.js +49 -0
  27. package/src/commands/auth/login.js +384 -0
  28. package/src/commands/auth/logout.js +111 -0
  29. package/src/commands/auth/refresh.js +184 -0
  30. package/src/commands/auth/services.js +169 -0
  31. package/src/commands/auth/status.js +104 -0
  32. package/src/commands/config/export.js +224 -0
  33. package/src/commands/config/get.js +52 -0
  34. package/src/commands/config/import.js +308 -0
  35. package/src/commands/config/index.js +17 -0
  36. package/src/commands/config/init.js +143 -0
  37. package/src/commands/config/reset.js +57 -0
  38. package/src/commands/config/set.js +93 -0
  39. package/src/commands/config/show.js +35 -0
  40. package/src/commands/help.js +338 -0
  41. package/src/commands/identity/add.js +133 -0
  42. package/src/commands/identity/index.js +17 -0
  43. package/src/commands/identity/link.js +76 -0
  44. package/src/commands/identity/list.js +48 -0
  45. package/src/commands/identity/remove.js +72 -0
  46. package/src/commands/identity/show.js +65 -0
  47. package/src/commands/identity/sync.js +172 -0
  48. package/src/commands/identity/unlink.js +57 -0
  49. package/src/commands/ignore/add.js +165 -0
  50. package/src/commands/ignore/index.js +14 -0
  51. package/src/commands/ignore/list.js +89 -0
  52. package/src/commands/ignore/markers.js +43 -0
  53. package/src/commands/ignore/remove.js +164 -0
  54. package/src/commands/ignore/show.js +169 -0
  55. package/src/commands/machine/detect.js +122 -0
  56. package/src/commands/machine/index.js +14 -0
  57. package/src/commands/machine/list.js +74 -0
  58. package/src/commands/machine/set.js +106 -0
  59. package/src/commands/machine/show.js +35 -0
  60. package/src/commands/schema.js +152 -0
  61. package/src/commands/search/collections.js +134 -0
  62. package/src/commands/search/get.js +71 -0
  63. package/src/commands/search/index-cmd.js +54 -0
  64. package/src/commands/search/index.js +21 -0
  65. package/src/commands/search/keyword.js +60 -0
  66. package/src/commands/search/qmd.js +70 -0
  67. package/src/commands/search/query.js +64 -0
  68. package/src/commands/search/semantic.js +62 -0
  69. package/src/commands/search/status.js +46 -0
  70. package/src/commands/status.js +224 -171
  71. package/src/commands/tools/check.js +79 -0
  72. package/src/commands/tools/index.js +14 -0
  73. package/src/commands/tools/install.js +110 -0
  74. package/src/commands/tools/list.js +91 -0
  75. package/src/commands/tools/search.js +60 -0
  76. package/src/commands/update.js +83 -112
  77. package/src/commands/util/add.js +151 -0
  78. package/src/commands/util/index.js +15 -0
  79. package/src/commands/util/list.js +97 -0
  80. package/src/commands/util/remove.js +76 -0
  81. package/src/commands/util/run.js +79 -0
  82. package/src/commands/util/show.js +67 -0
  83. package/src/commands/version.js +21 -88
  84. package/src/installers/_template.js +104 -0
  85. package/src/installers/git.js +150 -0
  86. package/src/installers/homebrew.js +190 -0
  87. package/src/installers/node.js +223 -0
  88. package/src/installers/registry.json +29 -0
  89. package/src/lib/config.js +125 -0
  90. package/src/lib/detect.js +74 -0
  91. package/src/lib/errors.js +114 -0
  92. package/src/lib/github.js +315 -0
  93. package/src/lib/installer.js +225 -0
  94. package/src/lib/output.js +239 -0
  95. package/src/lib/platform.js +112 -0
  96. package/src/lib/platforms/amazon-linux.js +41 -0
  97. package/src/lib/platforms/gitbash.js +46 -0
  98. package/src/lib/platforms/macos.js +45 -0
  99. package/src/lib/platforms/raspbian.js +41 -0
  100. package/src/lib/platforms/ubuntu.js +39 -0
  101. package/src/lib/platforms/windows.js +45 -0
  102. package/src/lib/prompt.js +161 -0
  103. package/src/lib/schema.js +211 -0
  104. package/src/lib/shell.js +75 -0
  105. package/src/patterns/gitignore/claude-code.txt +25 -0
  106. package/src/patterns/gitignore/docker.txt +15 -0
  107. package/src/patterns/gitignore/go.txt +24 -0
  108. package/src/patterns/gitignore/java.txt +38 -0
  109. package/src/patterns/gitignore/jetbrains.txt +26 -0
  110. package/src/patterns/gitignore/linux.txt +18 -0
  111. package/src/patterns/gitignore/macos.txt +27 -0
  112. package/src/patterns/gitignore/node.txt +51 -0
  113. package/src/patterns/gitignore/python.txt +55 -0
  114. package/src/patterns/gitignore/rust.txt +14 -0
  115. package/src/patterns/gitignore/terraform.txt +30 -0
  116. package/src/patterns/gitignore/vscode.txt +15 -0
  117. package/src/patterns/gitignore/windows.txt +25 -0
  118. package/src/utils/clone/index.js +165 -0
  119. package/src/utils/git-push/index.js +230 -0
  120. package/src/utils/git-status/index.js +116 -0
  121. package/src/utils/git-status/unix.sh +75 -0
  122. package/src/utils/registry.json +41 -0
  123. package/bin/dev.js +0 -16
  124. package/files/README.md +0 -0
  125. package/files/claude/.claude/commands/setup-context.md +0 -3
  126. package/files/monorepos/_archive/README.md +0 -36
  127. package/files/monorepos/_legacy/README.md +0 -36
  128. package/files/monorepos/ai-docs/README.md +0 -33
  129. package/files/monorepos/apps/README.md +0 -24
  130. package/files/monorepos/docs/README.md +0 -40
  131. package/files/monorepos/packages/README.md +0 -25
  132. package/files/monorepos/research/README.md +0 -29
  133. package/files/monorepos/scripts/README.md +0 -24
  134. package/src/commands/README.md +0 -41
  135. package/src/commands/configure.js +0 -199
  136. package/src/commands/identity.js +0 -1630
  137. package/src/commands/ignore.js +0 -247
  138. package/src/commands/install.js +0 -526
  139. package/src/commands/setup.js +0 -246
  140. package/src/completion.js +0 -284
  141. package/src/constants.js +0 -45
  142. package/src/ignore/claude-code.txt +0 -10
  143. package/src/ignore/docker.txt +0 -18
  144. package/src/ignore/linux.txt +0 -23
  145. package/src/ignore/macos.txt +0 -36
  146. package/src/ignore/node.txt +0 -55
  147. package/src/ignore/terraform.txt +0 -37
  148. package/src/ignore/vscode.txt +0 -18
  149. package/src/ignore/windows.txt +0 -35
  150. package/src/index.js +0 -0
  151. package/src/installs/README.md +0 -399
  152. package/src/installs/adobe-creative-cloud.js +0 -546
  153. package/src/installs/adobe-creative-cloud.md +0 -605
  154. package/src/installs/appcleaner.js +0 -321
  155. package/src/installs/appcleaner.md +0 -699
  156. package/src/installs/apt-transport-https.js +0 -390
  157. package/src/installs/apt-transport-https.md +0 -678
  158. package/src/installs/atomicparsley.js +0 -642
  159. package/src/installs/atomicparsley.md +0 -795
  160. package/src/installs/aws-cli.js +0 -797
  161. package/src/installs/aws-cli.md +0 -727
  162. package/src/installs/balena-etcher.js +0 -710
  163. package/src/installs/balena-etcher.md +0 -761
  164. package/src/installs/bambu-studio.js +0 -1143
  165. package/src/installs/bambu-studio.md +0 -780
  166. package/src/installs/bash-completion.js +0 -575
  167. package/src/installs/bash-completion.md +0 -833
  168. package/src/installs/bash.js +0 -417
  169. package/src/installs/bash.md +0 -993
  170. package/src/installs/beyond-compare.js +0 -603
  171. package/src/installs/beyond-compare.md +0 -813
  172. package/src/installs/brave-browser.js +0 -968
  173. package/src/installs/brave-browser.md +0 -650
  174. package/src/installs/build-essential.js +0 -529
  175. package/src/installs/build-essential.md +0 -977
  176. package/src/installs/ca-certificates.js +0 -618
  177. package/src/installs/ca-certificates.md +0 -937
  178. package/src/installs/caffeine.js +0 -508
  179. package/src/installs/caffeine.md +0 -839
  180. package/src/installs/camtasia.js +0 -596
  181. package/src/installs/camtasia.md +0 -762
  182. package/src/installs/chatgpt.js +0 -476
  183. package/src/installs/chatgpt.md +0 -814
  184. package/src/installs/chocolatey.js +0 -456
  185. package/src/installs/chocolatey.md +0 -661
  186. package/src/installs/chrome-canary.js +0 -419
  187. package/src/installs/chrome-canary.md +0 -641
  188. package/src/installs/chromium.js +0 -667
  189. package/src/installs/chromium.md +0 -838
  190. package/src/installs/claude-code.js +0 -576
  191. package/src/installs/claude-code.md +0 -1173
  192. package/src/installs/cloudflare-warp.js +0 -900
  193. package/src/installs/cloudflare-warp.md +0 -1047
  194. package/src/installs/comet-browser.js +0 -588
  195. package/src/installs/comet-browser.md +0 -731
  196. package/src/installs/curl.js +0 -379
  197. package/src/installs/curl.md +0 -714
  198. package/src/installs/cursor.js +0 -579
  199. package/src/installs/cursor.md +0 -970
  200. package/src/installs/dbeaver.js +0 -924
  201. package/src/installs/dbeaver.md +0 -939
  202. package/src/installs/dbschema.js +0 -692
  203. package/src/installs/dbschema.md +0 -925
  204. package/src/installs/dependencies.md +0 -453
  205. package/src/installs/development-tools.js +0 -600
  206. package/src/installs/development-tools.md +0 -977
  207. package/src/installs/docker.js +0 -1029
  208. package/src/installs/docker.md +0 -1109
  209. package/src/installs/drawio.js +0 -1019
  210. package/src/installs/drawio.md +0 -795
  211. package/src/installs/elmedia-player.js +0 -347
  212. package/src/installs/elmedia-player.md +0 -556
  213. package/src/installs/ffmpeg.js +0 -889
  214. package/src/installs/ffmpeg.md +0 -852
  215. package/src/installs/file.js +0 -464
  216. package/src/installs/file.md +0 -987
  217. package/src/installs/gemini-cli.js +0 -811
  218. package/src/installs/gemini-cli.md +0 -1153
  219. package/src/installs/git.js +0 -400
  220. package/src/installs/git.md +0 -907
  221. package/src/installs/gitego.js +0 -949
  222. package/src/installs/gitego.md +0 -1172
  223. package/src/installs/go.js +0 -931
  224. package/src/installs/go.md +0 -958
  225. package/src/installs/google-antigravity.js +0 -913
  226. package/src/installs/google-antigravity.md +0 -1075
  227. package/src/installs/google-chrome.js +0 -833
  228. package/src/installs/google-chrome.md +0 -862
  229. package/src/installs/gpg.js +0 -480
  230. package/src/installs/gpg.md +0 -1056
  231. package/src/installs/homebrew.js +0 -1028
  232. package/src/installs/homebrew.md +0 -988
  233. package/src/installs/imageoptim.js +0 -968
  234. package/src/installs/imageoptim.md +0 -1119
  235. package/src/installs/installers.json +0 -4032
  236. package/src/installs/installers.json.tmp +0 -3953
  237. package/src/installs/jq.js +0 -400
  238. package/src/installs/jq.md +0 -809
  239. package/src/installs/keyboard-maestro.js +0 -719
  240. package/src/installs/keyboard-maestro.md +0 -825
  241. package/src/installs/kiro.js +0 -864
  242. package/src/installs/kiro.md +0 -1015
  243. package/src/installs/latex.js +0 -789
  244. package/src/installs/latex.md +0 -1095
  245. package/src/installs/lftp.js +0 -356
  246. package/src/installs/lftp.md +0 -907
  247. package/src/installs/lsb-release.js +0 -346
  248. package/src/installs/lsb-release.md +0 -814
  249. package/src/installs/messenger.js +0 -847
  250. package/src/installs/messenger.md +0 -900
  251. package/src/installs/microsoft-office.js +0 -568
  252. package/src/installs/microsoft-office.md +0 -760
  253. package/src/installs/microsoft-teams.js +0 -801
  254. package/src/installs/microsoft-teams.md +0 -886
  255. package/src/installs/moom.js +0 -326
  256. package/src/installs/moom.md +0 -570
  257. package/src/installs/node.js +0 -904
  258. package/src/installs/node.md +0 -1153
  259. package/src/installs/nordpass.js +0 -716
  260. package/src/installs/nordpass.md +0 -921
  261. package/src/installs/nordvpn.js +0 -892
  262. package/src/installs/nordvpn.md +0 -1052
  263. package/src/installs/nvm.js +0 -995
  264. package/src/installs/nvm.md +0 -1057
  265. package/src/installs/ohmyzsh.js +0 -529
  266. package/src/installs/ohmyzsh.md +0 -1094
  267. package/src/installs/openssh.js +0 -804
  268. package/src/installs/openssh.md +0 -1056
  269. package/src/installs/pandoc.js +0 -662
  270. package/src/installs/pandoc.md +0 -1036
  271. package/src/installs/parallels-desktop.js +0 -431
  272. package/src/installs/parallels-desktop.md +0 -446
  273. package/src/installs/pinentry.js +0 -510
  274. package/src/installs/pinentry.md +0 -1142
  275. package/src/installs/pngyu.js +0 -869
  276. package/src/installs/pngyu.md +0 -896
  277. package/src/installs/postman.js +0 -799
  278. package/src/installs/postman.md +0 -940
  279. package/src/installs/procps.js +0 -425
  280. package/src/installs/procps.md +0 -851
  281. package/src/installs/safari-tech-preview.js +0 -374
  282. package/src/installs/safari-tech-preview.md +0 -533
  283. package/src/installs/sfnt2woff.js +0 -658
  284. package/src/installs/sfnt2woff.md +0 -795
  285. package/src/installs/shellcheck.js +0 -481
  286. package/src/installs/shellcheck.md +0 -1005
  287. package/src/installs/slack.js +0 -741
  288. package/src/installs/slack.md +0 -865
  289. package/src/installs/snagit.js +0 -585
  290. package/src/installs/snagit.md +0 -844
  291. package/src/installs/software-properties-common.js +0 -372
  292. package/src/installs/software-properties-common.md +0 -805
  293. package/src/installs/spotify.js +0 -877
  294. package/src/installs/spotify.md +0 -901
  295. package/src/installs/studio-3t.js +0 -823
  296. package/src/installs/studio-3t.md +0 -918
  297. package/src/installs/sublime-text.js +0 -804
  298. package/src/installs/sublime-text.md +0 -914
  299. package/src/installs/superwhisper.js +0 -706
  300. package/src/installs/superwhisper.md +0 -630
  301. package/src/installs/tailscale.js +0 -745
  302. package/src/installs/tailscale.md +0 -1100
  303. package/src/installs/tar.js +0 -389
  304. package/src/installs/tar.md +0 -946
  305. package/src/installs/termius.js +0 -798
  306. package/src/installs/termius.md +0 -844
  307. package/src/installs/terraform.js +0 -779
  308. package/src/installs/terraform.md +0 -899
  309. package/src/installs/tfenv.js +0 -778
  310. package/src/installs/tfenv.md +0 -1091
  311. package/src/installs/tidal.js +0 -771
  312. package/src/installs/tidal.md +0 -864
  313. package/src/installs/tmux.js +0 -346
  314. package/src/installs/tmux.md +0 -1030
  315. package/src/installs/tree.js +0 -411
  316. package/src/installs/tree.md +0 -833
  317. package/src/installs/unzip.js +0 -460
  318. package/src/installs/unzip.md +0 -879
  319. package/src/installs/vim.js +0 -421
  320. package/src/installs/vim.md +0 -1040
  321. package/src/installs/vlc.js +0 -821
  322. package/src/installs/vlc.md +0 -927
  323. package/src/installs/vscode.js +0 -843
  324. package/src/installs/vscode.md +0 -1002
  325. package/src/installs/wget.js +0 -420
  326. package/src/installs/wget.md +0 -791
  327. package/src/installs/whatsapp.js +0 -729
  328. package/src/installs/whatsapp.md +0 -854
  329. package/src/installs/winpty.js +0 -352
  330. package/src/installs/winpty.md +0 -620
  331. package/src/installs/woff2.js +0 -553
  332. package/src/installs/woff2.md +0 -977
  333. package/src/installs/wsl.js +0 -572
  334. package/src/installs/wsl.md +0 -699
  335. package/src/installs/xcode-clt.js +0 -520
  336. package/src/installs/xcode-clt.md +0 -351
  337. package/src/installs/xcode.js +0 -560
  338. package/src/installs/xcode.md +0 -573
  339. package/src/installs/yarn.js +0 -824
  340. package/src/installs/yarn.md +0 -1074
  341. package/src/installs/yq.js +0 -654
  342. package/src/installs/yq.md +0 -944
  343. package/src/installs/yt-dlp.js +0 -701
  344. package/src/installs/yt-dlp.md +0 -946
  345. package/src/installs/yum-utils.js +0 -297
  346. package/src/installs/yum-utils.md +0 -648
  347. package/src/installs/zoom.js +0 -759
  348. package/src/installs/zoom.md +0 -884
  349. package/src/installs/zsh.js +0 -455
  350. package/src/installs/zsh.md +0 -1008
  351. package/src/scripts/README.md +0 -617
  352. package/src/scripts/STATUS.md +0 -208
  353. package/src/scripts/afk.js +0 -411
  354. package/src/scripts/backup-all.js +0 -746
  355. package/src/scripts/backup-source.js +0 -727
  356. package/src/scripts/brewd.js +0 -389
  357. package/src/scripts/brewi.js +0 -520
  358. package/src/scripts/brewr.js +0 -527
  359. package/src/scripts/brews.js +0 -477
  360. package/src/scripts/brewu.js +0 -504
  361. package/src/scripts/c.js +0 -201
  362. package/src/scripts/ccurl.js +0 -341
  363. package/src/scripts/certbot-crontab-init.js +0 -504
  364. package/src/scripts/certbot-init.js +0 -657
  365. package/src/scripts/ch.js +0 -355
  366. package/src/scripts/claude-danger.js +0 -268
  367. package/src/scripts/clean-dev.js +0 -435
  368. package/src/scripts/clear-dns-cache.js +0 -541
  369. package/src/scripts/clone.js +0 -435
  370. package/src/scripts/code-all.js +0 -437
  371. package/src/scripts/count-files.js +0 -211
  372. package/src/scripts/count-folders.js +0 -211
  373. package/src/scripts/count.js +0 -264
  374. package/src/scripts/d.js +0 -219
  375. package/src/scripts/datauri.js +0 -389
  376. package/src/scripts/delete-files.js +0 -380
  377. package/src/scripts/docker-clean.js +0 -426
  378. package/src/scripts/dp.js +0 -442
  379. package/src/scripts/e.js +0 -390
  380. package/src/scripts/empty-trash.js +0 -513
  381. package/src/scripts/evm.js +0 -444
  382. package/src/scripts/fetch-github-repos.js +0 -456
  383. package/src/scripts/get-channel.js +0 -345
  384. package/src/scripts/get-course.js +0 -399
  385. package/src/scripts/get-dependencies.js +0 -306
  386. package/src/scripts/get-folder.js +0 -799
  387. package/src/scripts/get-tunes.js +0 -426
  388. package/src/scripts/get-video.js +0 -367
  389. package/src/scripts/git-backup.js +0 -577
  390. package/src/scripts/git-clone.js +0 -493
  391. package/src/scripts/git-pup.js +0 -319
  392. package/src/scripts/git-push.js +0 -396
  393. package/src/scripts/h.js +0 -622
  394. package/src/scripts/hide-desktop-icons.js +0 -499
  395. package/src/scripts/hide-hidden-files.js +0 -538
  396. package/src/scripts/install-dependencies-from.js +0 -456
  397. package/src/scripts/ips.js +0 -663
  398. package/src/scripts/iso.js +0 -370
  399. package/src/scripts/killni.js +0 -577
  400. package/src/scripts/ll.js +0 -467
  401. package/src/scripts/local-ip.js +0 -325
  402. package/src/scripts/m.js +0 -524
  403. package/src/scripts/map.js +0 -309
  404. package/src/scripts/mkd.js +0 -351
  405. package/src/scripts/ncu-update-all.js +0 -457
  406. package/src/scripts/nginx-init.js +0 -718
  407. package/src/scripts/npmi.js +0 -382
  408. package/src/scripts/o.js +0 -511
  409. package/src/scripts/org-by-date.js +0 -338
  410. package/src/scripts/p.js +0 -224
  411. package/src/scripts/packages.js +0 -330
  412. package/src/scripts/path.js +0 -225
  413. package/src/scripts/ports.js +0 -597
  414. package/src/scripts/q.js +0 -305
  415. package/src/scripts/refresh-files.js +0 -394
  416. package/src/scripts/remove-smaller-files.js +0 -516
  417. package/src/scripts/rename-files-with-date.js +0 -533
  418. package/src/scripts/resize-image.js +0 -539
  419. package/src/scripts/rm-safe.js +0 -669
  420. package/src/scripts/s.js +0 -540
  421. package/src/scripts/set-git-public.js +0 -365
  422. package/src/scripts/show-desktop-icons.js +0 -475
  423. package/src/scripts/show-hidden-files.js +0 -472
  424. package/src/scripts/tpa.js +0 -280
  425. package/src/scripts/tpo.js +0 -280
  426. package/src/scripts/u.js +0 -505
  427. package/src/scripts/vpush.js +0 -437
  428. package/src/scripts/y.js +0 -283
  429. package/src/utils/README.md +0 -95
  430. package/src/utils/common/apps.js +0 -143
  431. package/src/utils/common/display.js +0 -157
  432. package/src/utils/common/network.js +0 -185
  433. package/src/utils/common/os.js +0 -294
  434. package/src/utils/common/package-manager.js +0 -301
  435. package/src/utils/common/privileges.js +0 -138
  436. package/src/utils/common/shell.js +0 -261
  437. package/src/utils/macos/apps.js +0 -228
  438. package/src/utils/macos/brew.js +0 -315
  439. package/src/utils/ubuntu/apt.js +0 -307
  440. package/src/utils/ubuntu/desktop.js +0 -292
  441. package/src/utils/ubuntu/snap.js +0 -344
  442. package/src/utils/ubuntu/systemd.js +0 -286
  443. package/src/utils/windows/choco.js +0 -465
  444. package/src/utils/windows/env.js +0 -246
  445. package/src/utils/windows/registry.js +0 -269
  446. package/src/utils/windows/shell.js +0 -240
  447. package/src/utils/windows/winget.js +0 -489
@@ -1,1172 +0,0 @@
1
- # Installing gitego
2
-
3
- ## Overview
4
-
5
- gitego is a Git identity manager and automatic profile switcher that eliminates the risk of committing to a repository with the wrong user identity. It allows you to define separate profiles for work, personal projects, and clients, then automatically switches between them based on your working directory.
6
-
7
- Key features include:
8
-
9
- - **Automatic profile switching**: Configure profiles to activate automatically when you enter a specific directory
10
- - **Unified identity management**: A single profile manages your commit author (user.name, email), authentication method (SSH keys), and API token (PAT)
11
- - **Secure credential storage**: Personal Access Tokens are stored in your operating system's native keychain (macOS Keychain, Windows Credential Manager, or Linux Secret Service), never in plaintext configuration files
12
- - **Cross-platform support**: Works natively on macOS, Windows, and Linux
13
-
14
- gitego uses Git's `includeIf` directive for identity switching and acts as a Git credential helper for HTTPS authentication.
15
-
16
- ## Dependencies
17
-
18
- ### macOS (Homebrew)
19
- - **Required:**
20
- - `homebrew` - Install from https://brew.sh
21
- - `git` - Install via `brew install git` (usually pre-installed with Xcode Command Line Tools)
22
- - **Optional:** None
23
- - **Auto-installed:**
24
- - `go` (version 1.24+) - Automatically installed via `brew install go` if not present or version is too old
25
-
26
- ### Ubuntu (APT/Snap)
27
- - **Required:**
28
- - `git` - Install via `sudo apt-get install -y git`
29
- - `wget` - Install via `sudo apt-get install -y wget` (usually pre-installed)
30
- - **Optional:** None
31
- - **Auto-installed:**
32
- - Go 1.24+ - Downloaded directly from https://go.dev/dl/go1.24.0.linux-amd64.tar.gz and installed to /usr/local/go
33
- - `libsecret-1-0` - Installed via `sudo apt-get install -y libsecret-1-0` for secure PAT storage
34
-
35
- ### Raspberry Pi OS (APT/Snap)
36
- - **Required:**
37
- - `git` - Install via `sudo apt-get install -y git`
38
- - `wget` - Install via `sudo apt-get install -y wget` (usually pre-installed)
39
- - **Optional:** None
40
- - **Auto-installed:**
41
- - Go 1.24+ - Downloaded directly from https://go.dev/dl/ (arm64 or armv6l variant based on detected architecture) and installed to /usr/local/go
42
- - `libsecret-1-0` - Installed via `sudo apt-get install -y libsecret-1-0` for secure PAT storage
43
-
44
- ### Amazon Linux (DNF/YUM)
45
- - **Required:**
46
- - `git` - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
47
- - **Optional:** None
48
- - **Auto-installed:**
49
- - `wget` - Installed via `sudo dnf install -y wget` or `sudo yum install -y wget` if not present
50
- - Go 1.24+ - Downloaded directly from https://go.dev/dl/go1.24.0.linux-amd64.tar.gz and installed to /usr/local/go
51
- - `libsecret` - Attempted installation via `sudo dnf install -y libsecret` or `sudo yum install -y libsecret` for secure PAT storage (may fail on headless servers, which is expected)
52
-
53
- ### Windows (Chocolatey/winget)
54
- - **Required:**
55
- - `git` - Install via `choco install git -y` or `winget install --id Git.Git --silent`
56
- - `chocolatey` OR `winget` - At least one package manager must be installed. Install Chocolatey from https://chocolatey.org/install
57
- - **Optional:** None
58
- - **Auto-installed:**
59
- - `go` (version 1.24+) - Installed via `choco install golang` or `winget install --id GoLang.Go` if not present or version is too old
60
-
61
- ### Git Bash (Manual/Portable)
62
- - **Required:**
63
- - `git` - Install Git for Windows from https://git-scm.com/downloads
64
- - `go` (version 1.24+) - Must be pre-installed on Windows via `choco install golang -y` or `winget install --id GoLang.Go --silent`
65
- - **Optional:** None
66
- - **Auto-installed:** None (Git Bash inherits Windows environment, so dependencies must be installed on Windows first)
67
-
68
- ## Prerequisites
69
-
70
- Before installing gitego on any platform, ensure:
71
-
72
- 1. **Git installed and configured** - gitego manages Git identities, so Git must be present
73
- 2. **Internet connectivity** - Required to download Go and gitego
74
- 3. **Terminal/shell access** - All installation is performed via command line
75
-
76
- **Critical Requirement**: Go 1.24 or later must be installed. gitego is a Go application installed via `go install`. Each platform section below includes Go installation steps.
77
-
78
- ## Platform-Specific Installation
79
-
80
- ### macOS (Homebrew)
81
-
82
- #### Prerequisites
83
-
84
- - macOS 10.15 (Catalina) or later
85
- - Homebrew package manager installed
86
- - Git installed (included with macOS Command Line Tools)
87
-
88
- If Homebrew is not installed, install it first (this command is non-interactive after initial installation):
89
-
90
- ```bash
91
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
92
- ```
93
-
94
- #### Installation Steps
95
-
96
- **Step 1: Install Go**
97
-
98
- Install Go using Homebrew:
99
-
100
- ```bash
101
- brew install --quiet go
102
- ```
103
-
104
- Verify Go is installed and meets the version requirement:
105
-
106
- ```bash
107
- go version
108
- ```
109
-
110
- Expected output should show Go 1.24 or later.
111
-
112
- **Step 2: Ensure Go bin directory is in PATH**
113
-
114
- Add the Go bin directory to your PATH by adding this line to your shell profile. For zsh (default on modern macOS):
115
-
116
- ```bash
117
- echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.zshrc && source ~/.zshrc
118
- ```
119
-
120
- For bash:
121
-
122
- ```bash
123
- echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bash_profile && source ~/.bash_profile
124
- ```
125
-
126
- **Step 3: Install gitego**
127
-
128
- Install gitego using Go's package manager:
129
-
130
- ```bash
131
- go install github.com/bgreenwell/gitego@latest
132
- ```
133
-
134
- **Step 4: Configure Git to use gitego as credential helper**
135
-
136
- Clear any existing credential helpers and set gitego as the primary handler:
137
-
138
- ```bash
139
- git config --global credential.helper ""
140
- git config --global --add credential.helper "!gitego credential"
141
- ```
142
-
143
- #### Verification
144
-
145
- Confirm gitego is installed:
146
-
147
- ```bash
148
- gitego --version
149
- ```
150
-
151
- Expected output:
152
-
153
- ```
154
- gitego version 0.1.1
155
- ```
156
-
157
- Test the credential helper configuration:
158
-
159
- ```bash
160
- git config --global --get-all credential.helper
161
- ```
162
-
163
- Expected output:
164
-
165
- ```
166
- !gitego credential
167
- ```
168
-
169
- #### Troubleshooting
170
-
171
- **Problem**: `gitego: command not found`
172
-
173
- **Solution**: The Go bin directory is not in your PATH. Verify the PATH includes `~/go/bin`:
174
-
175
- ```bash
176
- echo $PATH | tr ':' '\n' | grep go
177
- ```
178
-
179
- If not present, add it to your shell profile:
180
-
181
- ```bash
182
- echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.zshrc && source ~/.zshrc
183
- ```
184
-
185
- **Problem**: `go install` fails with version error
186
-
187
- **Solution**: Your Go version is too old. Update Go:
188
-
189
- ```bash
190
- brew upgrade go
191
- ```
192
-
193
- **Problem**: Credential helper not working
194
-
195
- **Solution**: Verify the configuration is correct:
196
-
197
- ```bash
198
- git config --global --get-all credential.helper
199
- ```
200
-
201
- If multiple entries exist, clear and reconfigure:
202
-
203
- ```bash
204
- git config --global --unset-all credential.helper
205
- git config --global credential.helper ""
206
- git config --global --add credential.helper "!gitego credential"
207
- ```
208
-
209
- ---
210
-
211
- ### Ubuntu/Debian (APT)
212
-
213
- #### Prerequisites
214
-
215
- - Ubuntu 20.04 or later, or Debian 11 (Bullseye) or later
216
- - sudo privileges
217
- - Git installed
218
-
219
- Install Git if not present:
220
-
221
- ```bash
222
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
223
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
224
- ```
225
-
226
- #### Installation Steps
227
-
228
- **Step 1: Install Go**
229
-
230
- The version of Go in Ubuntu/Debian repositories is often outdated. Download and install Go directly from the official source to ensure you have version 1.24 or later:
231
-
232
- ```bash
233
- # Download Go 1.24 (adjust version as needed for newer releases)
234
- wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
235
-
236
- # Remove any existing Go installation and extract new version
237
- sudo rm -rf /usr/local/go
238
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
239
-
240
- # Clean up downloaded archive
241
- rm /tmp/go.tar.gz
242
- ```
243
-
244
- **Step 2: Configure PATH**
245
-
246
- Add Go to your PATH:
247
-
248
- ```bash
249
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
250
- ```
251
-
252
- Verify Go is installed correctly:
253
-
254
- ```bash
255
- go version
256
- ```
257
-
258
- Expected output should show Go 1.24 or later.
259
-
260
- **Step 3: Install gitego**
261
-
262
- Install gitego using Go's package manager:
263
-
264
- ```bash
265
- go install github.com/bgreenwell/gitego@latest
266
- ```
267
-
268
- **Step 4: Configure Git to use gitego as credential helper**
269
-
270
- Clear any existing credential helpers and set gitego as the primary handler:
271
-
272
- ```bash
273
- git config --global credential.helper ""
274
- git config --global --add credential.helper "!gitego credential"
275
- ```
276
-
277
- **Step 5: Install libsecret for secure credential storage**
278
-
279
- gitego uses the Linux Secret Service for secure PAT storage. Install the required library:
280
-
281
- ```bash
282
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libsecret-1-0
283
- ```
284
-
285
- #### Verification
286
-
287
- Confirm gitego is installed:
288
-
289
- ```bash
290
- gitego --version
291
- ```
292
-
293
- Expected output:
294
-
295
- ```
296
- gitego version 0.1.1
297
- ```
298
-
299
- Test the credential helper configuration:
300
-
301
- ```bash
302
- git config --global --get-all credential.helper
303
- ```
304
-
305
- Expected output:
306
-
307
- ```
308
- !gitego credential
309
- ```
310
-
311
- #### Troubleshooting
312
-
313
- **Problem**: `gitego: command not found`
314
-
315
- **Solution**: The Go bin directory is not in your PATH. Add it:
316
-
317
- ```bash
318
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
319
- ```
320
-
321
- **Problem**: Go version is too old
322
-
323
- **Solution**: The system Go package is outdated. Remove it and install from official tarball:
324
-
325
- ```bash
326
- sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y golang-go
327
- wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
328
- sudo rm -rf /usr/local/go
329
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
330
- rm /tmp/go.tar.gz
331
- ```
332
-
333
- **Problem**: Secure credential storage fails
334
-
335
- **Solution**: Ensure you have a running secret service (like GNOME Keyring):
336
-
337
- ```bash
338
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-keyring
339
- ```
340
-
341
- ---
342
-
343
- ### Raspberry Pi OS (APT)
344
-
345
- #### Prerequisites
346
-
347
- - Raspberry Pi OS (64-bit recommended) - Bookworm or Bullseye
348
- - Raspberry Pi 3B+ or later (64-bit capable hardware)
349
- - sudo privileges
350
- - Git installed
351
-
352
- First, verify your architecture:
353
-
354
- ```bash
355
- uname -m
356
- ```
357
-
358
- - `aarch64` = 64-bit (use arm64 Go binary)
359
- - `armv7l` = 32-bit (use armv6l Go binary)
360
-
361
- Install Git if not present:
362
-
363
- ```bash
364
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
365
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
366
- ```
367
-
368
- #### Installation Steps
369
-
370
- **Step 1: Install Go**
371
-
372
- Download the appropriate Go binary for your Raspberry Pi architecture.
373
-
374
- **For 64-bit Raspberry Pi OS (aarch64):**
375
-
376
- ```bash
377
- wget -q https://go.dev/dl/go1.24.0.linux-arm64.tar.gz -O /tmp/go.tar.gz
378
- sudo rm -rf /usr/local/go
379
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
380
- rm /tmp/go.tar.gz
381
- ```
382
-
383
- **For 32-bit Raspberry Pi OS (armv7l):**
384
-
385
- ```bash
386
- wget -q https://go.dev/dl/go1.24.0.linux-armv6l.tar.gz -O /tmp/go.tar.gz
387
- sudo rm -rf /usr/local/go
388
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
389
- rm /tmp/go.tar.gz
390
- ```
391
-
392
- **Step 2: Configure PATH**
393
-
394
- Add Go to your PATH:
395
-
396
- ```bash
397
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
398
- ```
399
-
400
- Verify Go is installed correctly:
401
-
402
- ```bash
403
- go version
404
- ```
405
-
406
- Expected output should show Go 1.24 or later.
407
-
408
- **Step 3: Install gitego**
409
-
410
- Install gitego using Go's package manager:
411
-
412
- ```bash
413
- go install github.com/bgreenwell/gitego@latest
414
- ```
415
-
416
- **Note**: Compilation on Raspberry Pi may take several minutes due to limited processing power.
417
-
418
- **Step 4: Configure Git to use gitego as credential helper**
419
-
420
- Clear any existing credential helpers and set gitego as the primary handler:
421
-
422
- ```bash
423
- git config --global credential.helper ""
424
- git config --global --add credential.helper "!gitego credential"
425
- ```
426
-
427
- **Step 5: Install libsecret for secure credential storage**
428
-
429
- ```bash
430
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libsecret-1-0
431
- ```
432
-
433
- #### Verification
434
-
435
- Confirm gitego is installed:
436
-
437
- ```bash
438
- gitego --version
439
- ```
440
-
441
- Expected output:
442
-
443
- ```
444
- gitego version 0.1.1
445
- ```
446
-
447
- #### Troubleshooting
448
-
449
- **Problem**: `go install` fails with "exec format error"
450
-
451
- **Solution**: You downloaded the wrong architecture binary. Check your architecture with `uname -m` and download the correct Go tarball (arm64 for aarch64, armv6l for armv7l).
452
-
453
- **Problem**: Compilation is extremely slow or fails with out of memory
454
-
455
- **Solution**: Raspberry Pi has limited resources. Increase swap space:
456
-
457
- ```bash
458
- sudo fallocate -l 2G /swapfile
459
- sudo chmod 600 /swapfile
460
- sudo mkswap /swapfile
461
- sudo swapon /swapfile
462
- ```
463
-
464
- Then retry the installation.
465
-
466
- **Problem**: `gitego: command not found`
467
-
468
- **Solution**: Ensure Go bin directory is in PATH:
469
-
470
- ```bash
471
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
472
- ```
473
-
474
- ---
475
-
476
- ### Amazon Linux (DNF/YUM)
477
-
478
- #### Prerequisites
479
-
480
- - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
481
- - sudo privileges
482
- - Git installed
483
-
484
- Install Git if not present:
485
-
486
- ```bash
487
- # For Amazon Linux 2023
488
- sudo dnf install -y git
489
-
490
- # For Amazon Linux 2
491
- sudo yum install -y git
492
- ```
493
-
494
- #### Installation Steps
495
-
496
- **Step 1: Install Go**
497
-
498
- The Go version in Amazon Linux repositories may be outdated. Download and install Go directly from the official source:
499
-
500
- ```bash
501
- wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
502
- sudo rm -rf /usr/local/go
503
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
504
- rm /tmp/go.tar.gz
505
- ```
506
-
507
- **Step 2: Configure PATH**
508
-
509
- Add Go to your PATH:
510
-
511
- ```bash
512
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
513
- ```
514
-
515
- Verify Go is installed correctly:
516
-
517
- ```bash
518
- go version
519
- ```
520
-
521
- Expected output should show Go 1.24 or later.
522
-
523
- **Step 3: Install gitego**
524
-
525
- Install gitego using Go's package manager:
526
-
527
- ```bash
528
- go install github.com/bgreenwell/gitego@latest
529
- ```
530
-
531
- **Step 4: Configure Git to use gitego as credential helper**
532
-
533
- Clear any existing credential helpers and set gitego as the primary handler:
534
-
535
- ```bash
536
- git config --global credential.helper ""
537
- git config --global --add credential.helper "!gitego credential"
538
- ```
539
-
540
- **Step 5: Install libsecret for secure credential storage (optional)**
541
-
542
- For secure PAT storage on headless servers, install libsecret:
543
-
544
- ```bash
545
- # For Amazon Linux 2023
546
- sudo dnf install -y libsecret
547
-
548
- # For Amazon Linux 2
549
- sudo yum install -y libsecret
550
- ```
551
-
552
- **Note**: On headless servers without a graphical environment, the secret service may not be available. In this case, gitego will still function for identity switching, but PAT storage may require alternative configuration.
553
-
554
- #### Verification
555
-
556
- Confirm gitego is installed:
557
-
558
- ```bash
559
- gitego --version
560
- ```
561
-
562
- Expected output:
563
-
564
- ```
565
- gitego version 0.1.1
566
- ```
567
-
568
- Test the credential helper configuration:
569
-
570
- ```bash
571
- git config --global --get-all credential.helper
572
- ```
573
-
574
- Expected output:
575
-
576
- ```
577
- !gitego credential
578
- ```
579
-
580
- #### Troubleshooting
581
-
582
- **Problem**: `gitego: command not found`
583
-
584
- **Solution**: The Go bin directory is not in your PATH. Add it:
585
-
586
- ```bash
587
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
588
- ```
589
-
590
- **Problem**: `wget: command not found`
591
-
592
- **Solution**: Install wget:
593
-
594
- ```bash
595
- # For Amazon Linux 2023
596
- sudo dnf install -y wget
597
-
598
- # For Amazon Linux 2
599
- sudo yum install -y wget
600
- ```
601
-
602
- **Problem**: Secret service not available on headless server
603
-
604
- **Solution**: gitego still works for identity switching without a secret service. For PAT management on headless servers, consider using SSH keys instead, or configure a headless secret service like `pass`.
605
-
606
- ---
607
-
608
- ### Windows (Chocolatey/winget)
609
-
610
- #### Prerequisites
611
-
612
- - Windows 10 version 1809 or later, or Windows 11
613
- - Administrator PowerShell or Command Prompt
614
- - Git for Windows installed
615
- - Chocolatey or winget package manager
616
-
617
- If Git is not installed, install it first:
618
-
619
- ```powershell
620
- choco install git -y
621
- ```
622
-
623
- Or with winget:
624
-
625
- ```powershell
626
- winget install --id Git.Git --silent --accept-package-agreements --accept-source-agreements
627
- ```
628
-
629
- #### Installation Steps
630
-
631
- **Step 1: Install Go**
632
-
633
- Using Chocolatey (run in Administrator PowerShell):
634
-
635
- ```powershell
636
- choco install golang -y
637
- ```
638
-
639
- Using winget:
640
-
641
- ```powershell
642
- winget install --id GoLang.Go --silent --accept-package-agreements --accept-source-agreements
643
- ```
644
-
645
- **Step 2: Refresh environment variables**
646
-
647
- Close and reopen your terminal, or in PowerShell run:
648
-
649
- ```powershell
650
- $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
651
- ```
652
-
653
- Verify Go is installed:
654
-
655
- ```powershell
656
- go version
657
- ```
658
-
659
- Expected output should show Go 1.24 or later.
660
-
661
- **Step 3: Install gitego**
662
-
663
- Install gitego using Go's package manager:
664
-
665
- ```powershell
666
- go install github.com/bgreenwell/gitego@latest
667
- ```
668
-
669
- **Step 4: Add Go bin to PATH**
670
-
671
- The Go bin directory needs to be in your PATH. Add it permanently:
672
-
673
- ```powershell
674
- $gopath = [System.Environment]::GetEnvironmentVariable("GOPATH", "User")
675
- if (-not $gopath) { $gopath = "$env:USERPROFILE\go" }
676
- $binPath = "$gopath\bin"
677
- $currentPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
678
- if ($currentPath -notlike "*$binPath*") {
679
- [System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$binPath", "User")
680
- }
681
- ```
682
-
683
- Close and reopen your terminal for the PATH change to take effect.
684
-
685
- **Step 5: Configure Git to use gitego as credential helper**
686
-
687
- Clear any existing credential helpers and set gitego as the primary handler:
688
-
689
- ```powershell
690
- git config --global credential.helper ""
691
- git config --global --add credential.helper "!gitego credential"
692
- ```
693
-
694
- #### Verification
695
-
696
- Confirm gitego is installed:
697
-
698
- ```powershell
699
- gitego --version
700
- ```
701
-
702
- Expected output:
703
-
704
- ```
705
- gitego version 0.1.1
706
- ```
707
-
708
- Test the credential helper configuration:
709
-
710
- ```powershell
711
- git config --global --get-all credential.helper
712
- ```
713
-
714
- Expected output:
715
-
716
- ```
717
- !gitego credential
718
- ```
719
-
720
- #### Troubleshooting
721
-
722
- **Problem**: `gitego: The term 'gitego' is not recognized`
723
-
724
- **Solution**: The Go bin directory is not in your PATH. Add it and restart your terminal:
725
-
726
- ```powershell
727
- $gopath = "$env:USERPROFILE\go"
728
- $binPath = "$gopath\bin"
729
- [System.Environment]::SetEnvironmentVariable("Path", "$env:Path;$binPath", "User")
730
- ```
731
-
732
- Then close and reopen PowerShell.
733
-
734
- **Problem**: `go install` fails with network error
735
-
736
- **Solution**: Check your internet connection and proxy settings. If behind a corporate proxy:
737
-
738
- ```powershell
739
- $env:HTTP_PROXY = "http://proxy.example.com:8080"
740
- $env:HTTPS_PROXY = "http://proxy.example.com:8080"
741
- go install github.com/bgreenwell/gitego@latest
742
- ```
743
-
744
- **Problem**: Go version is outdated
745
-
746
- **Solution**: Update Go using Chocolatey:
747
-
748
- ```powershell
749
- choco upgrade golang -y
750
- ```
751
-
752
- Or with winget:
753
-
754
- ```powershell
755
- winget upgrade --id GoLang.Go
756
- ```
757
-
758
- ---
759
-
760
- ### WSL (Ubuntu)
761
-
762
- #### Prerequisites
763
-
764
- - Windows 10 version 2004 or higher, or Windows 11
765
- - WSL 2 enabled with Ubuntu distribution installed
766
- - sudo privileges within WSL
767
- - Git installed in WSL
768
-
769
- Verify you are running WSL 2:
770
-
771
- ```bash
772
- wsl.exe --list --verbose
773
- ```
774
-
775
- Your Ubuntu distribution should show "2" in the VERSION column.
776
-
777
- Install Git if not present:
778
-
779
- ```bash
780
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
781
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
782
- ```
783
-
784
- #### Installation Steps
785
-
786
- **Step 1: Install Go**
787
-
788
- Download and install Go from the official source:
789
-
790
- ```bash
791
- wget -q https://go.dev/dl/go1.24.0.linux-amd64.tar.gz -O /tmp/go.tar.gz
792
- sudo rm -rf /usr/local/go
793
- sudo tar -C /usr/local -xzf /tmp/go.tar.gz
794
- rm /tmp/go.tar.gz
795
- ```
796
-
797
- **Step 2: Configure PATH**
798
-
799
- Add Go to your PATH:
800
-
801
- ```bash
802
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
803
- ```
804
-
805
- Verify Go is installed correctly:
806
-
807
- ```bash
808
- go version
809
- ```
810
-
811
- Expected output should show Go 1.24 or later.
812
-
813
- **Step 3: Install gitego**
814
-
815
- Install gitego using Go's package manager:
816
-
817
- ```bash
818
- go install github.com/bgreenwell/gitego@latest
819
- ```
820
-
821
- **Step 4: Configure Git to use gitego as credential helper**
822
-
823
- Clear any existing credential helpers and set gitego as the primary handler:
824
-
825
- ```bash
826
- git config --global credential.helper ""
827
- git config --global --add credential.helper "!gitego credential"
828
- ```
829
-
830
- **Step 5: Configure credential storage for WSL**
831
-
832
- WSL does not have a native secret service running by default. Install and configure pass for credential storage:
833
-
834
- ```bash
835
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pass gnupg
836
- ```
837
-
838
- Generate a GPG key for pass (follow the prompts):
839
-
840
- ```bash
841
- gpg --batch --gen-key <<EOF
842
- Key-Type: RSA
843
- Key-Length: 4096
844
- Name-Real: gitego
845
- Name-Email: gitego@localhost
846
- Expire-Date: 0
847
- %no-protection
848
- EOF
849
- ```
850
-
851
- Initialize pass with the generated key:
852
-
853
- ```bash
854
- pass init "gitego"
855
- ```
856
-
857
- #### Verification
858
-
859
- Confirm gitego is installed:
860
-
861
- ```bash
862
- gitego --version
863
- ```
864
-
865
- Expected output:
866
-
867
- ```
868
- gitego version 0.1.1
869
- ```
870
-
871
- Test the credential helper configuration:
872
-
873
- ```bash
874
- git config --global --get-all credential.helper
875
- ```
876
-
877
- Expected output:
878
-
879
- ```
880
- !gitego credential
881
- ```
882
-
883
- #### Troubleshooting
884
-
885
- **Problem**: `gitego: command not found`
886
-
887
- **Solution**: Ensure Go bin directory is in PATH:
888
-
889
- ```bash
890
- echo 'export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
891
- ```
892
-
893
- **Problem**: WSL 1 compatibility issues
894
-
895
- **Solution**: Upgrade to WSL 2:
896
-
897
- ```powershell
898
- wsl --set-version Ubuntu 2
899
- ```
900
-
901
- **Problem**: Secret storage errors
902
-
903
- **Solution**: Ensure pass is properly initialized:
904
-
905
- ```bash
906
- pass init "$(gpg --list-keys --keyid-format LONG | grep -A1 pub | tail -1 | awk '{print $1}')"
907
- ```
908
-
909
- ---
910
-
911
- ### Git Bash (Windows)
912
-
913
- #### Prerequisites
914
-
915
- - Windows 10 or Windows 11 (64-bit)
916
- - Git Bash installed (comes with Git for Windows)
917
- - Go installed on Windows (see Windows section)
918
-
919
- Git Bash inherits the Windows PATH, so if Go and gitego are installed on Windows, they will be available in Git Bash automatically.
920
-
921
- #### Installation Steps
922
-
923
- **Step 1: Install Go on Windows**
924
-
925
- If Go is not already installed, install it using Chocolatey from an Administrator PowerShell:
926
-
927
- ```powershell
928
- choco install golang -y
929
- ```
930
-
931
- Or with winget:
932
-
933
- ```powershell
934
- winget install --id GoLang.Go --silent --accept-package-agreements --accept-source-agreements
935
- ```
936
-
937
- **Step 2: Install gitego**
938
-
939
- Open Git Bash and install gitego:
940
-
941
- ```bash
942
- go install github.com/bgreenwell/gitego@latest
943
- ```
944
-
945
- **Step 3: Add Go bin to PATH**
946
-
947
- If gitego is not found after installation, add the Go bin directory to your Git Bash profile:
948
-
949
- ```bash
950
- echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc && source ~/.bashrc
951
- ```
952
-
953
- **Step 4: Configure Git to use gitego as credential helper**
954
-
955
- Clear any existing credential helpers and set gitego as the primary handler:
956
-
957
- ```bash
958
- git config --global credential.helper ""
959
- git config --global --add credential.helper "!gitego credential"
960
- ```
961
-
962
- #### Verification
963
-
964
- Confirm gitego is installed:
965
-
966
- ```bash
967
- gitego --version
968
- ```
969
-
970
- Expected output:
971
-
972
- ```
973
- gitego version 0.1.1
974
- ```
975
-
976
- Test the credential helper configuration:
977
-
978
- ```bash
979
- git config --global --get-all credential.helper
980
- ```
981
-
982
- Expected output:
983
-
984
- ```
985
- !gitego credential
986
- ```
987
-
988
- #### Troubleshooting
989
-
990
- **Problem**: `gitego: command not found`
991
-
992
- **Solution**: Add the Go bin directory to your PATH:
993
-
994
- ```bash
995
- echo 'export PATH="$PATH:$HOME/go/bin:/c/Users/$USER/go/bin"' >> ~/.bashrc && source ~/.bashrc
996
- ```
997
-
998
- **Problem**: `go: command not found`
999
-
1000
- **Solution**: Go is not installed or not in PATH. Install Go on Windows first (see Windows section), then restart Git Bash.
1001
-
1002
- **Problem**: Credential helper not working
1003
-
1004
- **Solution**: Verify the Git configuration:
1005
-
1006
- ```bash
1007
- git config --global --list | grep credential
1008
- ```
1009
-
1010
- Reconfigure if needed:
1011
-
1012
- ```bash
1013
- git config --global --unset-all credential.helper
1014
- git config --global credential.helper ""
1015
- git config --global --add credential.helper "!gitego credential"
1016
- ```
1017
-
1018
- ---
1019
-
1020
- ## Post-Installation Configuration
1021
-
1022
- After installing gitego on any platform, complete these configuration steps.
1023
-
1024
- ### Create Your First Profile
1025
-
1026
- Create a default profile with your primary Git identity:
1027
-
1028
- ```bash
1029
- gitego add personal --name "Your Name" --email "you@example.com" --username "your-github-username"
1030
- ```
1031
-
1032
- Set it as the global default:
1033
-
1034
- ```bash
1035
- gitego use personal
1036
- ```
1037
-
1038
- ### Create Additional Profiles
1039
-
1040
- Create profiles for different contexts:
1041
-
1042
- ```bash
1043
- # Work profile with SSH key
1044
- gitego add work --name "Your Name" --email "you@company.com" --username "work-username" --ssh-key ~/.ssh/id_work
1045
-
1046
- # Client profile with Personal Access Token
1047
- gitego add client --name "Your Name" --email "you@client.com" --username "client-username" --pat "ghp_YourPATHere"
1048
- ```
1049
-
1050
- ### Configure Auto-Switching
1051
-
1052
- Set up automatic profile switching based on directory:
1053
-
1054
- ```bash
1055
- gitego auto ~/work/ work
1056
- gitego auto ~/personal/ personal
1057
- gitego auto ~/clients/abc/ client
1058
- ```
1059
-
1060
- ### Install Pre-Commit Hook (Optional)
1061
-
1062
- Add a safety hook to prevent commits with the wrong identity:
1063
-
1064
- ```bash
1065
- cd /path/to/your/repo
1066
- gitego install-hook
1067
- ```
1068
-
1069
- ### Verify Configuration
1070
-
1071
- Check the current effective Git identity:
1072
-
1073
- ```bash
1074
- gitego status
1075
- ```
1076
-
1077
- List all configured profiles:
1078
-
1079
- ```bash
1080
- gitego list
1081
- ```
1082
-
1083
- ---
1084
-
1085
- ## Common Issues
1086
-
1087
- ### Issue: "error: cannot run gitego credential: No such file or directory"
1088
-
1089
- **Symptoms**: Git operations fail with credential helper errors.
1090
-
1091
- **Solution**: gitego is not in your PATH. Verify the installation:
1092
-
1093
- ```bash
1094
- which gitego
1095
- ```
1096
-
1097
- If not found, add the Go bin directory to your PATH (see platform-specific instructions above).
1098
-
1099
- ### Issue: Profile not switching automatically
1100
-
1101
- **Symptoms**: `gitego status` shows the wrong profile when in a configured directory.
1102
-
1103
- **Solution**: Verify auto-switching rules:
1104
-
1105
- ```bash
1106
- gitego list
1107
- ```
1108
-
1109
- Ensure the directory path in the auto rule matches your actual directory structure. The path must be an exact prefix match.
1110
-
1111
- ### Issue: PAT not being used for HTTPS operations
1112
-
1113
- **Symptoms**: Git prompts for username/password despite PAT being configured.
1114
-
1115
- **Solution**: Verify the credential helper is configured:
1116
-
1117
- ```bash
1118
- git config --global --get-all credential.helper
1119
- ```
1120
-
1121
- If gitego is not listed, reconfigure:
1122
-
1123
- ```bash
1124
- git config --global credential.helper ""
1125
- git config --global --add credential.helper "!gitego credential"
1126
- ```
1127
-
1128
- ### Issue: SSH key not being used
1129
-
1130
- **Symptoms**: Git uses wrong SSH key for operations.
1131
-
1132
- **Solution**: gitego manages SSH key selection via GIT_SSH_COMMAND. Verify the profile has an SSH key configured:
1133
-
1134
- ```bash
1135
- gitego list
1136
- ```
1137
-
1138
- If the ssh-key field is empty, add one:
1139
-
1140
- ```bash
1141
- gitego edit profile-name --ssh-key ~/.ssh/id_correct_key
1142
- ```
1143
-
1144
- ### Issue: "secret service not available" on Linux
1145
-
1146
- **Symptoms**: PAT storage fails on headless Linux systems.
1147
-
1148
- **Solution**: Install and configure a secret service. For systems with GNOME:
1149
-
1150
- ```bash
1151
- sudo apt-get install -y gnome-keyring
1152
- ```
1153
-
1154
- For headless systems, use pass:
1155
-
1156
- ```bash
1157
- sudo apt-get install -y pass gnupg
1158
- gpg --gen-key
1159
- pass init "your-gpg-key-id"
1160
- ```
1161
-
1162
- ---
1163
-
1164
- ## References
1165
-
1166
- - [gitego GitHub Repository](https://github.com/bgreenwell/gitego)
1167
- - [Go Installation Documentation](https://go.dev/doc/install)
1168
- - [Git Credential Helpers Documentation](https://git-scm.com/docs/gitcredentials)
1169
- - [Git Conditional Includes Documentation](https://git-scm.com/docs/git-config#_conditional_includes)
1170
- - [Homebrew Go Formula](https://formulae.brew.sh/formula/go)
1171
- - [Chocolatey Go Package](https://community.chocolatey.org/packages/golang)
1172
- - [winget Go Package](https://winget.run/pkg/GoLang/Go)