diff options
Diffstat (limited to 'spdxconv.go')
| -rw-r--r-- | spdxconv.go | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/spdxconv.go b/spdxconv.go index dc0f31d..be13a2c 100644 --- a/spdxconv.go +++ b/spdxconv.go @@ -7,6 +7,7 @@ import ( "bytes" "fmt" "log" + "maps" "os" "path/filepath" "slices" @@ -19,6 +20,8 @@ import ( // ConfigFile the file name for configuration file. const ConfigFile = `spdxconv.cfg` +// File end with ".license" is SPDX specific file that contains only +// identifiers. var suffixLicense = `.license` // SPDXConv the main type for converting files to SPDX format. @@ -279,15 +282,13 @@ func (conv *SPDXConv) scanDir(listDir []string) (listFile []string, err error) { listde, err = os.ReadDir(dir) if err != nil { - return listFile, err + return nil, err } var listFileLicense = make(map[string]struct{}) - var listName []string + var listNamePath = map[string]string{} for _, de = range listde { var name = de.Name() - // File end with ".license" is SPDX specific file that - // contains only identifiers. if strings.HasSuffix(name, suffixLicense) { listFileLicense[name] = struct{}{} continue @@ -299,22 +300,23 @@ func (conv *SPDXConv) scanDir(listDir []string) (listFile []string, err error) { if ok { continue } - listName = append(listName, name) - name = filepath.Join(dir, name) + var fullpath = filepath.Join(dir, name) if de.IsDir() { - listDir = append(listDir, name) + listDir = append(listDir, fullpath) continue } - listFile = append(listFile, name) + listNamePath[name] = fullpath } // Remove the file that have the spdx .license file. - for x, name := range listName { - _, ok = listFileLicense[name+suffixLicense] - if ok { - listFile = slices.Delete(listFile, x, x+1) - } + for name := range listFileLicense { + name = strings.TrimSuffix(name, suffixLicense) + delete(listNamePath, name) + } + for v := range maps.Values(listNamePath) { + listFile = append(listFile, v) } } + slices.Sort(listFile) return listFile, nil } |
