@@ -22,20 +22,22 @@ type Config struct {
2222const (
2323 configDirName = "tcprcon"
2424 configFileName = "config.json"
25+ DefaultAddr = "localhost"
26+ DefaultPort = 7778
2527)
2628
27- func GetConfigPath () (string , error ) {
28- configDir , err := os .UserConfigDir ()
29- if err != nil {
30- return "" , err
29+ func BuildConfigPath (basePath string ) (string , error ) {
30+ if basePath == "" {
31+ return "" , ErrUndefinedConfigBasePath
3132 }
3233
33- fullPath := filepath .Join (configDir , configDirName )
34+ fullPath := filepath .Join (basePath , configDirName )
3435 return filepath .Join (fullPath , configFileName ), nil
3536}
3637
37- func Load () (* Config , error ) {
38- path , err := GetConfigPath ()
38+ func Load (baseConfigPath string ) (* Config , error ) {
39+
40+ path , err := BuildConfigPath (baseConfigPath )
3941 if err != nil {
4042 return nil , err
4143 }
@@ -62,8 +64,8 @@ func Load() (*Config, error) {
6264 return & cfg , nil
6365}
6466
65- func (source * Config ) Save () error {
66- path , err := GetConfigPath ( )
67+ func (source * Config ) Save (configBasePath string ) error {
68+ path , err := BuildConfigPath ( configBasePath )
6769 if err != nil {
6870 return err
6971 }
@@ -97,8 +99,8 @@ func (source *Config) SetProfile(name string, p Profile) {
9799 source .Profiles [name ] = p
98100}
99101
100- func Resolve (profileName string , addrFlag string , portFlag uint , pwFlag string ) (string , uint , string , error ) {
101- cfg , err := Load ()
102+ func Resolve (configBasePath string , profileName string , addrFlag string , portFlag uint , pwFlag string ) (string , uint , string , error ) {
103+ cfg , err := Load (configBasePath )
102104 if err != nil {
103105 return "" , 0 , "" , err
104106 }
@@ -116,10 +118,10 @@ func Resolve(profileName string, addrFlag string, portFlag uint, pwFlag string)
116118 // only override if the flags are still at their default values
117119 // NOTE: this logic assumes defaults are "localhost", 7778, and ""
118120 // TODO: this "default" handling can introduce bugs, rethink this at some point
119- if finalAddr == "localhost" && p .Address != "" {
121+ if finalAddr == DefaultAddr && p .Address != "" {
120122 finalAddr = p .Address
121123 }
122- if finalPort == 7778 && p .Port != 0 {
124+ if finalPort == DefaultPort && p .Port != 0 {
123125 finalPort = p .Port
124126 }
125127 if finalPw == "" && p .Password != "" {
0 commit comments