feat: implement modular lab tool structure with working CLI
- Add lab/ module structure (core, machines, deployment, monitoring) - Add mcp/ server stub for future MCP integration - Update main.scm to use new modular architecture - Fix utils/config.scm to export get-current-config function - Create comprehensive test suite with all modules passing - Update TODO.md with completed high priority tasks Key improvements: - Modular design following K.I.S.S principles - Working CLI interface for status, machines, deploy commands - Infrastructure status checking functional - All module tests passing - Clean separation of pure/impure functions CLI now works: ./main.scm status, ./main.scm machines, ./main.scm deploy <machine>
This commit is contained in:
parent
fb4361d938
commit
564faaa479
12 changed files with 196 additions and 427 deletions
15
packages/lab-tool/main.scm
Normal file → Executable file
15
packages/lab-tool/main.scm
Normal file → Executable file
|
@ -9,7 +9,10 @@
|
|||
(use-modules (ice-9 match)
|
||||
(ice-9 format)
|
||||
(utils config)
|
||||
(utils logging))
|
||||
(utils logging)
|
||||
(lab core)
|
||||
(lab machines)
|
||||
(lab deployment))
|
||||
|
||||
;; Initialize logging
|
||||
(set-log-level! 'info)
|
||||
|
@ -68,17 +71,23 @@ Home lab root: ~a
|
|||
(define (cmd-status)
|
||||
"Show infrastructure status"
|
||||
(log-info "Checking infrastructure status...")
|
||||
(let* ((machines (get-all-machines))
|
||||
(let* ((machines (list-machines))
|
||||
(status (get-infrastructure-status))
|
||||
(config (get-current-config))
|
||||
(status-text (format-status-info machines config)))
|
||||
(display status-text)
|
||||
(newline)
|
||||
(for-each (lambda (machine-status)
|
||||
(let ((machine (assoc-ref machine-status 'machine))
|
||||
(status (assoc-ref machine-status 'status)))
|
||||
(format #t " ~a: ~a\n" machine status)))
|
||||
status)
|
||||
(log-success "Status check complete")))
|
||||
|
||||
(define (cmd-machines)
|
||||
"List all configured machines"
|
||||
(log-info "Listing configured machines...")
|
||||
(let* ((machines (get-all-machines))
|
||||
(let* ((machines (list-machines))
|
||||
(machine-list (format-machine-list machines)))
|
||||
(format #t "Configured Machines:\n~a\n" machine-list)
|
||||
(log-success "Machine list complete")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue