mirror of
https://github.com/cheat/cheat.git
synced 2024-11-24 23:11:36 +01:00
ce37b670c7
Squashed commit of the following: commit5c322e79b7
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. commit803e1f014c
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. commit99c48097e2
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. commit8e1580ff5a
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. commita08dca70d9
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. commite15bc6c966
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` commitefd09575df
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. commitec10244ebe
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. commitebd9ec6287
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`. commitecac5a0971
Author: Chris Lane <chris@chris-allen-lane.com> Date: Wed Mar 4 19:30:12 2020 -0500 chore(dependencies): updates vendored dependencies
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"path"
|
|
|
|
"github.com/mitchellh/go-homedir"
|
|
)
|
|
|
|
// Paths returns config file paths that are appropriate for the operating
|
|
// system
|
|
func Paths(
|
|
sys string,
|
|
home string,
|
|
envvars map[string]string,
|
|
) ([]string, error) {
|
|
|
|
// if `CHEAT_CONFIG_PATH` is set, expand ~ and return it
|
|
if confpath, ok := envvars["CHEAT_CONFIG_PATH"]; ok {
|
|
|
|
// expand ~
|
|
expanded, err := homedir.Expand(confpath)
|
|
if err != nil {
|
|
return []string{}, fmt.Errorf("failed to expand ~: %v", err)
|
|
}
|
|
|
|
return []string{expanded}, nil
|
|
}
|
|
|
|
switch sys {
|
|
case "darwin", "linux", "freebsd":
|
|
paths := []string{}
|
|
|
|
// don't include the `XDG_CONFIG_HOME` path if that envvar is not set
|
|
if xdgpath, ok := envvars["XDG_CONFIG_HOME"]; ok {
|
|
paths = append(paths, path.Join(xdgpath, "/cheat/conf.yml"))
|
|
}
|
|
|
|
// if `XDG_CONFIG_HOME` is not set, search the user's home directory
|
|
paths = append(paths, []string{
|
|
path.Join(home, ".config/cheat/conf.yml"),
|
|
path.Join(home, ".cheat/conf.yml"),
|
|
}...)
|
|
|
|
return paths, nil
|
|
case "windows":
|
|
return []string{
|
|
path.Join(envvars["APPDATA"], "/cheat/conf.yml"),
|
|
path.Join(envvars["PROGRAMDATA"], "/cheat/conf.yml"),
|
|
}, nil
|
|
default:
|
|
return []string{}, fmt.Errorf("unsupported os: %s", sys)
|
|
}
|
|
}
|