diff --git a/cmd/csaf_downloader/config.go b/cmd/csaf_downloader/config.go index fdf3099..f8adb6c 100644 --- a/cmd/csaf_downloader/config.go +++ b/cmd/csaf_downloader/config.go @@ -29,6 +29,7 @@ type config struct { Rate *float64 `long:"rate" short:"r" description:"The average upper limit of https operations per second (defaults to unlimited)" toml:"rate"` Worker int `long:"worker" short:"w" description:"NUMber of concurrent downloads" value-name:"NUM" toml:"worker"` Range *models.TimeRange `long:"timerange" short:"t" description:"RANGE of time from which advisories to download" value-name:"RANGE" toml:"timerange"` + Folder string `long:"folder" short:"f" description:"Download into a given FOLDER" value-name:"FOLDER" toml:"folder"` ExtraHeader http.Header `long:"header" short:"H" description:"One or more extra HTTP header fields" toml:"header"` diff --git a/cmd/csaf_downloader/downloader.go b/cmd/csaf_downloader/downloader.go index cabe2fe..8c5312b 100644 --- a/cmd/csaf_downloader/downloader.go +++ b/cmd/csaf_downloader/downloader.go @@ -474,8 +474,15 @@ nextAdvisory: initialReleaseDate = initialReleaseDate.UTC() // Write advisory to file + newDir := path.Join(d.directory, lower) + + // Do we have a configured destination folder? + if d.cfg.Folder != "" { + newDir = path.Join(newDir, d.cfg.Folder) + } else { + newDir = path.Join(newDir, strconv.Itoa(initialReleaseDate.Year())) + } - newDir := path.Join(d.directory, lower, strconv.Itoa(initialReleaseDate.Year())) if newDir != lastDir { if err := d.mkdirAll(newDir, 0755); err != nil { errorCh <- err diff --git a/docs/csaf_downloader.md b/docs/csaf_downloader.md index 8874df1..bdab206 100644 --- a/docs/csaf_downloader.md +++ b/docs/csaf_downloader.md @@ -15,6 +15,7 @@ Application Options: -r, --rate= The average upper limit of https operations per second (defaults to unlimited) -w, --worker=NUM NUMber of concurrent downloads (default: 2) -t, --timerange=RANGE RANGE of time from which advisories to download + -f, --folder=FOLDER Download into a given FOLDER -H, --header= One or more extra HTTP header fields --validator=URL URL to validate documents remotely --validatorcache=FILE FILE to cache remote validations @@ -86,3 +87,7 @@ into a given intervall. There are three possible notations: spans an interval from 1st January 2019 to the 1st January of 2024. All interval boundaries are inclusive. + +if the `folder` option is given the advisories are stored in this folder. +If it is omitted (by default) the advisories are stored in folder name by the +year they are from.