Skip to content

Commit

Permalink
Upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
kzaitsev committed Mar 13, 2016
1 parent 08e1ffe commit e7eab22
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 31 deletions.
9 changes: 8 additions & 1 deletion grvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import (
)

const (
rubyBuildRepo = "https://github.com/rbenv/ruby-build.git"
rubyBuildRepo = "https://github.com/rbenv/ruby-build.git"
latestReleaseUrl = "https://api.github.com/repos/Bugagazavr/grvm/releases/latest"
)

// System
Expand Down Expand Up @@ -86,6 +87,12 @@ func main() {
Usage: "Instqalls ruby",
Action: GetInstall,
},
{
Name: "upgrade",
Aliases: []string{"ug"},
Usage: "Get upgrade information",
Action: GetUpgrade,
},
}

app.Run(os.Args)
Expand Down
59 changes: 35 additions & 24 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,33 @@ function tmpCleanup {
[ -f "/tmp/grvm.tar.gz" ] && rm -rf /tmp/grvm.tar.gz
}

function grvmInstall {
echo "Extracting"
mkdir -p /tmp/grvm
tar -xf /tmp/grvm.tar.gz --directory=/tmp/grvm

if [ ! -d "$HOME/.grvm" ]; then
echo "Creating $HOME/.grvm directory"
mkdir -p $HOME/.grvm/{bin,scripts}
else
echo "Cleanup existing $HOME/.grvm directory"
[ -d "$HOME/.grvm/bin" ] && rm -f $HOME/.grvm/bin/*
[ -d "$HOMR/.grvm/scripts" ] && rm -f $HOME/.grvm/scripts/*
mkdir -p $HOME/.grvm/{bin,scripts}
fi

echo "Install GRVM"
cp /tmp/grvm/bin/grvm $HOME/.grvm/bin/grvm
cp /tmp/grvm/scripts/grvm $HOME/.grvm/scripts/grvm

echo "Delete installtion files"
tmpCleanup

source $HOME/.grvm/scripts/grvm
__grvmFn doctor > /dev/null
echo "GRVM has been installed"
}

case $1 in
"devinstall")
go build --ldflags '-X main.version=dev' -o grvm *.go
Expand All @@ -55,6 +82,13 @@ case $1 in
cp grvm $HOME/.grvm/bin/grvm
$HOME/.grvm/bin/grvm doctor
;;
"upgrade")
echo "Downloading upgrade $grvm_upgrade_url"
curl -L -s $grvm_upgrade_url > /tmp/grvm.tar.gz
echo "Downloading finished"

grvmInstall
;;
*)
echo "Prepare to install GRVM"
tmpCleanup
Expand All @@ -64,29 +98,6 @@ case $1 in
curl -L -s $downloadUrl > /tmp/grvm.tar.gz
echo "Downloading finished"

echo "Extracting"
mkdir -p /tmp/grvm
tar -xf /tmp/grvm.tar.gz --directory=/tmp/grvm

if [ ! -d "$HOME/.grvm" ]; then
echo "Creating $HOME/.grvm directory"
mkdir -p $HOME/.grvm/{bin,scripts}
else
echo "Cleanup existing $HOME/.grvm directory"
[ -d "$HOME/.grvm/bin" ] && rm -f $HOME/.grvm/bin/*
[ -d "$HOMR/.grvm/scripts" ] && rm -f $HOME/.grvm/scripts/*
mkdir -p $HOME/.grvm/{bin,scripts}
fi

echo "Install GRVM"
cp /tmp/grvm/bin/grvm $HOME/.grvm/bin/grvm
cp /tmp/grvm/scripts/grvm $HOME/.grvm/scripts/grvm

echo "Delete installtion files"
tmpCleanup

source $HOME/.grvm/scripts/grvm
__grvmFn doctor > /dev/null
echo "GRVM has been installed"
grvmInstall
;;
esac
10 changes: 4 additions & 6 deletions scripts/grvm
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ function __grvmEval {
}

function __grvmUpgrade {
availableVersion=$(curl -s https://api.github.com/repos/Bugagazavr/grvm/releases/latest | grep 'tag_name' | cut -d\" -f4 | tail -c +2)
currentVersion=$(__grvmFn --version | awk '{print $3}')
arg=`$HOME/.grvm/bin/grvm -s upgrade`
__grvmEval $arg

if [[ "$availableVersion" == "$currentVersion" ]]; then
echo "You have latest GRVM $currentVersion"
else
curl -s https://raw.githubusercontent.com/Bugagazavr/grvm/master/install.sh | bash --
if [ ! -z "$grvm_upgrade_version" ] && [ ! -z "$grvm_upgrade_url" ]; then
curl -s https://raw.githubusercontent.com/Bugagazavr/grvm/master/install.sh | bash -s upgrade
fi
}

Expand Down
63 changes: 63 additions & 0 deletions upgrade.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package main

import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"runtime"
"strings"

"github.com/codegangsta/cli"
)

type Asset struct {
Name string `json:"name"`
DownloadUrl string `json:"browser_download_url"`
}

type Release struct {
TagName string `json:"tag_name"`
Assets []Asset `json:"assets"`
}

func GetUpgrade(c *cli.Context) {
resp, err := http.Get(latestReleaseUrl)
if err != nil {
Print(c, err.Error())
os.Exit(1)
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
Print(c, err.Error())
os.Exit(1)
}

var release Release
if err := json.Unmarshal(body, &release); err != nil {
Print(c, err.Error())
os.Exit(1)
}

var releaseVersion = strings.TrimPrefix(release.TagName, "v")

if releaseVersion == version {
Print(c, "You have already latest version:", releaseVersion)
os.Exit(0)
}

for _, asset := range release.Assets {
if strings.Contains(asset.Name, runtime.GOARCH) && strings.Contains(asset.Name, runtime.GOOS) {
if c.GlobalBool("shell") {
fmt.Println(Export("grvm_upgrade_url", asset.DownloadUrl))
fmt.Println(Export("grvm_upgrade_version", releaseVersion))
break
} else {
fmt.Println("New version available:", asset.DownloadUrl)
}
}
}
}

0 comments on commit e7eab22

Please sign in to comment.