pipeline-sdlc/scripts/load_path.py

119 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""
RBAC path registration for pipeline-sdlc module.
Run: cd ~/repos/sage && ./py3/bin/python ~/repos/pipeline-sdlc/scripts/load_path.py
"""
import os
import sys
import subprocess
MOD = "pipeline_sdlc"
PATHS_ANY = [
f"/{MOD}/index.ui",
f"/{MOD}/styles/sdlc.css",
]
PATHS_LOGINED = [
f"/{MOD}",
f"/{MOD}/sd_project",
f"/{MOD}/sd_project/index.ui",
f"/{MOD}/sd_project/get_sd_project_list.dspy",
f"/{MOD}/sd_project/add_sd_project_list.dspy",
f"/{MOD}/sd_project/update_sd_project_list.dspy",
f"/{MOD}/sd_project/delete_sd_project_list.dspy",
f"/{MOD}/sd_iteration",
f"/{MOD}/sd_iteration/index.ui",
f"/{MOD}/sd_iteration/get_sd_iteration_list.dspy",
f"/{MOD}/sd_iteration/add_sd_iteration_list.dspy",
f"/{MOD}/sd_iteration/update_sd_iteration_list.dspy",
f"/{MOD}/sd_iteration/delete_sd_iteration_list.dspy",
f"/{MOD}/sd_test_plan",
f"/{MOD}/sd_test_plan/index.ui",
f"/{MOD}/sd_test_plan/get_sd_test_plan_list.dspy",
f"/{MOD}/sd_test_plan/add_sd_test_plan_list.dspy",
f"/{MOD}/sd_test_plan/update_sd_test_plan_list.dspy",
f"/{MOD}/sd_test_plan/delete_sd_test_plan_list.dspy",
f"/{MOD}/sd_test_case",
f"/{MOD}/sd_test_case/index.ui",
f"/{MOD}/sd_test_case/get_sd_test_case_list.dspy",
f"/{MOD}/sd_test_case/add_sd_test_case_list.dspy",
f"/{MOD}/sd_test_case/update_sd_test_case_list.dspy",
f"/{MOD}/sd_test_case/delete_sd_test_case_list.dspy",
f"/{MOD}/sd_bug",
f"/{MOD}/sd_bug/index.ui",
f"/{MOD}/sd_bug/get_sd_bug_list.dspy",
f"/{MOD}/sd_bug/add_sd_bug_list.dspy",
f"/{MOD}/sd_bug/update_sd_bug_list.dspy",
f"/{MOD}/sd_bug/delete_sd_bug_list.dspy",
f"/{MOD}/sd_deploy_env",
f"/{MOD}/sd_deploy_env/index.ui",
f"/{MOD}/sd_deploy_env/get_sd_deploy_env_list.dspy",
f"/{MOD}/sd_deploy_env/add_sd_deploy_env_list.dspy",
f"/{MOD}/sd_deploy_env/update_sd_deploy_env_list.dspy",
f"/{MOD}/sd_deploy_env/delete_sd_deploy_env_list.dspy",
# API endpoints
f"/{MOD}/api/create_sd_project.dspy",
f"/{MOD}/api/update_sd_project.dspy",
f"/{MOD}/api/delete_sd_project.dspy",
f"/{MOD}/api/create_sd_iteration.dspy",
f"/{MOD}/api/update_sd_iteration.dspy",
f"/{MOD}/api/delete_sd_iteration.dspy",
f"/{MOD}/api/create_sd_bug.dspy",
f"/{MOD}/api/update_sd_bug.dspy",
f"/{MOD}/api/close_sd_bug.dspy",
f"/{MOD}/api/save_sd_deploy_env.dspy",
f"/{MOD}/api/get_project_options.dspy",
f"/{MOD}/api/get_iteration_options.dspy",
f"/{MOD}/api/check_iteration_bugs.dspy",
f"/{MOD}/api/submit_bug.dspy",
# Dashboard
f"/{MOD}/sd_dashboard/dashboard.ui",
]
def find_sage_root():
"""Find Sage root directory."""
for candidate in [
os.path.expanduser("~/repos/sage"),
os.path.expanduser("~/sage"),
]:
if os.path.isdir(os.path.join(candidate, "wwwroot")):
return candidate
return None
def main():
sage_root = find_sage_root()
if not sage_root:
print("ERROR: Sage root not found")
sys.exit(1)
set_perm = os.path.join(sage_root, "scripts", "set_role_perm.py")
if not os.path.exists(set_perm):
set_perm = os.path.join(sage_root, "set_role_perm.py")
if not os.path.exists(set_perm):
print(f"ERROR: set_role_perm.py not found in {sage_root}")
sys.exit(1)
python = os.path.join(sage_root, "py3", "bin", "python")
if not os.path.exists(python):
python = sys.executable
count = 0
for role, paths in [("any", PATHS_ANY), ("logined", PATHS_LOGINED)]:
for path in paths:
cmd = [python, set_perm, role, path]
result = subprocess.run(cmd, capture_output=True, text=True, cwd=sage_root)
if result.returncode == 0:
count += 1
else:
print(f"WARN: {path} ({role}): {result.stderr.strip()}")
print(f"Registered {count} paths for module '{MOD}'")
if __name__ == "__main__":
main()