fix(qmd): provision macOS LaunchAgent

This commit is contained in:
Haitao Pan 2026-06-21 21:05:59 +08:00
parent 09a39e69ee
commit f01e0bb15b
4 changed files with 27 additions and 9 deletions

View File

@ -18,6 +18,11 @@ qmd_index_config_mode: "0664"
qmd_env_path: "{{ qmd_config_dir }}/qmd.env"
qmd_mcp_service_name: qmd-mcp
qmd_mcp_service_unit_path: "{{ qmd_home }}/.config/systemd/user/{{ qmd_mcp_service_name }}.service"
qmd_launch_agent_label: plus.svc.xworkspace.qmd
qmd_launch_agent_path: "{{ qmd_home }}/Library/LaunchAgents/{{ qmd_launch_agent_label }}.plist"
qmd_launch_agent_log_dir: "{{ qmd_home }}/.local/state/xworkspace"
qmd_launch_agent_stdout_path: "{{ qmd_launch_agent_log_dir }}/qmd.log"
qmd_launch_agent_stderr_path: "{{ qmd_launch_agent_log_dir }}/qmd.err.log"
qmd_service_uid: ""
qmd_mcp_host: 127.0.0.1
qmd_mcp_port: 8181

View File

@ -10,14 +10,14 @@
listen: Restart QMD
- name: Unload QMD on macOS
ansible.builtin.command: "launchctl unload {{ ansible_env.HOME }}/Library/LaunchAgents/plus.svc.xworkspace.qmd.plist"
ansible.builtin.command: "launchctl unload {{ qmd_launch_agent_path }}"
failed_when: false
changed_when: false
when: ansible_system == 'Darwin'
listen: Restart QMD
- name: Load QMD on macOS
ansible.builtin.command: "launchctl load -w {{ ansible_env.HOME }}/Library/LaunchAgents/plus.svc.xworkspace.qmd.plist"
ansible.builtin.command: "launchctl load -w {{ qmd_launch_agent_path }}"
changed_when: false
when: ansible_system == 'Darwin'
listen: Restart QMD

View File

@ -1,13 +1,26 @@
---
- name: Create launchd plist template for QMD
- name: Ensure QMD launchd directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ qmd_user }}"
group: "{{ qmd_group }}"
mode: "0755"
loop:
- "{{ qmd_launch_agent_path | dirname }}"
- "{{ qmd_launch_agent_log_dir }}"
- name: Deploy QMD LaunchAgent
ansible.builtin.template:
src: qmd.plist.j2
dest: "{{ ansible_env.HOME }}/Library/LaunchAgents/plus.svc.xworkspace.qmd.plist"
dest: "{{ qmd_launch_agent_path }}"
owner: "{{ qmd_user }}"
group: "{{ qmd_group }}"
mode: "0644"
notify: Restart QMD
- name: Reload launchd agent for QMD
ansible.builtin.command: "launchctl load -w {{ ansible_env.HOME }}/Library/LaunchAgents/plus.svc.xworkspace.qmd.plist"
- name: Ensure QMD LaunchAgent is loaded
ansible.builtin.command: "launchctl load -w {{ qmd_launch_agent_path }}"
register: launchctl_result
changed_when: false
failed_when: launchctl_result.rc != 0 and 'already loaded' not in launchctl_result.stderr

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>Label</key>
<string>plus.svc.xworkspace.qmd</string>
<string>{{ qmd_launch_agent_label }}</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
@ -20,9 +20,9 @@
<key>WorkingDirectory</key>
<string>{{ qmd_home }}</string>
<key>StandardOutPath</key>
<string>{{ ansible_env.HOME }}/.local/state/xworkspace/qmd.log</string>
<string>{{ qmd_launch_agent_stdout_path }}</string>
<key>StandardErrorPath</key>
<string>{{ ansible_env.HOME }}/.local/state/xworkspace/qmd.err.log</string>
<string>{{ qmd_launch_agent_stderr_path }}</string>
<key>EnvironmentVariables</key>
<dict>
<key>HOME</key>