Skip to content
This repository has been archived by the owner on Apr 27, 2022. It is now read-only.

Commit

Permalink
[fix] Refactor to use shared code + allow users to bypass dirty dir c…
Browse files Browse the repository at this point in the history
…heck (#23)

[fix] Refactor to use shared code + allow users to bypass dirty dir checkgo-git doesn't seem to properly respect .gitignores in nested directories. For now, let's ask users to confirm if we should proceed
  • Loading branch information
Eduardo Lopez authored Apr 2, 2020
1 parent 69ec9e8 commit 159760d
Show file tree
Hide file tree
Showing 73 changed files with 12,343 additions and 462 deletions.
61 changes: 20 additions & 41 deletions cmd/bump.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ import (
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
git "gopkg.in/src-d/go-git.v4"
"gopkg.in/src-d/go-git.v4/plumbing"
"gopkg.in/src-d/go-git.v4/plumbing/object"
)

func init() {
rootCmd.AddCommand(bumpCmd)
}

var (
initialVersion = "0.0.0"
)

// bumpCmd represents the bump command
var bumpCmd = &cobra.Command{
Use: "bump",
Expand Down Expand Up @@ -55,7 +58,12 @@ var bumpCmd = &cobra.Command{
}

if !s.IsClean() {
return errors.New("please release only from a clean working directory (no uncommitted changes)")
// HACK(el): go-git does not appear to handle nested .gitignores well
// for now, prompt users instead of erroring out immediately
ignore := prompt.Confirm("your working directory appears to be dirty (uncommited changes), are you sure you want to proceed?")
if !ignore {
return errors.New("please release only from a clean working directory (no uncommitted changes)")
}
}

headRef, err := repo.Head()
Expand All @@ -78,46 +86,12 @@ var bumpCmd = &cobra.Command{
fmt.Println("SHAs on branches could go away if a branch is rebased or squashed.")
}

tagIndex := make(map[string]string)

tags, err := repo.Tags()
commit := masterCommit
latestVersionTag, latestVersionHash, err := util.LatestTagCommitHash(repo)
if err != nil {
return err
}

tags.ForEach(func(tag *plumbing.Reference) error {
str := strings.Replace(tag.Name().String(), "refs/tags/v", "", -1)
_, err := semver.Parse(str)
if err != nil {
fmt.Printf("Error parsing version %s\n", str)
} else {
tagIndex[tag.Hash().String()] = str
}
return nil
})

commit := masterCommit
var latestVersionTag string
var latestVersionHash string

// TODO refactor to use repo.Log()
for {
if v, ok := tagIndex[commit.Hash.String()]; ok {
latestVersionTag = v
latestVersionHash = commit.Hash.String()
break
}

if len(commit.ParentHashes) == 0 {
// When we get here we should be at the beginning of this repo's history
break
}
commit, err = util.GetLatestParentCommit(commit)
if err != nil {
return err
}
}

f, err := os.Open("VERSION")
if err != nil {
return err
Expand All @@ -128,7 +102,7 @@ var bumpCmd = &cobra.Command{
}
fileVersion := strings.TrimSpace(string(d))

if latestVersionTag != fileVersion {
if latestVersionTag != nil && *latestVersionTag != fileVersion {
fmt.Printf("latestVersionTag %#v\n", latestVersionTag)
fmt.Printf("fileversion %#v\n", fileVersion)
return errors.New("tag does not match VERSION file")
Expand All @@ -140,7 +114,7 @@ var bumpCmd = &cobra.Command{
// TODO check that we actually have commits since the last release
commit = masterCommit
for {
if commit.Hash.String() == latestVersionHash {
if commit.Hash.String() == latestVersionHash.String() {
break
}

Expand All @@ -164,7 +138,12 @@ var bumpCmd = &cobra.Command{

pretty.Print(feature)

ver, err := semver.Make(latestVersionTag)
// at this point, if latestVersionTag == nil then set to 0.0.1
if latestVersionTag == nil {
latestVersionTag = &initialVersion
}

ver, err := semver.Make(*latestVersionTag)
if err != nil {
return err
}
Expand Down
15 changes: 7 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ go 1.14

require (
github.com/blang/semver v3.5.1+incompatible
github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/kr/pretty v0.1.0
github.com/pkg/errors v0.8.1
github.com/segmentio/go-prompt v0.0.0-20161017233205-f0d19b6901ad
github.com/sirupsen/logrus v1.4.2
github.com/spf13/cobra v0.0.4
github.com/stretchr/testify v1.3.0
github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c // indirect
github.com/kr/pretty v0.2.0
github.com/pkg/errors v0.9.1
github.com/segmentio/go-prompt v1.2.1-0.20161017233205-f0d19b6901ad
github.com/sirupsen/logrus v1.5.0
github.com/spf13/cobra v0.0.7
github.com/stretchr/testify v1.5.1
gopkg.in/src-d/go-git.v4 v4.13.1
)
132 changes: 109 additions & 23 deletions go.sum

Large diffs are not rendered by default.

26 changes: 1 addition & 25 deletions vendor/github.com/howeyc/gopass/README.md

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

16 changes: 16 additions & 0 deletions vendor/github.com/howeyc/gopass/pass.go

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

16 changes: 16 additions & 0 deletions vendor/github.com/howeyc/gopass/terminal.go

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

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

This file was deleted.

2 changes: 0 additions & 2 deletions vendor/github.com/kr/pretty/License

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

3 changes: 1 addition & 2 deletions vendor/github.com/kr/pretty/formatter.go

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

6 changes: 4 additions & 2 deletions vendor/github.com/kr/pretty/go.mod

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

3 changes: 3 additions & 0 deletions vendor/github.com/kr/pretty/go.sum

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

2 changes: 1 addition & 1 deletion vendor/github.com/kr/pretty/pretty.go

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

11 changes: 3 additions & 8 deletions vendor/github.com/pkg/errors/.travis.yml

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

44 changes: 44 additions & 0 deletions vendor/github.com/pkg/errors/Makefile

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

11 changes: 9 additions & 2 deletions vendor/github.com/pkg/errors/README.md

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

8 changes: 7 additions & 1 deletion vendor/github.com/pkg/errors/errors.go

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

Loading

0 comments on commit 159760d

Please sign in to comment.