summaryrefslogblamecommitdiffstats
path: root/roles/wiki-publish/tasks/main.yml
blob: 28566a525b2244c0aa3f9c7fee4b9697415ed3da (plain) (tree)
1
2
3
4
5
6
7
8
9


                            
                                           




                                                        
                                                                     
                
















                                                  
                                                                 


                                                      
 

                                                        




                                               
               







                                                    




                                                                         




                                                    



                                                                    




                                                          



                                                                      









                                     











                                                                                                                                                            
---
- 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