# Ollie monorepo build system # # Two variants: # just Default (KF6): core, 9p, kde, emacs # just kf5 KF5/Qt5 variant (Plasma 5.27) # # Build and install are separate phases. No sudo. set dotenv-load := false home := env_var('HOME') cfg := home / ".config/ollie" bin := home / ".local/bin" lib := home / ".local/lib" inc := home / ".local/include" # === Default (KF6) path === default: build install # === KF5 variant === kf5: build-kf5 install-kf5 # === Build targets === build: core ninep lib9p toolsrv lsp-tools kde build-kf5: core ninep lib9p toolsrv kde-kf5 core: @echo === Building ollie-core === go build ./... ninep: @echo === Building ollie-9p === go build -o {{bin}}/olliesrv ./cmd/olliesrv/ go build -o {{bin}}/ollie-9p ./cmd/ollie-9p/ lib9p: @echo === Building lib9p === cd lib9p && go build -buildmode=c-shared -o libollie9p.so mkdir -p {{lib}} {{inc}} install -m755 lib9p/libollie9p.so {{lib}}/libollie9p.so install -m644 lib9p/libollie9p.h {{inc}}/libollie9p.h lsp-tools: @echo === Building LSP tools === mkdir -p {{cfg}}/tools rm -f {{cfg}}/tools/lsp_definition {{cfg}}/tools/lsp_references {{cfg}}/tools/lsp_hover {{cfg}}/tools/lsp_rename {{cfg}}/tools/lsp_symbols {{cfg}}/tools/lsp_completion {{cfg}}/tools/lsp_diagnostics go build -o {{cfg}}/tools/lsp_definition ./tools/lsp/cmd/lsp_definition/ install -m644 ./tools/lsp/cmd/lsp_definition/lsp_definition.meta {{cfg}}/tools/lsp_definition.meta go build -o {{cfg}}/tools/lsp_references ./tools/lsp/cmd/lsp_references/ install -m644 ./tools/lsp/cmd/lsp_references/lsp_references.meta {{cfg}}/tools/lsp_references.meta go build -o {{cfg}}/tools/lsp_hover ./tools/lsp/cmd/lsp_hover/ install -m644 ./tools/lsp/cmd/lsp_hover/lsp_hover.meta {{cfg}}/tools/lsp_hover.meta go build -o {{cfg}}/tools/lsp_rename ./tools/lsp/cmd/lsp_rename/ install -m644 ./tools/lsp/cmd/lsp_rename/lsp_rename.meta {{cfg}}/tools/lsp_rename.meta go build -o {{cfg}}/tools/lsp_symbols ./tools/lsp/cmd/lsp_symbols/ install -m644 ./tools/lsp/cmd/lsp_symbols/lsp_symbols.meta {{cfg}}/tools/lsp_symbols.meta go build -o {{cfg}}/tools/lsp_completion ./tools/lsp/cmd/lsp_completion/ install -m644 ./tools/lsp/cmd/lsp_completion/lsp_completion.meta {{cfg}}/tools/lsp_completion.meta go build -o {{cfg}}/tools/lsp_diagnostics ./tools/lsp/cmd/lsp_diagnostics/ install -m644 ./tools/lsp/cmd/lsp_diagnostics/lsp_diagnostics.meta {{cfg}}/tools/lsp_diagnostics.meta toolsrv: @echo === Building toolsrv === go build -buildvcs=false -o {{bin}}/toolsrv ./cmd/toolsrv/ kde: @echo === Building ollie-kde === just -f kde/justfile kde kde-kf5: @echo '=== Building ollie-kde (KF5) ===' just -f kde/justfile kde-kf5 install: test install-data install-el migrate-bin just -f kde/justfile install-kde @echo === Install complete === @echo 'Restart Plasma to pick up KDE plugins.' install-kf5: test install-data install-el migrate-bin just -f kde/justfile install-kde-kf5 @echo '=== Install complete (KF5) ===' @echo 'Restart Plasma to pick up KDE plugins.' install-el: @echo === Installing ellie.el === mkdir -p ~/.config/emacs/ellie install -m644 contrib/elisp/ellie.el ~/.config/emacs/ellie/ellie.el # Remove stale binaries from ~/bin left over from the pre-~/.local/bin era. migrate-bin: #!/usr/bin/env sh old="$HOME/bin" for f in olliesrv ollie-9p ollie-remote toolsrv ollie-gui ollie-remount logseq-cli o; do if [ -f "$old/$f" ]; then echo " removing stale $old/$f" rm -f "$old/$f" fi done install-data: @echo === Installing data === # Backend config (only install template if user hasn't created one yet) @test -f {{cfg}}/backends.conf || install -m600 data/backends.conf {{cfg}}/backends.conf # Agents mkdir -p {{cfg}}/agents install -m644 data/agents/copilot.json {{cfg}}/agents/copilot.json install -m644 data/agents/default.json {{cfg}}/agents/default.json install -m644 data/agents/explorer.json {{cfg}}/agents/explorer.json install -m644 data/agents/librarian.json {{cfg}}/agents/librarian.json install -m644 data/agents/navigator.json {{cfg}}/agents/navigator.json install -m644 data/agents/driver.json {{cfg}}/agents/driver.json install -m644 data/agents/README.md {{cfg}}/agents/README.md install -m644 data/agents/taskmanager.json {{cfg}}/agents/taskmanager.json install -m644 data/agents/theo.json {{cfg}}/agents/theo.json # Prompts mkdir -p {{cfg}}/prompts mkdir -p {{cfg}}/memory install -m644 data/prompts/agent-coding.md {{cfg}}/prompts/agent-coding.md install -m644 data/prompts/agent-copilot.md {{cfg}}/prompts/agent-copilot.md install -m644 data/prompts/agent-explorer.md {{cfg}}/prompts/agent-explorer.md install -m644 data/prompts/agent-librarian.md {{cfg}}/prompts/agent-librarian.md install -m644 data/prompts/agent-navigator.md {{cfg}}/prompts/agent-navigator.md install -m644 data/prompts/agent-taskmanager.md {{cfg}}/prompts/agent-taskmanager.md install -m644 data/prompts/agent-theo.md {{cfg}}/prompts/agent-theo.md install -m644 data/prompts/user-preferences.md {{cfg}}/prompts/user-preferences.md # Sandbox mkdir -p {{cfg}}/sandbox install -m644 cmd/toolsrv/internal/sandbox/default.yaml {{cfg}}/sandbox/default.yaml install -m644 cmd/toolsrv/internal/sandbox/restricted.yaml {{cfg}}/sandbox/restricted.yaml # Skills mkdir -p {{cfg}}/skills/acme-api {{cfg}}/skills/agent-kb {{cfg}}/skills/duckduckgo-search {{cfg}}/skills/github-cli {{cfg}}/skills/rc-shell \ {{cfg}}/skills/web-dev-browser-screencapture {{cfg}}/skills/write-skills install -m644 data/skills/LICENSE.md {{cfg}}/skills/LICENSE.md install -m644 data/skills/README.md {{cfg}}/skills/README.md install -m644 data/skills/acme-api/SKILL.md {{cfg}}/skills/acme-api/SKILL.md install -m644 data/skills/agent-kb/SKILL.md {{cfg}}/skills/agent-kb/SKILL.md install -m644 data/skills/duckduckgo-search/SKILL.md {{cfg}}/skills/duckduckgo-search/SKILL.md install -m644 data/skills/github-cli/SKILL.md {{cfg}}/skills/github-cli/SKILL.md install -m644 data/skills/rc-shell/SKILL.md {{cfg}}/skills/rc-shell/SKILL.md install -m644 data/skills/web-dev-browser-screencapture/SKILL.md {{cfg}}/skills/web-dev-browser-screencapture/SKILL.md install -m644 data/skills/write-skills/SKILL.md {{cfg}}/skills/write-skills/SKILL.md # Tools (executables) mkdir -p {{cfg}}/tools/_lib install -m755 data/tools/browser_screencap {{cfg}}/tools/browser_screencap install -m755 data/tools/reasoning_think {{cfg}}/tools/reasoning_think install -m755 data/tools/shell {{cfg}}/tools/shell install -m755 data/tools/file_edit {{cfg}}/tools/file_edit install -m755 data/tools/file_glob {{cfg}}/tools/file_glob install -m755 data/tools/file_grep {{cfg}}/tools/file_grep install -m755 data/tools/file_read {{cfg}}/tools/file_read install -m755 data/tools/file_write {{cfg}}/tools/file_write install -m755 data/tools/gui_accessibility {{cfg}}/tools/gui_accessibility install -m755 data/tools/gui_activities {{cfg}}/tools/gui_activities install -m755 data/tools/gui_apps {{cfg}}/tools/gui_apps install -m755 data/tools/gui_brightness {{cfg}}/tools/gui_brightness install -m755 data/tools/gui_clipboard {{cfg}}/tools/gui_clipboard install -m755 data/tools/gui_files {{cfg}}/tools/gui_files install -m755 data/tools/gui_input {{cfg}}/tools/gui_input install -m755 data/tools/gui_media {{cfg}}/tools/gui_media install -m755 data/tools/gui_notify {{cfg}}/tools/gui_notify install -m755 data/tools/gui_screenshot {{cfg}}/tools/gui_screenshot install -m755 data/tools/gui_shortcuts {{cfg}}/tools/gui_shortcuts install -m755 data/tools/gui_windows {{cfg}}/tools/gui_windows install -m755 data/tools/image_read {{cfg}}/tools/image_read install -m755 data/tools/memory_recall {{cfg}}/tools/memory_recall install -m755 data/tools/memory_remember {{cfg}}/tools/memory_remember install -m755 data/tools/process_dismiss {{cfg}}/tools/process_dismiss install -m755 data/tools/process_list {{cfg}}/tools/process_list install -m755 data/tools/process_output {{cfg}}/tools/process_output install -m755 data/tools/process_signal {{cfg}}/tools/process_signal install -m755 data/tools/subagent_generate {{cfg}}/tools/subagent_generate install -m755 data/tools/subagent_spawn {{cfg}}/tools/subagent_spawn install -m755 data/tools/logseq {{cfg}}/tools/logseq install -m755 data/tools/skill_list {{cfg}}/tools/skill_list install -m755 data/tools/skill_load {{cfg}}/tools/skill_load install -m755 data/tools/tool_load {{cfg}}/tools/tool_load install -m755 data/tools/system_logs_dmesg {{cfg}}/tools/system_logs_dmesg install -m755 data/tools/system_logs_journald {{cfg}}/tools/system_logs_journald # Tool metadata (.meta sidecar files) for f in data/tools/*.meta; do install -m644 "$f" {{cfg}}/tools/"$(basename $f)"; done # Tools (library modules) install -m644 data/tools/_lib/__init__.py {{cfg}}/tools/_lib/__init__.py install -m644 data/tools/_lib/args.py {{cfg}}/tools/_lib/args.py install -m755 data/tools/_lib/args.sh {{cfg}}/tools/_lib/args.sh # Scripts (ollie-remount, logseq-cli, o) mkdir -p {{bin}} install -m755 data/scripts/ollie-remount {{bin}}/ollie-remount install -m755 data/scripts/logseq-cli {{bin}}/logseq-cli install -m755 data/scripts/o {{bin}}/o # Acme scripts install -m755 data/scripts/acme/acme-ollie-ensure {{bin}}/acme-ollie-ensure install -m755 data/scripts/acme/AskFile {{bin}}/AskFile install -m755 data/scripts/acme/Explain {{bin}}/Explain install -m755 data/scripts/acme/Document {{bin}}/Document install -m755 data/scripts/acme/Fix {{bin}}/Fix install -m755 data/scripts/acme/Refactor {{bin}}/Refactor install -m755 data/scripts/acme/AddTests {{bin}}/AddTests install -m755 data/scripts/acme/SendVerbatim {{bin}}/SendVerbatim install-autostart: @echo === Installing autostart files === mkdir -p ~/.config/autostart install -m644 data/services/xdg-autostart/org.ollie.olliesrv.desktop ~/.config/autostart/ install-systemd: @echo === Installing systemd service === mkdir -p ~/.config/systemd/user install -m644 data/services/systemd/ollie.service ~/.config/systemd/user/ # === Uninstall === uninstall: @echo === Uninstalling ollie === rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo rm -f {{bin}}/ollie-remount {{bin}}/o rm -f {{bin}}/prompt {{bin}}/ollieread {{bin}}/sendctl {{bin}}/ollie-ls rm -f {{bin}}/AskFile {{bin}}/Explain {{bin}}/Document {{bin}}/Fix {{bin}}/Refactor {{bin}}/AddTests {{bin}}/SendVerbatim {{bin}}/acme-ollie-ensure rm -rf {{cfg}} # Service files rm -f ~/.config/systemd/user/ollie.service rm -f ~/.config/autostart/org.ollie.olliesrv.desktop # KDE (KF6) just -f kde/justfile uninstall # Emacs rm -rf ~/.config/emacs/ellie # Plasma env rm -f ~/.config/plasma-workspace/env/99-ollie.sh @echo === Uninstall complete === uninstall-kf5: @echo '=== Uninstalling ollie (KF5) ===' rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo rm -f {{bin}}/ollie-remount {{bin}}/o rm -f {{bin}}/prompt {{bin}}/ollieread {{bin}}/sendctl {{bin}}/ollie-ls rm -f {{bin}}/AskFile {{bin}}/Explain {{bin}}/Document {{bin}}/Fix {{bin}}/Refactor {{bin}}/AddTests {{bin}}/SendVerbatim {{bin}}/acme-ollie-ensure rm -rf {{cfg}} # Service files rm -f ~/.config/systemd/user/ollie.service rm -f ~/.config/autostart/org.ollie.olliesrv.desktop # KDE (KF5) just -f kde/justfile uninstall-kf5 # Emacs rm -rf ~/.config/emacs/ellie # Plasma env rm -f ~/.config/plasma-workspace/env/99-ollie.sh @echo '=== Uninstall complete (KF5) ===' # === Test targets === test: test-core test-9p test-core: @echo === Testing ollie-core === go test ./cmd/olliesrv/... ./cmd/toolsrv/... ./env/... ./log/... ./paths/... ./toolsrv/... test-9p: @echo === Testing ollie-9p === go test ./lib9p/... test-remote: @echo === Testing toolsrv === go build ./cmd/toolsrv/... # === Clean === clean: go clean ./cmd/... 2>/dev/null || true rm -f {{bin}}/Ollie {{bin}}/Kmpl {{bin}}/Oi {{bin}}/Theo rm -f {{bin}}/ollie-remote just -f kde/justfile clean # === Help === help: @echo 'Ollie monorepo build targets:' @echo ' just Build + install (default, KF6)' @echo ' just kf5 Build + install (KF5/Qt5, Plasma 5.27)' @echo ' just build Build only (KF6): core, 9p, acme, kde' @echo ' just build-kf5 Build only (KF5): core, 9p, acme, kde-kf5' @echo ' just install Install (KF6)' @echo ' just install-kf5 Install (KF5)' @echo ' just test Run all tests (core + 9p)' @echo ' just test-core Run core tests' @echo ' just test-9p Run 9p tests' @echo ' just uninstall Remove all installed files (KF6)' @echo ' just uninstall-kf5 Remove all installed files (KF5)' @echo ' just clean Clean build artifacts' @echo '' @echo 'Individual: just core | ninep | ollie-remote | acme | kde | kde-kf5 | lsp-tools'