コード例 #1
0
ファイル: git.go プロジェクト: compotlab/synopsis
func (git *Git) getComposerInformation() (packages.Composer, error) {
	cmd := exec.Command("git", "show", git.Reference+":composer.json")
	cmd.Dir = git.RepoDir

	out, err := cmd.CombinedOutput()
	if err != nil {
		return packages.Composer{}, fmt.Errorf("git show %s. %s", git.Reference+":composer.json", err)
	}

	co := packages.Composer{}

	err = json.Unmarshal(out, &co)
	if err != nil {
		return packages.Composer{}, err
	}

	if co.Time == "" {
		cmd = exec.Command("git", "log", "-1", "--format=%at", git.Reference)
		cmd.Dir = git.RepoDir

		out, err := cmd.CombinedOutput()
		if err != nil {
			return packages.Composer{}, fmt.Errorf("git log -1 --format. %s", err)
		}

		t, _ := strconv.ParseInt(strings.TrimSpace(string(out)), 10, 64)
		co.Time = time.Unix(t, 0).String()
	}

	git.Source = map[string]string{
		"type":      "git",
		"url":       git.URL,
		"reference": git.Reference,
	}

	co.Source = git.Source
	co.Version = git.Version
	co.VersionNormalized = git.VersionNormalized

	return co, nil
}