feat: add support for casbin-python-cli auto-download (#4004)

This commit is contained in:
kevin kwok
2025-07-27 14:00:00 +08:00
committed by GitHub
parent 30c15b8135
commit 8d1fdc3a08

View File

@@ -24,6 +24,7 @@ const (
javaCliRepo = "https://api.github.com/repos/jcasbin/casbin-java-cli/releases/latest" javaCliRepo = "https://api.github.com/repos/jcasbin/casbin-java-cli/releases/latest"
goCliRepo = "https://api.github.com/repos/casbin/casbin-go-cli/releases/latest" goCliRepo = "https://api.github.com/repos/casbin/casbin-go-cli/releases/latest"
rustCliRepo = "https://api.github.com/repos/casbin-rs/casbin-rust-cli/releases/latest" rustCliRepo = "https://api.github.com/repos/casbin-rs/casbin-rust-cli/releases/latest"
pythonCliRepo = "https://api.github.com/repos/casbin/casbin-python-cli/releases/latest"
downloadFolder = "bin" downloadFolder = "bin"
) )
@@ -43,6 +44,7 @@ func getBinaryNames() map[string]string {
golang = "go" golang = "go"
java = "java" java = "java"
rust = "rust" rust = "rust"
python = "python"
) )
arch := runtime.GOARCH arch := runtime.GOARCH
@@ -62,18 +64,21 @@ func getBinaryNames() map[string]string {
golang: fmt.Sprintf("casbin-go-cli_Windows_%s.zip", archNames.goArch), golang: fmt.Sprintf("casbin-go-cli_Windows_%s.zip", archNames.goArch),
java: "casbin-java-cli.jar", java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-pc-windows-gnu", archNames.rustArch), rust: fmt.Sprintf("casbin-rust-cli-%s-pc-windows-gnu", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-windows-%s.exe", archNames.goArch),
} }
case "darwin": case "darwin":
return map[string]string{ return map[string]string{
golang: fmt.Sprintf("casbin-go-cli_Darwin_%s.tar.gz", archNames.goArch), golang: fmt.Sprintf("casbin-go-cli_Darwin_%s.tar.gz", archNames.goArch),
java: "casbin-java-cli.jar", java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-apple-darwin", archNames.rustArch), rust: fmt.Sprintf("casbin-rust-cli-%s-apple-darwin", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-darwin-%s", archNames.goArch),
} }
case "linux": case "linux":
return map[string]string{ return map[string]string{
golang: fmt.Sprintf("casbin-go-cli_Linux_%s.tar.gz", archNames.goArch), golang: fmt.Sprintf("casbin-go-cli_Linux_%s.tar.gz", archNames.goArch),
java: "casbin-java-cli.jar", java: "casbin-java-cli.jar",
rust: fmt.Sprintf("casbin-rust-cli-%s-unknown-linux-gnu", archNames.rustArch), rust: fmt.Sprintf("casbin-rust-cli-%s-unknown-linux-gnu", archNames.rustArch),
python: fmt.Sprintf("casbin-python-cli-linux-%s", archNames.goArch),
} }
default: default:
return nil return nil
@@ -98,6 +103,11 @@ func getFinalBinaryName(lang string) string {
return "casbin-rust-cli.exe" return "casbin-rust-cli.exe"
} }
return "casbin-rust-cli" return "casbin-rust-cli"
case "python":
if runtime.GOOS == "windows" {
return "casbin-python-cli.exe"
}
return "casbin-python-cli"
default: default:
return "" return ""
} }
@@ -333,9 +343,10 @@ func downloadCLI() error {
} }
repos := map[string]string{ repos := map[string]string{
"java": javaCliRepo, "java": javaCliRepo,
"go": goCliRepo, "go": goCliRepo,
"rust": rustCliRepo, "rust": rustCliRepo,
"python": pythonCliRepo,
} }
for lang, repo := range repos { for lang, repo := range repos {