From 4696aa1fed214fe1084d7c3deecaaa289bc0a1fd Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Mon, 31 Oct 2022 21:53:15 -0400 Subject: Update OBS, renamepublish and edit --- roles/publish/tasks/emacs.yml | 38 +++++++++++++++++ roles/publish/tasks/main.yml | 94 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 roles/publish/tasks/emacs.yml create mode 100644 roles/publish/tasks/main.yml (limited to 'roles/publish/tasks') diff --git a/roles/publish/tasks/emacs.yml b/roles/publish/tasks/emacs.yml new file mode 100644 index 0000000..8d75979 --- /dev/null +++ b/roles/publish/tasks/emacs.yml @@ -0,0 +1,38 @@ +- name: Install dependencies + apt: + name: + - build-essential + - libncurses5-dev + - git + - gnutls-bin + - pkg-config + - libjansson-dev + - libgnutls28-dev + - automake + - texinfo + state: present +- name: Create directory + file: + path: "{{ emacs_build_parent }}" + state: directory +- name: Download Emacs + unarchive: + src: https://ftp.gnu.org/gnu/emacs/emacs-{{emacs_version}}.tar.gz + remote_src: yes + dest: "{{ emacs_build_parent }}" + creates: "{{ emacs_build_dir }}" +- name: Configure + command: ./configure --with-x-toolkit=no + args: + chdir: "{{ emacs_build_dir }}" + creates: '{{ emacs_build_dir }}/Makefile' +- name: Build + command: make -j{{ cpus }} + args: + chdir: "{{ emacs_build_dir }}" + creates: '{{ emacs_build_dir }}/src/emacs' +- name: Install + command: make install + args: + chdir: "{{ emacs_build_dir }}" + creates: '/usr/local/bin/emacs' diff --git a/roles/publish/tasks/main.yml b/roles/publish/tasks/main.yml new file mode 100644 index 0000000..28566a5 --- /dev/null +++ b/roles/publish/tasks/main.yml @@ -0,0 +1,94 @@ +--- +- 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 -- cgit v1.2.3