1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 11:55:40 +01:00

Add option to specify download folder

* Add an option to downloader to store advisories into a given subfolder.

---------

Co-authored-by: JanHoefelmeyer <hoefelmeyer.jan@gmail.com>
Co-authored-by: Bernhard Reiter <bernhard@intevation.de>
This commit is contained in:
Sascha L. Teichmann 2023-08-16 08:45:34 +02:00 committed by GitHub
parent d42db07bec
commit 8c95795b96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 2 deletions

View file

@ -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"` 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"` 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"` 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 subFOLDER" value-name:"FOLDER" toml:"folder"`
ExtraHeader http.Header `long:"header" short:"H" description:"One or more extra HTTP header fields" toml:"header"` ExtraHeader http.Header `long:"header" short:"H" description:"One or more extra HTTP header fields" toml:"header"`

View file

@ -474,8 +474,15 @@ nextAdvisory:
initialReleaseDate = initialReleaseDate.UTC() initialReleaseDate = initialReleaseDate.UTC()
// Write advisory to file // 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 newDir != lastDir {
if err := d.mkdirAll(newDir, 0755); err != nil { if err := d.mkdirAll(newDir, 0755); err != nil {
errorCh <- err errorCh <- err

View file

@ -15,6 +15,7 @@ Application Options:
-r, --rate= The average upper limit of https operations per second (defaults to unlimited) -r, --rate= The average upper limit of https operations per second (defaults to unlimited)
-w, --worker=NUM NUMber of concurrent downloads (default: 2) -w, --worker=NUM NUMber of concurrent downloads (default: 2)
-t, --timerange=RANGE RANGE of time from which advisories to download -t, --timerange=RANGE RANGE of time from which advisories to download
-f, --folder=FOLDER Download all into a given subFOLDER
-H, --header= One or more extra HTTP header fields -H, --header= One or more extra HTTP header fields
--validator=URL URL to validate documents remotely --validator=URL URL to validate documents remotely
--validatorcache=FILE FILE to cache remote validations --validatorcache=FILE FILE to cache remote validations
@ -51,11 +52,12 @@ ignoresigcheck = false
verbose = false verbose = false
# rate # set to unlimited # rate # set to unlimited
worker = 2 worker = 2
# timerange # not set by default
# folder # not set by default
# header # not set by default # header # not set by default
# validator # not set by default # validator # not set by default
# validatorcache # not set by default # validatorcache # not set by default
validatorpreset = ["mandatory"] validatorpreset = ["mandatory"]
# timerange # not set by default
``` ```
The `timerange` parameter enables downloading advisories which last changes falls The `timerange` parameter enables downloading advisories which last changes falls
@ -86,3 +88,7 @@ into a given intervall. There are three possible notations:
spans an interval from 1st January 2019 to the 1st January of 2024. spans an interval from 1st January 2019 to the 1st January of 2024.
All interval boundaries are inclusive. All interval boundaries are inclusive.
If the `folder` option is given all the advisories are stored in a subfolder
of this name. Otherwise the advisories are each stored in a folder named
by the year they are from.