diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd40682..0dffcfd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ The **patch** part changes incrementally at each release. ### Changed +* etc-git: commit in /usr/share/scripts when there's an active repository + ### Fixed ### Removed diff --git a/etc-git/tasks/commit.yml b/etc-git/tasks/commit.yml index 58aee384..9833601e 100644 --- a/etc-git/tasks/commit.yml +++ b/etc-git/tasks/commit.yml @@ -1,57 +1,27 @@ --- -- name: is /etc clean? - command: git status --porcelain - args: - chdir: /etc - changed_when: False - register: git_status - when: not ansible_check_mode - ignore_errors: yes - tags: - - etc-git - - commit-etc -- debug: - var: git_status - verbosity: 3 - tags: - - etc-git - - commit-etc +- name: Is /etc a git repository + stat: + path: /etc/.git + register: _etc_git -- name: fetch current Git user.email - git_config: - name: user.email - repo: /etc - register: git_config_user_email - ignore_errors: yes - tags: - - etc-git - - commit-etc +- include: do_commit.yml + vars: + git_folder: "/etc" + when: + - _etc_git.stat.exists + - _etc_git.stat.isdir -- name: "set commit author" - set_fact: - commit_author: '{% if ansible_env.SUDO_USER is not defined %}root{% else %}{{ ansible_env.SUDO_USER }}{% endif %}' - commit_email: '{% if git_config_user_email.config_value is not defined or not git_config_user_email.config_value %}root@localhost{% else %}{{ git_config_user_email.config_value }}{% endif %}' # noqa 204 - tags: - - etc-git - - commit-etc -- name: "/etc modifications are committed" - shell: "git add -A . && git commit -m \"{{ commit_message | mandatory }}\" --author \"{{ commit_author | mandatory }} <{{ commit_email | mandatory }}>\"" - args: - chdir: /etc - register: etc_commit_end_run + +- name: Is /usr/share/scripts a git repository + stat: + path: /usr/share/scripts/.git + register: _usr_share_scripts_git + +- include: do_commit.yml + vars: + git_folder: "/usr/share/scripts" when: - - not ansible_check_mode - - git_status.stdout - ignore_errors: yes - tags: - - etc-git - - commit-etc - -- debug: - var: etc_commit_end_run - verbosity: 4 - tags: - - etc-git - - commit-etc + - _usr_share_scripts_git.stat.exists + - _usr_share_scripts_git.stat.isdir diff --git a/etc-git/tasks/do_commit.yml b/etc-git/tasks/do_commit.yml new file mode 100644 index 00000000..f13c7e50 --- /dev/null +++ b/etc-git/tasks/do_commit.yml @@ -0,0 +1,64 @@ +--- + +- name: "Remount /usr if needed" + include_role: + name: remount-usr + when: git_folder is match('/usr/.*') + + +- name: "is {{ git_folder }} clean?" + command: git status --porcelain + args: + chdir: "{{ git_folder }}" + changed_when: False + register: git_status + when: not ansible_check_mode + ignore_errors: yes + tags: + - etc-git + - commit + +- debug: + var: git_status + verbosity: 3 + tags: + - etc-git + - commit + +- name: fetch current Git user.email + git_config: + name: user.email + repo: "{{ git_folder }}" + register: git_config_user_email + ignore_errors: yes + tags: + - etc-git + - commit + +- name: "set commit author" + set_fact: + commit_author: '{% if ansible_env.SUDO_USER is not defined %}root{% else %}{{ ansible_env.SUDO_USER }}{% endif %}' + commit_email: '{% if git_config_user_email.config_value is not defined or not git_config_user_email.config_value %}root@localhost{% else %}{{ git_config_user_email.config_value }}{% endif %}' # noqa 204 + tags: + - etc-git + - commit + +- name: "{{ git_folder }} modifications are committed" + shell: "git add -A . && git commit -m \"{{ commit_message | mandatory }}\" --author \"{{ commit_author | mandatory }} <{{ commit_email | mandatory }}>\"" + args: + chdir: "{{ git_folder }}" + register: commit_end_run + when: + - not ansible_check_mode + - git_status.stdout + ignore_errors: yes + tags: + - etc-git + - commit + +- debug: + var: commit_end_run + verbosity: 4 + tags: + - etc-git + - commit