blob: 546a4f008efbce7331442cef06c5372624dd73a0 (
plain) (
tree)
|
|
---
- name: Set up user
include_role:
name: user
- name: Install SSH key for EmacsConf wiki
ansible.builtin.get_url:
url: https://emacsconf.org/id_rsa_anon_git_emacsconf
dest: "/home/{{ emacsconf_user }}/.ssh/id_rsa_anon_git_emacsconf"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
mode: '0600'
- name: Install the SSH key for orga
copy:
src: "{{ item }}"
dest: "/home/{{ emacsconf_user }}/.ssh"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
mode: '0600'
loop:
- id_rsa
- id_rsa.pub
- name: Check if local Emacs already exists
stat:
path: "/usr/local/bin/emacs"
register: emacs
- name: Set up Emacs
become: yes
import_tasks: emacs.yml
when: not emacs.stat.exists
- name: Configure git
template:
src: git-config
dest: "~{{ emacsconf_user }}/.gitconfig"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- name: Ensure configuration directory exists
file:
path: "{{ emacs_config_dir }}"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
state: directory
- name: Set up Emacs configuration for non-interactive publishing
template:
src: emacsconf-config.el
dest: "{{ emacs_config_dir }}/emacsconf-config.el"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
- name: Check if Emacs base configuration already exists
lineinfile:
dest: "{{ emacs_config_dir }}/init.el"
state: present
regexp: "emacsconf-config"
line: "(load-file \"{{ emacs_config_dir }}/emacsconf-config.el\")"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
create: yes
- name: Set up or update repositories
become_user: "{{ emacsconf_user }}"
tags: publish
block:
- name: Set up compile-media
git:
repo: https://github.com/sachac/compile-media.git
dest: "~{{ emacsconf_user }}/compile-media"
- name: Set up subed
git:
repo: https://github.com/sachac/subed.git
dest: "~{{ emacsconf_user }}/subed"
- name: Check out wiki repository
ansible.builtin.git:
repo: "{{ emacsconf_publishing_source }}"
dest: "{{ emacsconf_edit_wiki_dir }}"
ssh_opts: "-i /home/{{ emacsconf_user }}/.ssh/id_rsa_anon_git_emacsconf"
register: wiki_clone
failed_when:
- wiki_clone.failed
- not 'Local modifications exist in repository' in wiki_clone.msg
- not 'Failed to checkout branch' in wiki_clone.msg
- name: Set up key
shell: git config core.sshCommand "ssh -i ~/.ssh/id_rsa_anon_git_emacsconf -F /dev/null"
args:
chdir: "{{ emacsconf_edit_wiki_dir }}"
- name: Check out emacsconf-el
tags: wip
ansible.builtin.git:
repo: git@git.emacsconf.org:pub/emacsconf-el
key_file: "~{{ emacsconf_user }}/.ssh/id_rsa"
dest: "{{ emacsconf_el_dir }}"
register: elisp
failed_when:
- elisp.failed
- not 'Local modifications exist in repository' in elisp.msg
- not 'Failed to checkout branch' in elisp.msg
debugger: on_failed
- name: Check out emacsconf-{{ emacsconf_year }}-private
ansible.builtin.git:
version: main
repo: "git@git.emacsconf.org:emacsconf-{{ emacsconf_year }}-private"
dest: "{{ emacsconf_private_dir }}"
register: private
failed_when:
- private.failed
- not 'Local modifications exist in repository' in private.msg
- not 'Failed to checkout branch' in private.msg
- name: Change ownership
file:
path: "{{ item }}"
owner: "{{ emacsconf_user }}"
group: "{{ emacsconf_group }}"
recurse: true
loop:
- "{{ emacs_config_dir }}"
- "{{ emacsconf_el_dir }}"
- "{{ emacsconf_private_dir }}"
- "{{ emacsconf_edit_wiki_dir }}"
- name: Publish
tags: publish, publish-only
block:
- name: Publish the schedule
command: emacs -l "{{ emacs_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-publish-schedule)'
when: ((publish|d("")) == "schedule") or (((private is defined and private.changed) or (elisp is defined and elisp.changed)) and slug is not defined)
- name: Update a specific talk's nav page
tags: publish-talk
command: emacs -l "{{ emacs_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-with-talk-heading "{{ slug }}" (emacsconf-update-talk))'
when: slug is defined
# - name: Commit the wiki and push
# shell: cd {{ emacsconf_edit_wiki_dir }}; git commit -m 'Update from ansible' -a; git push
- name: Publish the backstage index
command: emacsclient -c -nw --exec '(emacsconf-publish-backstage-index)' -a emacs
when: (publish|d("")) == "backstage"
|