307 lines
12 KiB
YAML
307 lines
12 KiB
YAML
# SPDX-License-Identifier: MIT-0
|
|
---
|
|
# handlers file for bootstrap
|
|
- name: Configure git
|
|
listen: git
|
|
block:
|
|
# @NOTE below are system git configuration
|
|
- name: Configure git aliases
|
|
become: true
|
|
block:
|
|
- name: Configure non-coding alias for merge subcommand
|
|
community.general.git_config:
|
|
name: alias.assimilate
|
|
add_mode: replace-all
|
|
state: present
|
|
value: merge
|
|
- name: Configure alias for merge subcommand
|
|
community.general.git_config:
|
|
name: alias.mrg
|
|
add_mode: replace-all
|
|
state: present
|
|
value: merge
|
|
- name: Configure non-coding alias for add subcommand
|
|
community.general.git_config:
|
|
name: alias.approve
|
|
add_mode: replace-all
|
|
state: present
|
|
value: add
|
|
- name: Configure non-coding alias for status subcommand
|
|
community.general.git_config:
|
|
name: alias.revisions
|
|
add_mode: replace-all
|
|
state: present
|
|
value: status
|
|
- name: Configure alias for status subcommand
|
|
community.general.git_config:
|
|
name: alias.stat
|
|
add_mode: replace-all
|
|
state: present
|
|
value: status
|
|
- name: Configure non-coding alias for commit subcommand
|
|
community.general.git_config:
|
|
name: alias.finalize
|
|
add_mode: replace-all
|
|
state: present
|
|
value: commit
|
|
- name: Configure alias for commit subcommand
|
|
community.general.git_config:
|
|
name: alias.cit
|
|
add_mode: replace-all
|
|
state: present
|
|
value: commit
|
|
- name: Configure alias for config subcommand
|
|
community.general.git_config:
|
|
name: alias.cfg
|
|
add_mode: replace-all
|
|
state: present
|
|
value: config
|
|
- name: Configure non-coding alias for commit subcommand with signing flag
|
|
community.general.git_config:
|
|
name: alias.claim
|
|
add_mode: replace-all
|
|
state: present
|
|
value: commit -S
|
|
- name: Configure alias for commit subcommand with signing flag
|
|
community.general.git_config:
|
|
name: alias.sig
|
|
add_mode: replace-all
|
|
state: present
|
|
value: commit -S
|
|
- name: Configure non-coding alias for show subcommand
|
|
community.general.git_config:
|
|
name: alias.review
|
|
add_mode: replace-all
|
|
state: present
|
|
value: show
|
|
- name: Configure alias for show subcommand
|
|
community.general.git_config:
|
|
name: alias.peek
|
|
add_mode: replace-all
|
|
state: present
|
|
value: show
|
|
- name: Configure alias for add subcommand with universal staging flag
|
|
community.general.git_config:
|
|
name: alias.badd
|
|
add_mode: replace-all
|
|
state: present
|
|
value: add -A
|
|
- name: Configure non-coding alias for add subcommand with universal staging flag
|
|
community.general.git_config:
|
|
name: alias.approve-all
|
|
add_mode: replace-all
|
|
state: present
|
|
value: add -A
|
|
- name: Configure non-coding alias for rm subcommand
|
|
community.general.git_config:
|
|
name: alias.redact
|
|
add_mode: replace-all
|
|
state: present
|
|
value: rm
|
|
- name: Configure non-coding alias for init subcommand
|
|
community.general.git_config:
|
|
name: alias.author
|
|
add_mode: replace-all
|
|
state: present
|
|
value: init
|
|
- name: Configure non-coding alias for mv subcommand
|
|
community.general.git_config:
|
|
name: alias.revise
|
|
add_mode: replace-all
|
|
state: present
|
|
value: mv
|
|
- name: Configure non-coding alias for rebase subcommand
|
|
community.general.git_config:
|
|
name: alias.retroact
|
|
add_mode: replace-all
|
|
state: present
|
|
value: rebase
|
|
- name: Configure alias for rebase subcommand
|
|
community.general.git_config:
|
|
name: alias.rb
|
|
add_mode: replace-all
|
|
state: present
|
|
value: rebase
|
|
- name: Configure non-coding alias for push subcommand
|
|
community.general.git_config:
|
|
name: alias.publish
|
|
add_mode: replace-all
|
|
state: present
|
|
value: push
|
|
- name: Configure non-coding alias for pull subcommand
|
|
community.general.git_config:
|
|
name: alias.publication
|
|
add_mode: replace-all
|
|
state: present
|
|
value: pull
|
|
- name: Configure non-coding alias for fetch subcommand
|
|
community.general.git_config:
|
|
name: alias.manuscript
|
|
add_mode: replace-all
|
|
state: present
|
|
value: fetch
|
|
- name: Configure alias for fetch subcommand
|
|
community.general.git_config:
|
|
name: alias.get
|
|
add_mode: replace-all
|
|
state: present
|
|
value: fetch
|
|
- name: Configure non-coding alias for clone subcommand
|
|
community.general.git_config:
|
|
name: alias.copy
|
|
add_mode: replace-all
|
|
state: present
|
|
value: clone
|
|
- name: Configure alias for clone subcommand
|
|
community.general.git_config:
|
|
name: alias.cp
|
|
add_mode: replace-all
|
|
state: present
|
|
value: clone
|
|
- name: Configure non-coding alias for branch subcommand
|
|
community.general.git_config:
|
|
name: alias.draft
|
|
add_mode: replace-all
|
|
state: present
|
|
value: branch
|
|
- name: Configure alias for branch subcommand
|
|
community.general.git_config:
|
|
name: alias.br
|
|
add_mode: replace-all
|
|
state: present
|
|
value: branch
|
|
- name: Configure non-coding alias for switch subcommand
|
|
community.general.git_config:
|
|
name: alias.edit
|
|
add_mode: replace-all
|
|
state: present
|
|
value: switch
|
|
- name: Configure alias for switch subcommand
|
|
community.general.git_config:
|
|
name: alias.cd
|
|
add_mode: replace-all
|
|
state: present
|
|
value: switch
|
|
- name: Configure non-coding alias for restore subcommand
|
|
community.general.git_config:
|
|
name: alias.revert
|
|
add_mode: replace-all
|
|
state: present
|
|
value: restore
|
|
- name: Configure alias for restore subcommand
|
|
community.general.git_config:
|
|
name: alias.rs
|
|
add_mode: replace-all
|
|
state: present
|
|
value: restore
|
|
- name: Set default editor for git
|
|
become: true
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: core.editor
|
|
state: present
|
|
value: "{{ config.git.sys.editor }}"
|
|
- name: Create a directory for storing system-level templates for git
|
|
become: true
|
|
ansible.builtin.file:
|
|
group: root
|
|
owner: root
|
|
path: /etc/gitconfig.d
|
|
state: directory
|
|
- name: Create a commit message template file for git
|
|
become: true
|
|
ansible.builtin.copy:
|
|
owner: root
|
|
group: root
|
|
backup: true
|
|
dest: /etc/gitconfig.d/commit.msg
|
|
force: true
|
|
src: gitconfig.d/commit.msg
|
|
- name: Set system-level commit message template file path for git
|
|
become: true
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: commit.template
|
|
state: present
|
|
value: /etc/gitconfig.d/commit.msg
|
|
- name: Set UI to have color for git at system-level
|
|
become: true
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: color.ui
|
|
state: present
|
|
value: "true"
|
|
- name: Set line-end conversion behavior for git
|
|
become: true
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: core.autocrlf
|
|
state: present
|
|
value: input
|
|
# @NOTE below are user git configuration
|
|
- name: Create a user directory for a user gitignore file for git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
ansible.builtin.file:
|
|
owner: "{{ ansible_facts['user_id'] }}"
|
|
group: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].group | default(ansible_facts['user_id']) }}"
|
|
path: "{{ ansible_facts['user_dir'] }}/.config/git"
|
|
state: directory
|
|
- name: Create a user gitignore file for git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
ansible.builtin.copy:
|
|
owner: "{{ ansible_facts['user_id'] }}"
|
|
group: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].group | default(ansible_facts['user_id']) }}"
|
|
backup: true
|
|
dest: "{{ ansible_facts['user_dir'] }}/.config/git/gitignore"
|
|
force: true
|
|
src: gitconfig.d/exclude.rules
|
|
- name: Set user gitignore file path for git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: core.excludesfile
|
|
scope: global
|
|
state: present
|
|
value: "{{ ansible_facts['user_dir'] }}/.config/git/gitignore"
|
|
- name: Create link from user config directory git config file to user home directory git config file
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
community.general.file:
|
|
src: "{{ ansible_facts['user_dir'] }}/.gitconfig"
|
|
dest: "{{ ansible_facts['user_dir'] }}/.config/git/config"
|
|
# @TODO check whether below two attributes make sense for links
|
|
owner: "{{ ansible_facts['user_id'] }}"
|
|
group: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].group | default(ansible_facts['user_id']) }}"
|
|
state: hard
|
|
- name: Set format for keys used by git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: gpg.format
|
|
scope: global
|
|
state: present
|
|
value: openpgp
|
|
- name: Set signing key to be used by git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users and hostvars[inventory_hostname].users[ansible_facts['user_id']].gpg_keys is not None and len(hostvars[inventory_hostname].users[ansible_facts['user_id']].gpg_keys) > 0
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: user.signingkey
|
|
scope: global
|
|
state: present
|
|
value: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].gpg_keys[hostvars[inventory_hostname].users[ansible_facts['user_id']].gpg_keyid_pref].id | default((hostvars[inventory_hostname].users[ansible_facts['user_id']].gpg_keys | random).id) }}"
|
|
- name: Set name of user of git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: user.name
|
|
scope: global
|
|
state: present
|
|
value: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].git_profile.name }}"
|
|
- name: Set email of user of git
|
|
when: ansible_facts['user_id'] in hostvars[inventory_hostname].users
|
|
community.general.git_config:
|
|
add_mode: replace-all
|
|
name: user.email
|
|
scope: global
|
|
state: present
|
|
value: "{{ hostvars[inventory_hostname].users[ansible_facts['user_id']].git_profile.email }}"
|