forked from TrueCloudLab/restic
feat: support reading REST credentials from env
This commit is contained in:
parent
6e586b64e4
commit
f1877e721e
1 changed files with 18 additions and 0 deletions
|
@ -2,10 +2,12 @@ package rest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/restic/restic/internal/errors"
|
"github.com/restic/restic/internal/errors"
|
||||||
"github.com/restic/restic/internal/options"
|
"github.com/restic/restic/internal/options"
|
||||||
|
"github.com/restic/restic/internal/restic"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Config contains all configuration necessary to connect to a REST server.
|
// Config contains all configuration necessary to connect to a REST server.
|
||||||
|
@ -70,3 +72,19 @@ func prepareURL(s string) string {
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ restic.ApplyEnvironmenter = &Config{}
|
||||||
|
|
||||||
|
// ApplyEnvironment saves values from the environment to the config.
|
||||||
|
func (cfg *Config) ApplyEnvironment(prefix string) {
|
||||||
|
username := cfg.URL.User.Username()
|
||||||
|
_, pwdSet := cfg.URL.User.Password()
|
||||||
|
|
||||||
|
// Only apply env variable values if neither username nor password are provided.
|
||||||
|
if username == "" && !pwdSet {
|
||||||
|
envName := os.Getenv(prefix + "RESTIC_REST_USERNAME")
|
||||||
|
envPwd := os.Getenv(prefix + "RESTIC_REST_PASSWORD")
|
||||||
|
|
||||||
|
cfg.URL.User = url.UserPassword(envName, envPwd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue