Skip to content

Commit

Permalink
revert and save
Browse files Browse the repository at this point in the history
  • Loading branch information
walteh committed Nov 23, 2023
1 parent 5b308f8 commit 14679db
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 62 deletions.
11 changes: 11 additions & 0 deletions calculate.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ type CalculationOutput struct {
MergeTags []string
}

func (me *CalculationOutput) CurrentBuildTag() string {
if len(me.HeadTags) == 0 {
if len(me.MergeTags) == 0 {
return ""
} else {
return me.MergeTags[0]
}
}
return me.HeadTags[0]
}

func (out *CalculationOutput) ApplyRefs(opts RefProvider) Tags {
tags := make(Tags, 0)
for _, tag := range out.BaseTags {
Expand Down
20 changes: 19 additions & 1 deletion cmd/simver_github_actions/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func main() {

zerolog.SetGlobalLevel(zerolog.DebugLevel)

_, tagreader, tagwriter, _, prr, err := gitexec.BuildGitHubActionsProviders(os.Getenv("GITHUB_ENV"))
_, tagreader, tagwriter, _, prr, err := gitexec.BuildGitHubActionsProviders()
if err != nil {
zerolog.Ctx(ctx).Error().Err(err).Msg("error creating provider")
os.Exit(1)
Expand All @@ -45,4 +45,22 @@ func main() {
os.Exit(1)
}

// save current build tag to .simver

f, err := os.Create(".simver")
if err != nil {
zerolog.Ctx(ctx).Error().Err(err).Msgf("error creating .simver file: %v", err)
fmt.Println(terrors.FormatErrorCaller(err))
os.Exit(1)
}

defer f.Close()

_, err = f.WriteString(tt.CurrentBuildTag())
if err != nil {
zerolog.Ctx(ctx).Error().Err(err).Msgf("error writing .simver file: %v", err)
fmt.Println(terrors.FormatErrorCaller(err))
os.Exit(1)
}

}
79 changes: 18 additions & 61 deletions gitexec/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,43 +10,14 @@ import (
"github.com/walteh/simver"
)

func BuildGitHubActionsProviders(actionEnvFile string) (simver.GitProvider, simver.TagReader, simver.TagWriter, simver.PRProvider, simver.PRResolver, error) {
func BuildGitHubActionsProviders() (simver.GitProvider, simver.TagReader, simver.TagWriter, simver.PRProvider, simver.PRResolver, error) {

// load the env file
data, err := os.ReadFile(actionEnvFile)
if err != nil {
return nil, nil, nil, nil, nil, errors.Wrap(err, "error reading action env file")
}

env := map[string]string{}

// split the env file into lines
lines := strings.Split(string(data), "\n")

// parse the env file
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" {
continue
}

parts := strings.SplitN(line, "=", 2)
if len(parts) != 2 {
return nil, nil, nil, nil, nil, errors.New("invalid line in action env file: " + line)
}

key := parts[0]
value := parts[1]

env[key] = value
}
token := os.Getenv("GITHUB_TOKEN")
repoPath := os.Getenv("GITHUB_WORKSPACE")
readOnly := os.Getenv("SIMVER_READ_ONLY")

token := env["GITHUB_TOKEN"]
repoPath := env["GITHUB_WORKSPACE"]
readOnly := env["SIMVER_READ_ONLY"]

org := env["GITHUB_REPOSITORY_OWNER"]
repo := env["GITHUB_REPOSITORY"]
org := os.Getenv("GITHUB_REPOSITORY_OWNER")
repo := os.Getenv("GITHUB_REPOSITORY")

repo = strings.TrimPrefix(repo, org+"/")

Expand Down Expand Up @@ -80,34 +51,22 @@ func BuildGitHubActionsProviders(actionEnvFile string) (simver.GitProvider, simv
return nil, nil, nil, nil, nil, errors.Wrap(err, "error creating gh provider")
}

prr := &GitHubActionsPullRequestResolver{
gh: gh,
git: git,
SHA: env["GITHUB_SHA"],
REF: env["GITHUB_REF"],
HEAD_REF: env["GITHUB_HEAD_REF"],
}

gha, err := WrapGitProviderInGithubActions(git, prr)
gha, err := WrapGitProviderInGithubActions(git)
if err != nil {
return nil, nil, nil, nil, nil, errors.Wrap(err, "error creating gh provider")
}

return gha, git, git, gh, prr, nil
return gha, git, git, gh, &GitHubActionsPullRequestResolver{gh, git}, nil
}

type GitHubActionsPullRequestResolver struct {
gh simver.PRProvider
git simver.GitProvider
REF string
HEAD_REF string
SHA string
GITHUB_ACTIONS string
gh simver.PRProvider
git simver.GitProvider
}

func (p *GitHubActionsPullRequestResolver) CurrentPR(ctx context.Context) (*simver.PRDetails, error) {

head_ref := p.HEAD_REF
head_ref := os.Getenv("GITHUB_REF")

if head_ref != "" && strings.HasPrefix(head_ref, "refs/pull/") {
// this is easy, we know that this is a pr event
Expand Down Expand Up @@ -138,7 +97,7 @@ func (p *GitHubActionsPullRequestResolver) CurrentPR(ctx context.Context) (*simv

branch := strings.TrimPrefix(head_ref, "refs/heads/")

sha := p.SHA
sha := os.Getenv("GITHUB_SHA")

pr, exists, err := p.gh.PRDetailsByCommit(ctx, sha)
if err != nil {
Expand Down Expand Up @@ -167,16 +126,14 @@ func (p *GitHubActionsPullRequestResolver) CurrentPR(ctx context.Context) (*simv

type gitProviderGithubActions struct {
internal simver.GitProvider
pr *GitHubActionsPullRequestResolver
}

var _ simver.GitProvider = (*gitProviderGithubActions)(nil)

func WrapGitProviderInGithubActions(ref simver.GitProvider, pr *GitHubActionsPullRequestResolver) (simver.GitProvider, error) {
if pr.GITHUB_ACTIONS == "true" {
func WrapGitProviderInGithubActions(ref simver.GitProvider) (simver.GitProvider, error) {
if os.Getenv("GITHUB_ACTIONS") == "true" {
return &gitProviderGithubActions{
internal: ref,
pr: pr,
}, nil
} else {
return nil, errors.New("not running in GitHub Actions")
Expand All @@ -185,11 +142,11 @@ func WrapGitProviderInGithubActions(ref simver.GitProvider, pr *GitHubActionsPul

// Branch implements simver.GitProvider.
func (me *gitProviderGithubActions) Branch(ctx context.Context) (string, error) {
head_ref := me.pr.HEAD_REF
head_ref := os.Getenv("GITHUB_HEAD_REF")
if head_ref != "" {
return head_ref, nil
}
return me.pr.REF, nil
return os.Getenv("GITHUB_REF"), nil
}

// CommitFromRef implements simver.GitProvider.
Expand All @@ -199,11 +156,11 @@ func (me *gitProviderGithubActions) CommitFromRef(ctx context.Context, ref strin

// GetHeadRef implements simver.GitProvider.
func (me *gitProviderGithubActions) GetHeadRef(ctx context.Context) (string, error) {
head_ref := me.pr.HEAD_REF
head_ref := os.Getenv("GITHUB_HEAD_REF")
if head_ref != "" {
return head_ref, nil
}
return me.pr.REF, nil
return os.Getenv("GITHUB_REF"), nil
}

func (me *gitProviderGithubActions) RepoName(ctx context.Context) (string, string, error) {
Expand Down

0 comments on commit 14679db

Please sign in to comment.