From 92136d49fda763f5157c6437c998d7f7a9edf1e8 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 2 Apr 2015 12:48:22 -0700 Subject: [PATCH] Update cli to minio-io/cli --- Godeps/Godeps.json | 4 +- .../src/github.com/minio-io/cli/app.go | 7 +- .../src/github.com/minio-io/cli/help.go | 9 ++- buildscripts/git-commit-id.sh | 3 +- main.go | 74 ++++++++++++++++++- 5 files changed, 86 insertions(+), 11 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 766cf5978..299d7b306 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -23,8 +23,8 @@ }, { "ImportPath": "github.com/minio-io/cli", - "Comment": "1.2.0-99-g1ee5c11", - "Rev": "1ee5c115af7856a16f133e2f2d3d9f91895c2ddb" + "Comment": "1.2.0-100-g6d6f8d3", + "Rev": "6d6f8d3cc162bfcb60379888e2f37d73ff6a6253" }, { "ImportPath": "github.com/minio-io/erasure", diff --git a/Godeps/_workspace/src/github.com/minio-io/cli/app.go b/Godeps/_workspace/src/github.com/minio-io/cli/app.go index cd2900519..96dee73b5 100644 --- a/Godeps/_workspace/src/github.com/minio-io/cli/app.go +++ b/Godeps/_workspace/src/github.com/minio-io/cli/app.go @@ -3,12 +3,13 @@ package cli import ( "fmt" "io" - "io/ioutil" "os" "strings" + "time" + + "io/ioutil" "text/tabwriter" "text/template" - "time" ) // App is the main structure of a cli application. It is recomended that @@ -44,6 +45,8 @@ type App struct { CommandNotFound func(context *Context, command string) // Compilation date Compiled time.Time + // ExtraInfo pass additional info as a key value map + ExtraInfo map[string]string // List of all authors who contributed Authors []Author // Name of Author (Note: Use App.Authors, this is deprecated) diff --git a/Godeps/_workspace/src/github.com/minio-io/cli/help.go b/Godeps/_workspace/src/github.com/minio-io/cli/help.go index a6083fcb1..f0224646f 100644 --- a/Godeps/_workspace/src/github.com/minio-io/cli/help.go +++ b/Godeps/_workspace/src/github.com/minio-io/cli/help.go @@ -14,9 +14,12 @@ USAGE: VERSION: {{.Version}} -AUTHOR(S): - {{range .Authors}}{{ . }} {{end}} - +BUILD: + {{.Compiled}} +{{range $key, $value := .ExtraInfo}} +{{ $key }}: + {{ $value }} +{{ end }} COMMANDS: {{range .Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}} {{end}}{{if .Flags}} diff --git a/buildscripts/git-commit-id.sh b/buildscripts/git-commit-id.sh index 37daea45c..ddf75f2fb 100644 --- a/buildscripts/git-commit-id.sh +++ b/buildscripts/git-commit-id.sh @@ -10,10 +10,9 @@ cat > $CONST_FILE < (1024 * 1024 * 1024 * 1024): + result = fmt.Sprintf("%.02f TB", float64(i)/1024/1024/1024/1024) + case i > (1024 * 1024 * 1024): + result = fmt.Sprintf("%.02f GB", float64(i)/1024/1024/1024) + case i > (1024 * 1024): + result = fmt.Sprintf("%.02f MB", float64(i)/1024/1024) + case i > 1024: + result = fmt.Sprintf("%.02f KB", float64(i)/1024) + default: + result = fmt.Sprintf("%d B", i) + } + result = strings.Trim(result, " ") + return +} + +// Tries to get os/arch/platform specific information +// Returns a map of current os/arch/platform/memstats +func getSystemData() map[string]string { + host, err := os.Hostname() + if err != nil { + host = "" + } + memstats := &runtime.MemStats{} + runtime.ReadMemStats(memstats) + mem := fmt.Sprintf("Used: %s | Allocated: %s | Used-Heap: %s | Allocated-Heap: %s", + formatBytes(int64(memstats.Alloc)), + formatBytes(int64(memstats.TotalAlloc)), + formatBytes(int64(memstats.HeapAlloc)), + formatBytes(int64(memstats.HeapSys))) + platform := fmt.Sprintf("Host: %s | OS: %s | Arch: %s", + host, + runtime.GOOS, + runtime.GOARCH) + goruntime := fmt.Sprintf("Version: %s | CPUs: %s", runtime.Version(), strconv.Itoa(runtime.NumCPU())) + return map[string]string{ + "PLATFORM": platform, + "RUNTIME": goruntime, + "MEM": mem, + } +} + func main() { // set up iodine - iodine.SetGlobalState("minio.git", gitCommitHash) + iodine.SetGlobalState("minio.git", minioGitCommitHash) iodine.SetGlobalState("minio.starttime", time.Now().Format(time.RFC3339)) // set up app app := cli.NewApp() app.Name = "minio" - app.Version = gitCommitHash + app.Version = minioGitCommitHash app.Author = "Minio.io" app.Usage = "Minimalist Object Storage" app.EnableBashCompletion = true app.Flags = flags app.Action = runCmd + app.Before = func(c *cli.Context) error { + globalDebugFlag = c.GlobalBool("debug") + if globalDebugFlag { + app.ExtraInfo = getSystemData() + } + return nil + } err := app.Run(os.Args) if err != nil { log.Error.Println(err)