Skip to content

Commit c8c48af

Browse files
committed
Add --generate-commit-name flag
1 parent 560541c commit c8c48af

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed

internal/cmd/scan/scan.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var callgraphGenerateTimeout int
2121
var callgraphUploadTimeout int
2222
var commitAuthor string
2323
var commitName string
24+
var generateCommitNameBool bool
2425
var debug bool
2526
var exclusions = file.Exclusions()
2627
var inclusions = file.Exclusions()
@@ -68,6 +69,7 @@ const (
6869
TagCommitAsReleaseFlag = "tag-commit-as-release"
6970
TagCommitAsReleaseEnv = "TAG_COMMIT_AS_RELEASE"
7071
ExperimentalFlag = "experimental"
72+
GenerateCommitName = "generate-commit-name"
7173
)
7274

7375
var scanCmdError error
@@ -88,6 +90,7 @@ If the given path contains a git repository all flags but "integration" will be
8890

8991
cmd.Flags().StringVarP(&repositoryName, RepositoryFlag, "r", "", "repository name")
9092
cmd.Flags().StringVarP(&commitName, CommitFlag, "c", "", "commit hash")
93+
cmd.Flags().BoolVar(&generateCommitNameBool, GenerateCommitName, false, "auto-generate a commit name if flag is set")
9194
cmd.Flags().StringVarP(&branchName, BranchFlag, "b", "", "branch name")
9295
cmd.Flags().StringVarP(&commitAuthor, CommitAuthorFlag, "a", "", "commit author")
9396
cmd.Flags().StringVarP(&repositoryUrl, RepositoryUrlFlag, "u", "", "repository URL")
@@ -239,6 +242,7 @@ func RunE(s *scan.IScanner) func(_ *cobra.Command, args []string) error {
239242
VersionHint: viper.GetBool(VersionHintFlag),
240243
RepositoryName: viper.GetString(RepositoryFlag),
241244
CommitName: viper.GetString(CommitFlag),
245+
GenerateCommitName: viper.GetBool(GenerateCommitName),
242246
BranchName: viper.GetString(BranchFlag),
243247
CommitAuthor: viper.GetString(CommitAuthorFlag),
244248
RepositoryUrl: viper.GetString(RepositoryUrlFlag),

internal/scan/scanner.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"os"
88
"path/filepath"
9+
"time"
910

1011
"github.com/debricked/cli/internal/callgraph"
1112
"github.com/debricked/cli/internal/callgraph/config"
@@ -60,6 +61,7 @@ type DebrickedOptions struct {
6061
VersionHint bool
6162
RepositoryName string
6263
CommitName string
64+
GenerateCommitName bool
6365
BranchName string
6466
CommitAuthor string
6567
RepositoryUrl string
@@ -103,6 +105,10 @@ func (dScanner *DebrickedScanner) Scan(o IOptions) error {
103105

104106
e, _ := dScanner.ciService.Find()
105107

108+
if dOptions.GenerateCommitName {
109+
SetGeneratedCommitName(&dOptions)
110+
}
111+
106112
debug.Log("Mapping environment variables...", dOptions.Debug)
107113
MapEnvToOptions(&dOptions, e)
108114

@@ -332,6 +338,12 @@ func SetWorkingDirectory(d *DebrickedOptions) error {
332338
return nil
333339
}
334340

341+
func SetGeneratedCommitName(o *DebrickedOptions) {
342+
debug.Log("Overwriting commit name with generated name", o.Debug)
343+
currentTime := time.Now()
344+
o.CommitName = "generated-" + currentTime.Format("2006.01.02-15:04:05")
345+
}
346+
335347
func MapEnvToOptions(o *DebrickedOptions, env env.Env) {
336348
if len(o.RepositoryName) == 0 {
337349
o.RepositoryName = env.Repository

internal/scan/scanner_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,27 @@ var cases = []struct {
519519
},
520520
}
521521

522+
func TestSetGeneratedCommitName(t *testing.T) {
523+
path := testdataNpm
524+
repositoryName := path
525+
opts := DebrickedOptions{
526+
Path: path,
527+
Resolve: false,
528+
Fingerprint: false,
529+
CallGraph: true,
530+
Exclusions: nil,
531+
Inclusions: nil,
532+
RepositoryName: repositoryName,
533+
GenerateCommitName: true,
534+
BranchName: "",
535+
RepositoryUrl: "",
536+
IntegrationName: "",
537+
}
538+
539+
SetGeneratedCommitName(&opts)
540+
assert.Contains(t, opts.CommitName, "generated-")
541+
}
542+
522543
func TestMapEnvToOptions(t *testing.T) {
523544

524545
for _, co := range cases {
@@ -718,6 +739,40 @@ func TestScanWithFingerprintNoEnterprise(t *testing.T) {
718739
assert.Contains(t, cwd, path)
719740
}
720741

742+
func TestScanWithGeneratedCommitName(t *testing.T) {
743+
clientMock := testdata.NewDebClientMock()
744+
addMockedFormatsResponse(clientMock, "yarn\\.lock")
745+
addMockedFileUploadResponse(clientMock)
746+
addMockedFinishResponse(clientMock, http.StatusNoContent)
747+
addMockedStatusResponse(clientMock, http.StatusOK, 100)
748+
749+
scanner := makeScanner(clientMock, nil, nil)
750+
scanner.fingerprint = fingerprint.NewFingerprinter()
751+
752+
cwd, _ := os.Getwd()
753+
defer resetWd(t, cwd)
754+
755+
path := testdataNpm
756+
repositoryName := path
757+
opts := DebrickedOptions{
758+
Path: path,
759+
Resolve: true,
760+
Fingerprint: false,
761+
CallGraph: false,
762+
Exclusions: nil,
763+
Inclusions: nil,
764+
RepositoryName: repositoryName,
765+
GenerateCommitName: true,
766+
BranchName: "",
767+
RepositoryUrl: "",
768+
IntegrationName: "",
769+
}
770+
err := scanner.Scan(opts)
771+
assert.Nil(t, err)
772+
cwd, _ = os.Getwd()
773+
assert.Contains(t, cwd, path)
774+
}
775+
721776
func TestScanWithCallgraph(t *testing.T) {
722777
if runtime.GOOS == windowsOS {
723778
t.Skipf("TestScan is skipped due to Windows env")

0 commit comments

Comments
 (0)