Read the rclone config file named by RCLONE_CONFIG (closes #321)
check / check (push) Waiting to run
check / check (push) Waiting to run
An rclone destination whose remote is defined only in the file RCLONE_CONFIG names was reported as not found: rclone reads that variable only as the value of its --config flag, which vaultik does not have, so vaultik always used rclone's default config file. NewRcloneStorer now sets rclone's config path from RCLONE_CONFIG when the variable is set, as that flag would, including an empty value, which rclone takes to mean no config file. Model: opus-5-5
This commit was merged in pull request #374.
This commit is contained in:
@@ -7,10 +7,12 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/rclone/rclone/fs"
|
||||
"github.com/rclone/rclone/fs/config"
|
||||
"github.com/rclone/rclone/fs/config/configfile"
|
||||
"github.com/rclone/rclone/fs/operations"
|
||||
|
||||
@@ -33,6 +35,15 @@ type RcloneStorer struct {
|
||||
// The remote parameter is the rclone remote name (as configured via `rclone config`).
|
||||
// The path parameter is the path within the remote.
|
||||
func NewRcloneStorer(ctx context.Context, remote, path string) (*RcloneStorer, error) {
|
||||
// rclone reads RCLONE_CONFIG only as the value of its --config flag,
|
||||
// which vaultik does not have, so it is applied here as that flag would.
|
||||
if configPath, ok := os.LookupEnv("RCLONE_CONFIG"); ok {
|
||||
err := config.SetConfigPath(configPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("using RCLONE_CONFIG %q: %w", configPath, err)
|
||||
}
|
||||
}
|
||||
|
||||
// Install the default config file handler
|
||||
configfile.Install()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user