diff options
| author | Joe Carstairs <me@joeac.net> | 2026-09-24 08:24:32 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-09-24 08:24:32 +0100 |
| commit | 54bbd2e9d716a18542431e04c3f829a39146dfce (patch) | |
| tree | a55101338ed397240884fde96d90f253415d3c09 /roles/scag/tasks/main.yml | |
| parent | 55207ffd187fc703edfea2a40d118073678c813f (diff) | |
Diffstat (limited to 'roles/scag/tasks/main.yml')
| -rw-r--r-- | roles/scag/tasks/main.yml | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/roles/scag/tasks/main.yml b/roles/scag/tasks/main.yml new file mode 100644 index 0000000..ca26c3e --- /dev/null +++ b/roles/scag/tasks/main.yml @@ -0,0 +1,125 @@ +- name: Install scag by pre-compiling the binary + when: ( not ( scag_install_method is defined ) ) or scag_install_method == "precompile" + block: + - name: Fetch scag source code + delegate_to: 127.0.0.1 + become: false + ansible.builtin.git: + repo: https://git.joeac.net/scag.git + dest: /tmp/scag + depth: 1 + - name: Cross-compile scag + delegate_to: 127.0.0.1 + become: false + ansible.builtin.shell: + cmd: cross build --release --target {{ rust_target }} + chdir: /tmp/scag + changed_when: "'Compiling' in _task.result.stderr" + - name: Install scag binary + ansible.builtin.copy: + src: /tmp/scag/target/{{ rust_target }}/release/scag + dest: /usr/bin/scag + mode: +x + +- name: Install or update scag using rustup + when: scag_install_method == "rustup" + block: + - name: Install Rust toolchain using installation script + ansible.builtin.shell: + cmd: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + creates: /usr/bin/rustc + - name: Update Rust toolchain with rustup + ansible.builtin.shell: rustup update + changed_when: "'updated' in _task.result.stdout" + - name: Install or update scag using cargo + ansible.builtin.shell: + cmd: cargo install --git git://git.joeac.net/scag.git + changed_when: "'Installed' in _task.result.stdout or 'Replaced' in _task.result.stdout" + - name: Install daily crontab to update scag using cargo + ansible.builtin.cron: + special_time: daily + name: Update scag + job: cargo install --git git://git.joeac.net/scag.git + +- name: Install scag using cargo provided by APK + when: scag_install_method == "cargo" + block: + - name: Install cargo using APK + community.general.apk: + name: cargo + - name: Install or update scag using cargo + ansible.builtin.shell: + cmd: cargo install --git git://git.joeac.net/scag.git + changed_when: "'Installed' in _task.result.stdout or 'Replaced' in _task.result.stdout" + - name: Install daily crontab to update scag using cargo + ansible.builtin.cron: + special_time: daily + name: Update scag + job: cargo install --git git://git.joeac.net/scag.git + +- name: Create scag configuration directory + ansible.builtin.file: + path: /etc/scag + state: directory + +- name: Configure scag + ansible.builtin.template: + src: scag.toml + dest: /etc/scag/config.toml + +- name: Configure HTML feed head + ansible.builtin.shell: + cmd: | + curl --silent https://git.joeac.net/joeac.net.git/plain/http/share/components/head.upphtml \ + | grep -E ^\<link\ rel=\"stylesheet\" \ + > {{ feed_html_head }} + creates: "{{ feed_html_head }}" + +- name: Configure HTML feed header + ansible.builtin.template: + src: header.html + dest: "{{ feed_html_header }}" + +- name: Fetch subscriptions + ansible.builtin.git: + repo: git://git.joeac.net/subscriptions.git + dest: "{{ src_dir }}/subscriptions" + depth: 1 + +- name: Symlink subscriptions into scag configuration directory + ansible.builtin.file: + src: "{{ src_dir }}/subscriptions/subscriptions.txt" + dest: /etc/scag/subscriptions.txt + state: link + +- name: Create directory for RSS file + ansible.builtin.file: + path: "{{ http_files_dir }}/feed/{{ feed_dir }}" + state: directory + owner: nginx + group: nginx + +- name: Use scag to generate RSS file + ansible.builtin.shell: + cmd: scag + creates: "{{ http_files_dir }}/feed/{{ feed_rss_path }}" + +- name: Install nginx location config + register: nginx_conf + ansible.builtin.template: + src: nginx/feed.conf + dest: /etc/nginx/http.d/joeac.net.locations.d/feed.conf + +- name: Restart nginx + when: nginx_conf is changed + ansible.builtin.service: + name: nginx + state: restarted + +- name: Install hourly crontab to update subscriptions and run scag + ansible.builtin.cron: + special_time: daily + name: Run scag + job: >- + git -C "{{ src_dir }}/subscriptions" pull; + scag |
