mirror of
				https://github.com/cheat/cheat.git
				synced 2025-11-04 07:45:28 +01:00 
			
		
		
		
	feat(installer): use go-git to clone
				
					
				
			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).
This commit is contained in:
		@@ -3,19 +3,20 @@ package installer
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const cloneURL = "https://github.com/cheat/cheatsheets.git"
 | 
			
		||||
	"github.com/go-git/go-git/v5"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// clone clones the community cheatsheets
 | 
			
		||||
func clone(path string) error {
 | 
			
		||||
 | 
			
		||||
	// perform the clone in a shell
 | 
			
		||||
	cmd := exec.Command("git", "clone", cloneURL, path)
 | 
			
		||||
	cmd.Stdout = os.Stdout
 | 
			
		||||
	cmd.Stderr = os.Stderr
 | 
			
		||||
	err := cmd.Run()
 | 
			
		||||
	// clone the community cheatsheets
 | 
			
		||||
	_, err := git.PlainClone(path, false, &git.CloneOptions{
 | 
			
		||||
		URL:      "https://github.com/cheat/cheatsheets.git",
 | 
			
		||||
		Depth:    1,
 | 
			
		||||
		Progress: os.Stdout,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("failed to clone cheatsheets: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user