Skip to content

Commit

Permalink
#15 - Support .jabbarc
Browse files Browse the repository at this point in the history
  • Loading branch information
shyiko committed Nov 11, 2016
1 parent 5c687bc commit 1f53ef8
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 10 deletions.
6 changes: 4 additions & 2 deletions glide.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions glide.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ import:
- package: github.com/Sirupsen/logrus
- package: github.com/mitchellh/go-homedir
- package: github.com/mitchellh/ioprogress
- package: gopkg.in/yaml.v2
57 changes: 49 additions & 8 deletions jabba.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"io/ioutil"
"strings"
"bytes"
"gopkg.in/yaml.v2"
)

var version string
Expand Down Expand Up @@ -52,10 +53,16 @@ func main() {
Use: "install [version to install]",
Short: "Download and install JDK",
RunE: func(cmd *cobra.Command, args []string) error {
var ver string
if len(args) == 0 {
return pflag.ErrHelp
ver = rc().JDK
if ver == "" {
return pflag.ErrHelp
}
} else {
ver = args[0]
}
ver, err := command.Install(args[0])
ver, err := command.Install(ver)
if err != nil {
log.Fatal(err)
}
Expand Down Expand Up @@ -122,12 +129,19 @@ func main() {
Use: "use [version to use]",
Short: "Modify PATH & JAVA_HOME to use specific JDK",
RunE: func(cmd *cobra.Command, args []string) error {
var ver string
if len(args) == 0 {
return pflag.ErrHelp
ver = rc().JDK
if ver == "" {
return pflag.ErrHelp
}
} else {
ver = args[0]
}
return use(args[0])
return use(ver)
},
Example: " jabba use 1.8",
Example: " jabba use 1.8\n" +
" jabba use ~1.8.73 # same as \">=1.8.73 <1.9.0\"",
},
&cobra.Command{
Use: "current",
Expand Down Expand Up @@ -223,10 +237,16 @@ func main() {
Use: "which [version]",
Short: "Display path to installed JDK",
RunE: func(cmd *cobra.Command, args []string) error {
var ver string
if len(args) == 0 {
return pflag.ErrHelp
ver = rc().JDK
if ver == "" {
return pflag.ErrHelp
}
} else {
ver = args[0]
}
dir, _ := command.Which(args[0])
dir, _ := command.Which(ver)
if dir != "" {
fmt.Println(dir)
}
Expand All @@ -238,8 +258,29 @@ func main() {
rootCmd.PersistentFlags().String("fd3", "", "")
rootCmd.PersistentFlags().MarkHidden("fd3")
if err := rootCmd.Execute(); err != nil {
os.Exit(-1);
os.Exit(-1)
}
}

type jabbarc struct {
JDK string
}

func rc() (rc jabbarc) {
b, err := ioutil.ReadFile(".jabbarc")
if err != nil {
return
}
// content can be a string (jdk version)
err = yaml.Unmarshal(b, &rc.JDK)
if err != nil {
// or a struct
err = yaml.Unmarshal(b, &rc)
if err != nil {
log.Fatal(".jabbarc is not valid")
}
}
return
}

func use(ver string) error {
Expand Down
7 changes: 7 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ jabba ls
# switch to a different version of JDK
jabba use 1.6.65

echo "1.8" > .jabbarc
# switch to the JDK specified in .jabbarc (since 0.5.0)
jabba use

# list available JDK's
jabba ls-remote

Expand All @@ -80,6 +84,9 @@ jabba ls-remote
jabba alias default 1.6.65
```

> `.jabbarc` has to be a valid YAML file. JDK version can be specified as `jdk: 1.8` or simply as `1.8`
(same as `~1.8`, `1.8.x` `">=1.8.0 <1.9.0"` (mind the quotes)).
> jsyk: **jabba** keeps everything under `~/.jabba` (on Linux/Mac OS X) / `%USERPROFILE%/.jabba` (on Windows).
For more information see `jabba --help`.
Expand Down

0 comments on commit 1f53ef8

Please sign in to comment.