paths.mojo (2014B)
1 from hyf_runtime.namespace import ( 2 hyf_runtime_namespace, 3 join_runtime_path, 4 validate_runtime_namespace, 5 ) 6 from hyf_runtime.roots import ( 7 RuntimeRootSet, 8 runtime_roots_for_unix_profile, 9 ) 10 11 12 @fieldwise_init 13 struct RuntimePaths(Copyable, Movable): 14 var namespace: String 15 var config_dir: String 16 var config_path: String 17 var data_dir: String 18 var cache_dir: String 19 var logs_dir: String 20 var diagnostics_dir: String 21 var run_dir: String 22 var secrets_dir: String 23 var identity_path: String 24 25 26 def runtime_paths_for_namespace( 27 roots: RuntimeRootSet, namespace: String 28 ) raises -> RuntimePaths: 29 validate_runtime_namespace(namespace) 30 31 var config_dir = join_runtime_path(roots.config_root, namespace) 32 var data_dir = join_runtime_path(roots.data_root, namespace) 33 var cache_dir = join_runtime_path(roots.cache_root, namespace) 34 var logs_dir = join_runtime_path(roots.logs_root, namespace) 35 var run_dir = join_runtime_path(roots.run_root, namespace) 36 var secrets_dir = join_runtime_path(roots.secrets_root, namespace) 37 38 return RuntimePaths( 39 namespace=String(namespace), 40 config_dir=String(config_dir), 41 config_path=join_runtime_path(config_dir, "config.toml"), 42 data_dir=String(data_dir), 43 cache_dir=String(cache_dir), 44 logs_dir=String(logs_dir), 45 diagnostics_dir=join_runtime_path(logs_dir, "diagnostics"), 46 run_dir=String(run_dir), 47 secrets_dir=String(secrets_dir), 48 identity_path=join_runtime_path(secrets_dir, "identity.secret.json"), 49 ) 50 51 52 def hyf_runtime_paths_for_roots(roots: RuntimeRootSet) raises -> RuntimePaths: 53 return runtime_paths_for_namespace(roots, hyf_runtime_namespace()) 54 55 56 def hyf_runtime_paths_for_unix_profile( 57 profile: String, 58 user_home: String, 59 repo_local_base_root: String, 60 ) raises -> RuntimePaths: 61 return hyf_runtime_paths_for_roots( 62 runtime_roots_for_unix_profile(profile, user_home, repo_local_base_root) 63 )