|
@@ -20,3 +20,25 @@ func GetToolLocation(file string) string {
|
|
|
toolPath := EnvFlag{Name: name, AltName: NormalizeEnvName(name)}.GetValue(getExecutableDir)
|
|
toolPath := EnvFlag{Name: name, AltName: NormalizeEnvName(name)}.GetValue(getExecutableDir)
|
|
|
return filepath.Join(toolPath, file)
|
|
return filepath.Join(toolPath, file)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// GetAssetLocation search for `file` in certain locations
|
|
|
|
|
+func GetAssetLocation(file string) string {
|
|
|
|
|
+ const name = "v2ray.location.asset"
|
|
|
|
|
+ assetPath := NewEnvFlag(name).GetValue(getExecutableDir)
|
|
|
|
|
+ defPath := filepath.Join(assetPath, file)
|
|
|
|
|
+ for _, p := range []string{
|
|
|
|
|
+ defPath,
|
|
|
|
|
+ filepath.Join("/usr/local/share/v2ray/", file),
|
|
|
|
|
+ filepath.Join("/usr/share/v2ray/", file),
|
|
|
|
|
+ } {
|
|
|
|
|
+ if _, err := os.Stat(p); os.IsNotExist(err) {
|
|
|
|
|
+ continue
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // asset found
|
|
|
|
|
+ return p
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // asset not found, let the caller throw out the error
|
|
|
|
|
+ return defPath
|
|
|
|
|
+}
|