Skip to content

Commit

Permalink
Better error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
vulcan-dev committed Jul 14, 2021
1 parent c3bf7a6 commit cb85621
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 94 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ module main
go 1.16

require (
github.com/KnicKnic/go-powershell v0.0.10
github.com/akavel/rsrc v0.10.2 // indirect
github.com/antonfisher/nested-logrus-formatter v1.3.1
github.com/sirupsen/logrus v1.8.1
github.com/stretchr/testify v1.6.1 // indirect
golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa // indirect
)
19 changes: 9 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
github.com/KnicKnic/go-powershell v0.0.10 h1:M/FfMm3TI55J+mBlK61+nG8M59XRjoQETDfN5Wpnyoo=
github.com/KnicKnic/go-powershell v0.0.10/go.mod h1:1NuEA+s0LRuwaus0jBS5CT5diK5nhds8LdJtYgC0I7U=
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ=
github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6 h1:ZJUmhYTp8GbGC0ViZRc2U+MIYQ8xx9MscsdXnclfIhw=
golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa h1:ZYxPR6aca/uhfRJyaOAtflSHjJYiktO7QnJC5ut7iY4=
golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
153 changes: 79 additions & 74 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,81 +35,57 @@ func main() {
TimestampFormat: "2006-01-02 15:04:05",
TrimMessages: true,
})

log.Infoln("Installer made by Daniel W (Vitex#1248)")

if Update() {
Download()
} else {
response, err := http.Get(url); if err != nil {
log.Errorln(err)
}; defer response.Body.Close()

git := Git{}
if err = json.NewDecoder(response.Body).Decode(&git); err != nil {
log.Errorln(err)
os.Exit(1)
}

log.Infoln("Running with KissMP Version:", git.Version)

cmd := exec.Command(fmt.Sprintf("./Downloads/Extracted/%s/windows/kissmp-bridge.exe", git.Version))
cmdReader, err := cmd.StdoutPipe(); if err != nil {
log.Errorln("Error creating stdoutpipe.", err)
os.Exit(1)
}

scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
log.Infoln(scanner.Text(), "\n")
}
}()
log.Infoln("Installer made by Vitex#1248")

if err = cmd.Start(); err != nil {
log.Errorln("Error starting bridge.", err)
os.Exit(1)
if Update() {
err := Download(); if err != nil {
log.Errorln("Something went wrong:", err.Error())
}

if err = cmd.Wait(); err != nil {
log.Errorln("Error waiting for cmd. (make sure this isn't running anywhere else)", err)
os.Exit(1)
} else {
err := ListenOutput(); if err != nil {
if strings.Contains(err.Error(), "101") {
err = fmt.Errorf("another instance is running")
}

log.Errorln("Something went wrong:", err.Error())
}
}

fmt.Print("Press 'Enter' to continue...")
bufio.NewReader(os.Stdin).ReadBytes('\n')
}

func Update() bool {
utilities := Utilities{}
git := Git{}

return !utilities.Exists(fmt.Sprintf("./Downloads/Extracted/%s", git.Version))
}

func Download() {
func Download() error {
req, err := http.NewRequest("GET", url, nil); if err != nil {
log.Errorln(err)
};

req.Header = http.Header{
"Host": []string{"api.github.com"},
"Content-Type": []string{"application/json"},
"User-Agent": []string{"PostmanRuntime/7.28.0"},
}

client := &http.Client{}
response, err := client.Do(req); if err != nil {
log.Errorln(err)
os.Exit(1)
return err
}

git := Git{}
if err = json.NewDecoder(response.Body).Decode(&git); err != nil {
log.Errorln(err)
os.Exit(1)
return err
}

filename := git.Assets[0].Name

log.Infoln("New version available:", git.Version)

/* Download File */
Expand Down Expand Up @@ -137,12 +113,14 @@ func Download() {

utilities.Unzip(fmt.Sprintf("./Downloads/%s", filename), "./Downloads/Extracted/")
if err := os.Rename(fmt.Sprintf("./Downloads/Extracted/%s", f), fmt.Sprintf("./Downloads/Extracted/%s", git.Version)); err != nil {
log.Errorln("Error renaming dir.", err)
return err
}

/* Remove mod download */
if utilities.Exists(fmt.Sprintf("./Downloads/%s", filename)) {
os.Remove(fmt.Sprintf("./Downloads/%s", filename))
if err := os.Remove(fmt.Sprintf("./Downloads/%s", filename)); err != nil {
return err
}
}

var gameDirectory string = ""
Expand All @@ -154,37 +132,34 @@ func Download() {

/* Move the mod */
tempMod, err := os.Open(fmt.Sprintf("./Downloads/Extracted/%s/KISSMultiplayer.zip", git.Version)); if err != nil {
log.Errorln("Failed moving mod.", err)
os.Exit(1)
return err
}; defer tempMod.Close()

items, _ := ioutil.ReadDir(gameDirectory)
var latestVersionStr string = "0"
var latestVersion float64 = 0
for _, item := range items {
ver, _ := strconv.ParseFloat(item.Name(), 64)
ver, err := strconv.ParseFloat(item.Name(), 64); if err != nil {
return err
}

if ver > latestVersion {
latestVersionStr = fmt.Sprintf("%.2f", ver)
}
}

destination, err := os.Create(fmt.Sprintf("%s\\%s\\mods\\KISSMultiplayer.zip", gameDirectory, latestVersionStr)); if err != nil {
log.Errorln("Failed opening mods directory.", err)
os.Exit(1)
return err
}; defer destination.Close()

_, err = io.Copy(destination, tempMod); if err != nil {
log.Errorln("Failed copying mods.", err)
os.Exit(1)
return err
}

// echo oLink.TargetPath = "%%myPath%%/Downloads/Extracted/%s/windows/kissmp-bridge.exe" >> CreateShortcut.vbs

dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)

dir, err := filepath.Abs(filepath.Dir(os.Args[0])); if err != nil {
return err
}

batchFile := fmt.Sprintf(`
set "myPath=%%~dp0"
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
Expand All @@ -199,28 +174,58 @@ func Download() {
cscript CreateShortcut.vbs
del CreateShortcut.vbs
`, dir, dir, dir)

file, err := os.OpenFile(fmt.Sprintf("%s\\shortcut_%s.bat", dir, git.Version), os.O_RDWR | os.O_CREATE | os.O_TRUNC, 0755); if err != nil {
log.Errorln(err)
os.Exit(1)
return err
}

_, err = file.Write([]byte(batchFile)); if err != nil {
log.Errorln(err)
os.Exit(1)
return err
}; file.Close()

cmd := exec.Command(fmt.Sprintf("%s\\shortcut_%s.bat", dir, git.Version))
_, err = cmd.Output(); if err != nil {
log.Errorln(err.Error())
os.Exit(1)
return err
}

os.Remove(fmt.Sprintf("./shortcut_%s.bat", git.Version))

log.Infoln(fmt.Sprintf("KissMP %s Successfully Installed", git.Version))
log.Infoln("KissMP Bridge Successfully Added to Start Menu")

return err
}

func Uninstall() {

func ListenOutput() error {
response, err := http.Get(url); if err != nil {
log.Errorln(err)
}; defer response.Body.Close()

git := Git{}
if err = json.NewDecoder(response.Body).Decode(&git); err != nil {
return err
}

log.Infoln("Bridge Started (", git.Version, ")")

cmd := exec.Command(fmt.Sprintf("./Downloads/Extracted/%s/windows/kissmp-bridge.exe", git.Version))
cmdReader, err := cmd.StdoutPipe(); if err != nil {
return err
}

scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
log.Infoln(scanner.Text(), "\n")
}
}()

if err = cmd.Start(); err != nil {
return err
}

if err = cmd.Wait(); err != nil {
return err
}

return err
}
16 changes: 8 additions & 8 deletions utilities.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ func (utilities *Utilities) DownloadFile(url string, path string) error {
response, err := http.Get(url); if err != nil {
return err
}; defer response.Body.Close()

/* Create the File */
out, err := os.Create(path); if err != nil {
return err
}; defer out.Close()

_, err = io.Copy(out, response.Body)

return err
}

Expand Down Expand Up @@ -70,18 +70,18 @@ func (utilities *Utilities) DeleteDirectory(dir string) error {
d, err := os.Open(dir)
if err != nil {
return err
}
defer d.Close()
names, err := d.Readdirnames(-1)
if err != nil {
}; defer d.Close()

names, err := d.Readdirnames(-1); if err != nil {
return err
}

for _, name := range names {
err = os.RemoveAll(filepath.Join(dir, name))
if err != nil {
err = os.RemoveAll(filepath.Join(dir, name)); if err != nil {
return err
}
}

return nil
}

Expand Down

0 comments on commit cb85621

Please sign in to comment.