--- - name: Set up SSH directory ansible.builtin.file: path: "/home/{{ emacsconf_user }}/.ssh" state: directory mode: '0700' - 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" mode: '0600' - name: Install the SSH key for orga template: src: id_rsa dest: "/home/{{ emacsconf_user }}/.ssh/id_rsa" mode: '0600' - name: Change ownership of SSH directory file: path: "/home/{{ emacsconf_user }}/.ssh" recurse: true owner: "{{ emacsconf_user }}" - name: Set up Emacs include: emacs.yml - name: Ensure configuration directory exists file: path: "{{ emacs_config_dir }}" state: directory - name: Set up Emacs configuration for non-interactive publishing template: src: emacsconf-config.el dest: "{{ emacs_config_dir }}/emacsconf-config.el" - name: Check if Emacs base configuration already exists become: true lineinfile: dest: "{{ emacs_config_dir }}/init.el" state: present regexp: "emacsconf-config" line: "(load-file \"emacsconf-config.el\")" create: yes - name: Set up or update repositories become: false tags: publish block: - name: Check out wiki repository ansible.builtin.git: repo: git://git.emacsconf.org/emacsconf-wiki dest: "{{ emacsconf_edit_wiki_dir }}" 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: Check out emacsconf-el ansible.builtin.git: repo: git@git.emacsconf.org:pub/emacsconf-el 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 - name: Check out emacsconf-2022-private ansible.builtin.git: repo: git@git.emacsconf.org:emacsconf-2022-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 }}" recurse: true with_items: - "{{ emacsconf_config_dir }}" - "{{ emacsconf_el_dir }}" - "{{ emacsconf_private_dir }}" - "{{ emacsconf_edit_wiki_dir }}" - name: Publish tags: publish block: - name: Publish the schedule command: emacs -l "{{ emacsconf_config_dir }}/emacsconf-config.el" --batch --exec '(emacsconf-generate-main-schedule)' when: (force_publish|d(false)) or ((private.changed or elisp.changed) and slug is not defined) - name: Update a specific talk's nav page tags: publish-talk command: emacs -l "{{ emacsconf_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