From 6b4b38ada45cd5b108ec6ecda680cb32d33542ea Mon Sep 17 00:00:00 2001 From: Shulhan Date: Thu, 15 Jan 2026 19:26:39 +0700 Subject: spdxconv: set the SCM only during scan command, not on New The Apply command does not require SCM, so no need to initialize it in New. --- spdxconv.go | 32 ++++++++++++++++++-------------- spdxconv_test.go | 11 ++++++++++- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/spdxconv.go b/spdxconv.go index 58f199d..8ffe29b 100644 --- a/spdxconv.go +++ b/spdxconv.go @@ -68,7 +68,10 @@ func Scan(path string) (err error) { return fmt.Errorf(`%s: %w`, logp, err) } - conv.loadReuseConfig() + err = conv.prepareScan() + if err != nil { + return fmt.Errorf(`%s: %w`, logp, err) + } var listFile []string if conv.name == `` { @@ -175,7 +178,9 @@ func New(path string) (conv *SPDXConv, err error) { return nil, fmt.Errorf(`%s: %w`, logp, err) } - conv = &SPDXConv{} + conv = &SPDXConv{ + scm: defaultNoSCM, + } conv.curDir, err = os.Getwd() if err != nil { @@ -202,12 +207,21 @@ func New(path string) (conv *SPDXConv, err error) { return nil, fmt.Errorf(`%s: %w`, logp, err) } + return conv, nil +} + +func (conv *SPDXConv) prepareScan() (err error) { err = conv.scanForSCM(conv.dir, conv.curDir) if err != nil { - return nil, fmt.Errorf(`%s: %w`, logp, err) + return err } - return conv, nil + pathReuseToml := filepath.Join(conv.curDir, ReuseConfigFile) + conv.reuse, err = loadReuseConfig(pathReuseToml) + if err != nil { + return err + } + return nil } // loadConfig load the program [ConfigFile] from the current directory. @@ -229,16 +243,6 @@ func (conv *SPDXConv) loadConfig(dir string) (err error) { return nil } -// loadReuseConfig load the REUSE.toml configuration from current directory. -func (conv *SPDXConv) loadReuseConfig() { - path := filepath.Join(conv.curDir, ReuseConfigFile) - var err error - conv.reuse, err = loadReuseConfig(path) - if err != nil { - return - } -} - // scanForSCM scan for source-code management (SCM) from directory `dir` until // the current working directory. // Currently, only support git. diff --git a/spdxconv_test.go b/spdxconv_test.go index d2389e4..fe8ad1c 100644 --- a/spdxconv_test.go +++ b/spdxconv_test.go @@ -303,6 +303,10 @@ func TestSPDXConv_scanFile(t *testing.T) { if err != nil { t.Fatal(err) } + err = conv.scanForSCM(conv.dir, conv.curDir) + if err != nil { + t.Fatal(err) + } type testCase struct { dir string @@ -370,11 +374,16 @@ func TestSPDXConv_scanDir(t *testing.T) { for _, tc = range listCase { t.Run(tc.dir, func(tt *testing.T) { tt.Chdir(tc.dir) + conv, err = New(`.`) if err != nil { tt.Fatal(err) } - conv.loadReuseConfig() + err = conv.prepareScan() + if err != nil { + t.Fatal(err) + } + got, err = conv.scanDir([]string{`.`}) if err != nil { tt.Fatal(err) -- cgit v1.3