mirror of
				https://github.com/cheat/cheat.git
				synced 2025-11-03 23:35:27 +01:00 
			
		
		
		
	@@ -9,13 +9,13 @@ On Unix-like systems, you may simply paste the following snippet into your termi
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
cd /tmp \
 | 
			
		||||
  && wget https://github.com/cheat/cheat/releases/download/4.3.0/cheat-linux-amd64.gz \
 | 
			
		||||
  && wget https://github.com/cheat/cheat/releases/download/4.3.1/cheat-linux-amd64.gz \
 | 
			
		||||
  && gunzip cheat-linux-amd64.gz \
 | 
			
		||||
  && chmod +x cheat-linux-amd64 \
 | 
			
		||||
  && sudo mv cheat-linux-amd64 /usr/local/bin/cheat
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You may need to need to change the version number (`4.3.0`) and the archive
 | 
			
		||||
You may need to need to change the version number (`4.3.1`) and the archive
 | 
			
		||||
(`cheat-linux-amd64.gz`) depending on your platform.
 | 
			
		||||
 | 
			
		||||
See the [releases page][releases] for a list of supported platforms.
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ import (
 | 
			
		||||
	"github.com/cheat/cheat/internal/installer"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const version = "4.3.0"
 | 
			
		||||
const version = "4.3.1"
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import (
 | 
			
		||||
func configs() string {
 | 
			
		||||
	return strings.TrimSpace(`---
 | 
			
		||||
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
 | 
			
		||||
# editor: vim
 | 
			
		||||
editor: EDITOR_PATH
 | 
			
		||||
 | 
			
		||||
# Should 'cheat' always colorize output?
 | 
			
		||||
colorize: false
 | 
			
		||||
@@ -17,11 +17,11 @@ colorize: false
 | 
			
		||||
# Which 'chroma' colorscheme should be applied to the output?
 | 
			
		||||
# Options are available here:
 | 
			
		||||
#   https://github.com/alecthomas/chroma/tree/master/styles
 | 
			
		||||
# style: monokai
 | 
			
		||||
style: monokai
 | 
			
		||||
 | 
			
		||||
# Which 'chroma' "formatter" should be applied?
 | 
			
		||||
# One of: "terminal", "terminal256", "terminal16m"
 | 
			
		||||
formatter: terminal
 | 
			
		||||
formatter: terminal256
 | 
			
		||||
 | 
			
		||||
# Through which pager should output be piped?
 | 
			
		||||
# 'less -FRX' is recommended on Unix systems
 | 
			
		||||
@@ -41,7 +41,6 @@ pager: PAGER_PATH
 | 
			
		||||
# commands. So, if you want to view the 'tar' cheatsheet that is tagged as
 | 
			
		||||
# 'community' rather than your own, you can use: cheat tar -t community
 | 
			
		||||
cheatpaths:
 | 
			
		||||
 | 
			
		||||
  # Paths that come earlier are considered to be the most "global", and will
 | 
			
		||||
  # thus be overridden by more local cheatsheets. That being the case, you
 | 
			
		||||
  # should probably list community cheatsheets first.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
 | 
			
		||||
# editor: vim
 | 
			
		||||
editor: EDITOR_PATH
 | 
			
		||||
 | 
			
		||||
# Should 'cheat' always colorize output?
 | 
			
		||||
colorize: false
 | 
			
		||||
@@ -8,11 +8,11 @@ colorize: false
 | 
			
		||||
# Which 'chroma' colorscheme should be applied to the output?
 | 
			
		||||
# Options are available here:
 | 
			
		||||
#   https://github.com/alecthomas/chroma/tree/master/styles
 | 
			
		||||
# style: monokai
 | 
			
		||||
style: monokai
 | 
			
		||||
 | 
			
		||||
# Which 'chroma' "formatter" should be applied?
 | 
			
		||||
# One of: "terminal", "terminal256", "terminal16m"
 | 
			
		||||
formatter: terminal
 | 
			
		||||
formatter: terminal256
 | 
			
		||||
 | 
			
		||||
# Through which pager should output be piped?
 | 
			
		||||
# 'less -FRX' is recommended on Unix systems
 | 
			
		||||
@@ -32,7 +32,6 @@ pager: PAGER_PATH
 | 
			
		||||
# commands. So, if you want to view the 'tar' cheatsheet that is tagged as
 | 
			
		||||
# 'community' rather than your own, you can use: cheat tar -t community
 | 
			
		||||
cheatpaths:
 | 
			
		||||
 | 
			
		||||
  # Paths that come earlier are considered to be the most "global", and will
 | 
			
		||||
  # thus be overridden by more local cheatsheets. That being the case, you
 | 
			
		||||
  # should probably list community cheatsheets first.
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,22 @@ func Editor() (string, error) {
 | 
			
		||||
		return "notepad", nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// look for `nano` on the `PATH`
 | 
			
		||||
	// look for `nano` and `vim` on the `PATH`
 | 
			
		||||
	def, _ := exec.LookPath("editor") // default `editor` wrapper
 | 
			
		||||
	nano, _ := exec.LookPath("nano")
 | 
			
		||||
	vim, _ := exec.LookPath("vim")
 | 
			
		||||
 | 
			
		||||
	// search for `$VISUAL`, `$EDITOR`, and then `nano`, in that order
 | 
			
		||||
	for _, editor := range []string{os.Getenv("VISUAL"), os.Getenv("EDITOR"), nano} {
 | 
			
		||||
	// set editor priority
 | 
			
		||||
	editors := []string{
 | 
			
		||||
		os.Getenv("VISUAL"),
 | 
			
		||||
		os.Getenv("EDITOR"),
 | 
			
		||||
		def,
 | 
			
		||||
		nano,
 | 
			
		||||
		vim,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// return the first editor that was found per the priority above
 | 
			
		||||
	for _, editor := range editors {
 | 
			
		||||
		if editor != "" {
 | 
			
		||||
			return editor, nil
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,17 @@ package config
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Pager attempts to locate a pager that's appropriate for the environment.
 | 
			
		||||
func Pager() string {
 | 
			
		||||
 | 
			
		||||
	// default to `more` on Windows
 | 
			
		||||
	if runtime.GOOS == "windows" {
 | 
			
		||||
		return "more"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// if $PAGER is set, return the corresponding pager
 | 
			
		||||
	if os.Getenv("PAGER") != "" {
 | 
			
		||||
		return os.Getenv("PAGER")
 | 
			
		||||
 
 | 
			
		||||
@@ -20,11 +20,18 @@ func Run(configs string, confpath string) error {
 | 
			
		||||
	community := filepath.Join(confdir, "cheatsheets", "community")
 | 
			
		||||
	personal := filepath.Join(confdir, "cheatsheets", "personal")
 | 
			
		||||
 | 
			
		||||
	// template the above paths into the default configs
 | 
			
		||||
	// set default cheatpaths
 | 
			
		||||
	configs = strings.Replace(configs, "COMMUNITY_PATH", community, -1)
 | 
			
		||||
	configs = strings.Replace(configs, "PERSONAL_PATH", personal, -1)
 | 
			
		||||
 | 
			
		||||
	// locate and set a default pager
 | 
			
		||||
	configs = strings.Replace(configs, "PAGER_PATH", config.Pager(), -1)
 | 
			
		||||
 | 
			
		||||
	// locate and set a default editor
 | 
			
		||||
	if editor, err := config.Editor(); err == nil {
 | 
			
		||||
		configs = strings.Replace(configs, "EDITOR_PATH", editor, -1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// prompt the user to download the community cheatsheets
 | 
			
		||||
	yes, err := Prompt(
 | 
			
		||||
		"Would you like to download the community cheatsheets? [Y/n]",
 | 
			
		||||
 
 | 
			
		||||
@@ -49,17 +49,18 @@ func Load(cheatpaths []cp.Cheatpath) ([]map[string]sheet.Sheet, error) {
 | 
			
		||||
					string(os.PathSeparator),
 | 
			
		||||
				)
 | 
			
		||||
 | 
			
		||||
				// ignore hidden files and directories. Otherwise, we'll likely load
 | 
			
		||||
				// .git/* and .DS_Store.
 | 
			
		||||
				// Don't walk the `.git` directory. Doing so creates
 | 
			
		||||
				// hundreds/thousands of needless syscalls and could
 | 
			
		||||
				// potentially harm performance on machines with slow disks.
 | 
			
		||||
				//
 | 
			
		||||
				// NB: this is still somewhat brittle in that it will miss files
 | 
			
		||||
				// contained within hidden directories in the middle of a path, though
 | 
			
		||||
				// that should not realistically occur.
 | 
			
		||||
				if strings.HasPrefix(title, ".") || strings.HasPrefix(info.Name(), ".") {
 | 
			
		||||
					// Do not walk hidden directories. This is important,
 | 
			
		||||
					// because it's common for cheatsheets to be stored in
 | 
			
		||||
					// version-control, and a `.git` directory can easily
 | 
			
		||||
					// contain thousands of files.
 | 
			
		||||
				// NB: We _do_ want to walk hidden directories, however, so we
 | 
			
		||||
				// should not constrain this further (perhaps to include all
 | 
			
		||||
				// hidden directories). In the wild, many users appear to store
 | 
			
		||||
				// cheatsheets in a `.config` directory (seemingly a default
 | 
			
		||||
				// behavior of `brew`), and `cheat` explicitly supports a
 | 
			
		||||
				// local `.cheat` directory. Constraining further here will
 | 
			
		||||
				// break those use-cases - and has done so in the past!
 | 
			
		||||
				if strings.Contains(path, ".git") {
 | 
			
		||||
					return fs.SkipDir
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user