@@ -50,12 +50,11 @@ pub async fn run(args: MdArgs) -> Result<()> {
5050async fn sign_policy ( ) -> Result < ( ) > {
5151 let config = Config :: load ( ) ?;
5252 let workspace = config. workspace_path ( ) ;
53- let state_dir = workspace
54- . parent ( )
55- . ok_or_else ( || anyhow:: anyhow!( "Workspace has no parent directory" ) ) ?;
53+ let data_dir = & config. paths . data_dir ;
54+ let state_dir = & config. paths . state_dir ;
5655
5756 // Ensure device key exists
58- security:: ensure_device_key ( state_dir ) ?;
57+ security:: ensure_device_key ( data_dir ) ?;
5958
6059 // Check policy file exists
6160 let policy_path = workspace. join ( security:: POLICY_FILENAME ) ;
@@ -68,7 +67,7 @@ async fn sign_policy() -> Result<()> {
6867 }
6968
7069 // Sign
71- let manifest = security:: sign_policy ( state_dir , & workspace, "cli" ) ?;
70+ let manifest = security:: sign_policy ( data_dir , & workspace, "cli" ) ?;
7271
7372 // Write audit entry
7473 security:: append_audit_entry (
@@ -91,11 +90,10 @@ async fn sign_policy() -> Result<()> {
9190async fn verify_policy ( ) -> Result < ( ) > {
9291 let config = Config :: load ( ) ?;
9392 let workspace = config. workspace_path ( ) ;
94- let state_dir = workspace
95- . parent ( )
96- . ok_or_else ( || anyhow:: anyhow!( "Workspace has no parent directory" ) ) ?;
93+ let data_dir = & config. paths . data_dir ;
94+ let state_dir = & config. paths . state_dir ;
9795
98- let result = security:: load_and_verify_policy ( & workspace, state_dir ) ;
96+ let result = security:: load_and_verify_policy ( & workspace, data_dir ) ;
9997
10098 match result {
10199 security:: PolicyVerification :: Valid ( content) => {
@@ -145,10 +143,7 @@ async fn verify_policy() -> Result<()> {
145143
146144async fn show_audit ( json_output : bool , filter : Option < String > ) -> Result < ( ) > {
147145 let config = Config :: load ( ) ?;
148- let workspace = config. workspace_path ( ) ;
149- let state_dir = workspace
150- . parent ( )
151- . ok_or_else ( || anyhow:: anyhow!( "Workspace has no parent directory" ) ) ?;
146+ let state_dir = & config. paths . state_dir ;
152147
153148 let mut entries = security:: read_audit_log ( state_dir) ?;
154149
@@ -230,16 +225,15 @@ async fn show_audit(json_output: bool, filter: Option<String>) -> Result<()> {
230225async fn show_status ( ) -> Result < ( ) > {
231226 let config = Config :: load ( ) ?;
232227 let workspace = config. workspace_path ( ) ;
233- let state_dir = workspace
234- . parent ( )
235- . ok_or_else ( || anyhow:: anyhow!( "Workspace has no parent directory" ) ) ?;
228+ let data_dir = & config. paths . data_dir ;
229+ let state_dir = & config. paths . state_dir ;
236230
237231 println ! ( "Security Status:" ) ;
238232
239233 // Policy file
240234 let policy_path = workspace. join ( security:: POLICY_FILENAME ) ;
241235 if policy_path. exists ( ) {
242- let result = security:: load_and_verify_policy ( & workspace, state_dir ) ;
236+ let result = security:: load_and_verify_policy ( & workspace, data_dir ) ;
243237 let status = match result {
244238 security:: PolicyVerification :: Valid ( _) => "Valid (signed and verified)" ,
245239 security:: PolicyVerification :: Unsigned => "Unsigned (run `localgpt md sign`)" ,
@@ -262,7 +256,7 @@ async fn show_status() -> Result<()> {
262256 }
263257
264258 // Device key
265- let key_path = state_dir . join ( " .device_key" ) ;
259+ let key_path = config . paths . device_key ( ) ;
266260 if key_path. exists ( ) {
267261 println ! ( " Device Key: Present" ) ;
268262 } else {
0 commit comments