|
|
|
@ -12,7 +12,7 @@ type EnvFlag struct {
|
|
|
|
|
AltName string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (f EnvFlag) GetValue(defaultValue string) string { |
|
|
|
|
func (f EnvFlag) GetValue(defaultValue func() string) string { |
|
|
|
|
if v, found := os.LookupEnv(f.Name); found { |
|
|
|
|
return v |
|
|
|
|
} |
|
|
|
@ -22,13 +22,16 @@ func (f EnvFlag) GetValue(defaultValue string) string {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return defaultValue |
|
|
|
|
return defaultValue() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (f EnvFlag) GetValueAsInt(defaultValue int) int { |
|
|
|
|
const PlaceHolder = "xxxxxx" |
|
|
|
|
s := f.GetValue(PlaceHolder) |
|
|
|
|
if s == PlaceHolder { |
|
|
|
|
useDefaultValue := false |
|
|
|
|
s := f.GetValue(func() string { |
|
|
|
|
useDefaultValue = true |
|
|
|
|
return "" |
|
|
|
|
}) |
|
|
|
|
if useDefaultValue { |
|
|
|
|
return defaultValue |
|
|
|
|
} |
|
|
|
|
v, err := strconv.ParseInt(s, 10, 32) |
|
|
|
@ -42,18 +45,13 @@ func NormalizeEnvName(name string) string {
|
|
|
|
|
return strings.Replace(strings.ToUpper(strings.TrimSpace(name)), ".", "_", -1) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var assetPath = "/" |
|
|
|
|
|
|
|
|
|
func init() { |
|
|
|
|
defAssetLocation, err := os.Executable() |
|
|
|
|
if err == nil { |
|
|
|
|
defAssetLocation = filepath.Dir(defAssetLocation) |
|
|
|
|
assetPath = (EnvFlag{ |
|
|
|
|
Name: "v2ray.location.asset", |
|
|
|
|
}).GetValue(defAssetLocation) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func GetAssetLocation(file string) string { |
|
|
|
|
assetPath := EnvFlag{Name: "v2ray.location.asset"}.GetValue(func() string { |
|
|
|
|
exec, err := os.Executable() |
|
|
|
|
if err != nil { |
|
|
|
|
return "" |
|
|
|
|
} |
|
|
|
|
return filepath.Dir(exec) |
|
|
|
|
}) |
|
|
|
|
return filepath.Join(assetPath, file) |
|
|
|
|
} |
|
|
|
|