- Refactor `installer.clone` into new `repo.Clone` package and method.
- Refactor `sheets.isGitDir` into `repo.GitDir`.
Both of these changes read better, and will facilitate cleaner
architecture when `--update` is implemented.
Integrate `go-git` into the application, and use it to `git clone`
cheatsheets when the installer runs.
Previously, the installer required that `git` be installed on the system
`PATH`, so this change has to big advantages:
1. It removes that system dependency on `git`
2. It paves the way for implementing the `--update` command
Additionally, `cheat` now performs a `--depth=1` clone when installing
cheatsheets, which should at least somewhat improve installation times
(especially on slow network connections).
Fix an issue whereby colorization would output ANSI codes if a pager was
not configured.
The solution here is to stop guessing about the state of the user's
system at runtime, as well as the user's intention. The installer now
chooses an appropriate installer when generating configs, and no longer
bothers searching for pagers at runtime.
Fix an issue whereby the installer installed cheatsheets into the wrong
directory on Windows. This occurred because previously `path.Join` was
used where `path/filepath.Join` should have been used.
This matters, because the former always uses `/` as the path separator,
whereas the latter will use `/` or `\` as is appropriate for the
runtime environment.
This should resolve bullet point 4 in #665.
Squashed commit of the following:
commit 5c322e79b7
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Fri Mar 6 19:56:56 2020 -0500
docs(README): update the `README`
Update the `README` to document the improved config-generation
mechanism.
commit 803e1f014c
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Fri Mar 6 19:19:49 2020 -0500
feat(config-init): platform-specific pathing
Update `--init` subcommand to rely upon the same platform-detection
intelligence that was previously implemented by the "installer".
The installer and `--init` should now produce identical config files.
commit 99c48097e2
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Fri Mar 6 18:26:33 2020 -0500
feat(installer): platform-correct config templating
Modify the "installer" to populate cheatpaths with sensible defaults
based on the detection of the user's operating system and environment.
commit 8e1580ff5a
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Mar 5 20:19:58 2020 -0500
fix(tests): fix `config.Paths` tests
Refactor `config.Paths` (by externalizing a call to `homedir.Dir`) to
decouple it from filesystem paths, thus facilitating cleaner unit-tests.
commit a08dca70d9
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Mar 5 18:14:27 2020 -0500
feat(installer): default path selection
Modify the installer to improve default config and cheatsheet path
selection.
commit e15bc6c966
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Mar 5 17:49:50 2020 -0500
fix(typo): correct comment typo in `main.go`
commit efd09575df
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Mar 5 17:46:49 2020 -0500
feat(config): refactor config path detection
Previously, failing other checks, on Unix and BSD systems,
`config.Paths` would attempt to compute the user's home directory by
reading the `HOME` environment variable.
This change deprecates that approach with a call to `homedir.Dir`, which
is used elsewhere throughout the application.
commit ec10244ebe
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Mar 5 17:15:28 2020 -0500
chore(installer): delete unused file
Delete `installer/installer.go`, which (in hindsight) was unnecessary.
commit ebd9ec6287
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Wed Mar 4 19:31:13 2020 -0500
wip(installer): stub experimental "installer"
Stubs out an experimental "installer" that will help new users to
quickly configure `cheat`.
commit ecac5a0971
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Wed Mar 4 19:30:12 2020 -0500
chore(dependencies): updates vendored dependencies