소스 검색

add last version

Victor Vieux 12 년 전
부모
커밋
64450ae3f8
2개의 변경된 파일31개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      commands.go
  2. 22 0
      utils/utils.go

+ 9 - 0
commands.go

@@ -407,6 +407,15 @@ func (cli *DockerCli) CmdVersion(args ...string) error {
 	if out.GoVersion != "" {
 	if out.GoVersion != "" {
 		fmt.Fprintf(cli.out, "Go version: %s\n", out.GoVersion)
 		fmt.Fprintf(cli.out, "Go version: %s\n", out.GoVersion)
 	}
 	}
+
+	release := utils.GetReleaseVersion()
+	if release != "" {
+		fmt.Fprintf(cli.out, "Last stable version: %s", release)
+		if VERSION != release || out.Version != release {
+			fmt.Fprintf(cli.out, ", please update docker")
+		}
+		fmt.Fprintf(cli.out, "\n")
+	}
 	return nil
 	return nil
 }
 }
 
 

+ 22 - 0
utils/utils.go

@@ -687,3 +687,25 @@ func ParseHost(host string, port int, addr string) string {
 	}
 	}
 	return fmt.Sprintf("tcp://%s:%d", host, port)
 	return fmt.Sprintf("tcp://%s:%d", host, port)
 }
 }
+
+func GetReleaseVersion() string {
+	type githubTag struct {
+		Name string `json:"name"`
+	}
+
+	resp, err := http.Get("https://api.github.com/repos/dotcloud/docker/tags")
+	if err != nil {
+		return ""
+	}
+	defer resp.Body.Close()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return ""
+	}
+	var tags []githubTag
+	err = json.Unmarshal(body, &tags)
+	if err != nil || len(tags) == 0 {
+		return ""
+	}
+	return strings.TrimPrefix(tags[0].Name, "v")
+}