Skip to content

Commit

Permalink
feat: add install scripts (actual installer)
Browse files Browse the repository at this point in the history
  • Loading branch information
Slug-Boi committed Dec 1, 2024
1 parent 5f7365c commit 3862338
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 5 deletions.
Binary file added installer/bin/install-darwin-aarch64
Binary file not shown.
Binary file added installer/bin/install-darwin-x86_64
Binary file not shown.
Binary file added installer/bin/install-linux
Binary file not shown.
Binary file added installer/bin/install-win
Binary file not shown.
128 changes: 128 additions & 0 deletions installer/install.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
package main

import (
"fmt"
"io"
"net/http"
"os"
"os/exec"
"path/filepath"
"regexp"
"runtime"
)

func main() {
var cmd *exec.Cmd
// Check which os being run
if runtime.GOOS == "windows" {
cmd = exec.Command("where", "cocommit")
} else {
cmd = exec.Command("which", "cocommit")
}

_, err := cmd.Output()
if err != nil {
download()
} else {
update()
}

}

func cleanup() {
fmt.Println("Removing cocommit.tar.gz")
os.Remove("cocommit.tar.gz")
}

func download() {
var resp *http.Response
var err error
var cmd *exec.Cmd

// Download the latest release
switch runtime.GOOS {
case "darwin":
fmt.Println("Downloading mac version")
filename := ""
if runtime.GOARCH == "amd64" {
resp, err = http.Get("https://github.com/Slug-Boi/cocommit/releases/latest/download/cocommit-darwin-x86_64.tar.gz")
filename = "cocommit-darwin-x86_64.tar.gz"
} else {
resp, err = http.Get("https://github.com/Slug-Boi/cocommit/releases/latest/download/cocommit-darwin-aarch64.tar.gz")
filename = "cocommit-darwin-aarch64.tar.gz"
}
cmd = exec.Command("tar", "-xvf", filename)
case "windows":
fmt.Println("Downloading windows version")
resp, err = http.Get("https://github.com/Slug-Boi/cocommit/releases/latest/download/cocommit-win.tar.gz")
cmd = exec.Command("tar", "-xvf", "cocommit-win.tar.gz")
default:
fmt.Println("Downloading linux version")
resp, err = http.Get("https://github.com/Slug-Boi/cocommit/releases/latest/download/cocommit-linux.tar.gz")
cmd = exec.Command("tar", "-xvf", "cocommit-linux.tar.gz")
}
if err != nil {
fmt.Println("Error downloading file")
}

// Create the file
file, err := os.Create("cocommit.tar.gz")
if err != nil {
fmt.Println("Error creating file")
}

defer cleanup()
defer file.Close()

defer resp.Body.Close()
_, err = io.Copy(file, resp.Body)
if err != nil {
fmt.Println("Error copying file")
}

// Extract the file
err = cmd.Run()
if err != nil {
fmt.Println("Error extracting file")
}

regExp := regexp.MustCompile("cocommit-.+")

// Find the correct binary
var new_binary string

err = filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
if err == nil && regExp.MatchString(info.Name()) {
new_binary = info.Name()
return nil
}
return nil
})
if err != nil {
panic(err)
}

// Move the file to the correct path
var input string
fmt.Println("Cocommit default install location (/usr/local/bin/cocommit?):")
fmt.Scanln(&input)
if input == "" {
input = "/usr/local/bin/cocommit"
}

if new_binary != "" {
err = os.Rename(new_binary, input)
}
fmt.Println("Cocommit cli tool installed successfully")
// Cleanup
cleanup()

}

func update() {
cmd := exec.Command("cocommit", "update")
err := cmd.Run()
if err != nil {
fmt.Println("Error updating")
}
}
7 changes: 2 additions & 5 deletions src/cmd/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,11 @@ func updateScript() {

func swapper(exec_path string) {

regExp, err := regexp.Compile("cocommit_go-darwin")
if err != nil {
log.Fatal(err)
}
regExp := regexp.MustCompile("cocommit-.+")

var new_binary string

err = filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
err := filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
if err == nil && regExp.MatchString(info.Name()) {
new_binary = info.Name()
return nil
Expand Down

0 comments on commit 3862338

Please sign in to comment.