global: unexport ReadPassword and ReadRepo

This commit is contained in:
Michael Eischer
2025-09-28 22:22:22 +02:00
parent aa7bd241d9
commit 588c40aaef
3 changed files with 8 additions and 8 deletions

View File

@@ -205,10 +205,10 @@ func LoadPasswordFromFile(pwdFile string) (string, error) {
return strings.TrimSpace(string(s)), errors.Wrap(err, "Readfile") return strings.TrimSpace(string(s)), errors.Wrap(err, "Readfile")
} }
// ReadPassword reads the password from a password file, the environment // readPassword reads the password from a password file, the environment
// variable RESTIC_PASSWORD or prompts the user. If the context is canceled, // variable RESTIC_PASSWORD or prompts the user. If the context is canceled,
// the function leaks the password reading goroutine. // the function leaks the password reading goroutine.
func ReadPassword(ctx context.Context, gopts Options, prompt string) (string, error) { func readPassword(ctx context.Context, gopts Options, prompt string) (string, error) {
if gopts.InsecureNoPassword { if gopts.InsecureNoPassword {
if gopts.Password != "" { if gopts.Password != "" {
return "", errors.Fatal("--insecure-no-password must not be specified together with providing a password via a cli option or environment variable") return "", errors.Fatal("--insecure-no-password must not be specified together with providing a password via a cli option or environment variable")
@@ -236,12 +236,12 @@ func ReadPassword(ctx context.Context, gopts Options, prompt string) (string, er
// passwords don't match. If the context is canceled, the function leaks the // passwords don't match. If the context is canceled, the function leaks the
// password reading goroutine. // password reading goroutine.
func ReadPasswordTwice(ctx context.Context, gopts Options, prompt1, prompt2 string) (string, error) { func ReadPasswordTwice(ctx context.Context, gopts Options, prompt1, prompt2 string) (string, error) {
pw1, err := ReadPassword(ctx, gopts, prompt1) pw1, err := readPassword(ctx, gopts, prompt1)
if err != nil { if err != nil {
return "", err return "", err
} }
if gopts.Term.InputIsTerminal() { if gopts.Term.InputIsTerminal() {
pw2, err := ReadPassword(ctx, gopts, prompt2) pw2, err := readPassword(ctx, gopts, prompt2)
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -322,7 +322,7 @@ func OpenRepository(ctx context.Context, gopts Options, printer progress.Printer
} }
for ; passwordTriesLeft > 0; passwordTriesLeft-- { for ; passwordTriesLeft > 0; passwordTriesLeft-- {
gopts.Password, err = ReadPassword(ctx, gopts, "enter password for repository: ") gopts.Password, err = readPassword(ctx, gopts, "enter password for repository: ")
if ctx.Err() != nil { if ctx.Err() != nil {
return nil, ctx.Err() return nil, ctx.Err()
} }

View File

@@ -41,11 +41,11 @@ func TestReadRepo(t *testing.T) {
func TestReadEmptyPassword(t *testing.T) { func TestReadEmptyPassword(t *testing.T) {
opts := Options{InsecureNoPassword: true} opts := Options{InsecureNoPassword: true}
password, err := ReadPassword(context.TODO(), opts, "test") password, err := readPassword(context.TODO(), opts, "test")
rtest.OK(t, err) rtest.OK(t, err)
rtest.Equals(t, "", password, "got unexpected password") rtest.Equals(t, "", password, "got unexpected password")
opts.Password = "invalid" opts.Password = "invalid"
_, err = ReadPassword(context.TODO(), opts, "test") _, err = readPassword(context.TODO(), opts, "test")
rtest.Assert(t, strings.Contains(err.Error(), "must not be specified together with providing a password via a cli option or environment variable"), "unexpected error message, got %v", err) rtest.Assert(t, strings.Contains(err.Error(), "must not be specified together with providing a password via a cli option or environment variable"), "unexpected error message, got %v", err)
} }

View File

@@ -115,7 +115,7 @@ func (opts *SecondaryRepoOptions) FillGlobalOpts(ctx context.Context, gopts Opti
return Options{}, false, err return Options{}, false, err
} }
} }
dstGopts.Password, err = ReadPassword(ctx, dstGopts, "enter password for "+repoPrefix+" repository: ") dstGopts.Password, err = readPassword(ctx, dstGopts, "enter password for "+repoPrefix+" repository: ")
if err != nil { if err != nil {
return Options{}, false, err return Options{}, false, err
} }