36 lines
1014 B
Go
36 lines
1014 B
Go
// Copyright (C) 2014 The Syncthing Authors.
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
package cmdutil
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/syncthing/syncthing/lib/locations"
|
|
)
|
|
|
|
func SetConfigDataLocationsFromFlags(homeDir, confDir, dataDir string) error {
|
|
homeSet := homeDir != ""
|
|
confSet := confDir != ""
|
|
dataSet := dataDir != ""
|
|
switch {
|
|
case dataSet != confSet:
|
|
return errors.New("either both or none of --config and --data must be given, use --home to set both at once")
|
|
case homeSet && dataSet:
|
|
return errors.New("--home must not be used together with --config and --data")
|
|
case homeSet:
|
|
confDir = homeDir
|
|
dataDir = homeDir
|
|
fallthrough
|
|
case dataSet:
|
|
if err := locations.SetBaseDir(locations.ConfigBaseDir, confDir); err != nil {
|
|
return err
|
|
}
|
|
return locations.SetBaseDir(locations.DataBaseDir, dataDir)
|
|
}
|
|
return nil
|
|
}
|