Skip to content

Commit 97956cd

Browse files
authored
Merge pull request #106 from dspolleke/mydock
dockutil
2 parents cba70eb + 8e9b8de commit 97956cd

File tree

8 files changed

+85
-4
lines changed

8 files changed

+85
-4
lines changed

ansible.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
[defaults]
22
nocows = True
33
roles_path = ./roles:/etc/ansible/roles
4+
stdout_callback = yaml
5+

default.config.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@ configure_dotfiles: true
55
configure_terminal: true
66
configure_osx: true
77

8+
configure_dock: []
9+
dockitems_to_remove: []
10+
# Example: to remove all / some items added by default on Big Sur uncomment use example below
11+
# dockitems_to_remove:
12+
# - Launchpad
13+
# - Safari
14+
# - Messages
15+
# - Mail
16+
# - Maps
17+
# - Photos
18+
# - FaceTime
19+
# - Calendar
20+
# - Contacts
21+
# - Reminders
22+
# - Notes
23+
# - TV
24+
# - Music
25+
# - Podcasts
26+
# - 'App Store'
27+
28+
dockitems_to_persist:
29+
- name: "Google Chrome"
30+
path: "/Applications/Google Chrome.app/"
31+
- name: "Sublime Text"
32+
path: "/Applications/Sublime Text.app/"
833
configure_sudoers: false
934
sudoers_custom_config: ''
1035
# Example:

main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
- include_tasks: tasks/extra-packages.yml
3838
tags: ['extra-packages']
3939

40+
- import_tasks: tasks/dock.yml
41+
when: configure_dock
42+
tags: ['dock']
43+
4044
- name: Run configured post-provision ansible task files.
4145
include_tasks: "{{ outer_item }}"
4246
loop_control:

tasks/adddock.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
- name: find if dock {{ item }} exists
3+
ansible.builtin.command:
4+
cmd: dockutil --find '{{ item.name }}'
5+
register: dockitem_exists
6+
failed_when: '"No such file or directory" in dockitem_exists.stdout'
7+
changed_when: false
8+
tags: ['dock']
9+
- name: Ensure dock {{ item }} exists
10+
ansible.builtin.command:
11+
cmd: dockutil --add '{{ item.path }}'
12+
when: dockitem_exists.rc >0
13+
tags: ['dock']

tasks/dock.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
- name: Install dockutil
3+
homebrew:
4+
name: dockutil
5+
state: present
6+
notify:
7+
- Clear homebrew cache
8+
- name: remove dockitems
9+
ansible.builtin.include_tasks: tasks/remdock.yml
10+
loop: "{{ dockitems_to_remove }}"
11+
12+
- name: Ensure required dock items exist.
13+
ansible.builtin.include_tasks: tasks/adddock.yml
14+
with_items: "{{ dockitems_to_persist }}"
15+
16+
- name: Ensure correct dock order
17+
ansible.builtin.command:
18+
cmd: dockutil --move '{{ item.name }}' --position '{{ item.pos }}'
19+
when:
20+
- item.pos is defined
21+
- item.pos length >0
22+
loop: "{{ dockitems_to_persist }}"

tasks/extra-packages.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}"
66
# Ansible 2.4 supports `global_command` making `working_dir` optional.
77
working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}"
8-
with_items: "{{ composer_packages }}"
8+
loop: "{{ composer_packages }}"
99

1010
- name: Install global NPM packages.
1111
npm:
@@ -14,15 +14,15 @@
1414
version: "{{ item.version | default(omit) }}"
1515
global: true
1616
executable: "{{ item.executable | default(omit) }}"
17-
with_items: "{{ npm_packages }}"
17+
loop: "{{ npm_packages }}"
1818

1919
- name: Install global Pip packages.
2020
pip:
2121
name: "{{ item.name | default(item) }}"
2222
state: "{{ item.state | default('present') }}"
2323
version: "{{ item.version | default(omit) }}"
2424
executable: "{{ item.executable | default(omit) }}"
25-
with_items: "{{ pip_packages }}"
25+
loop: "{{ pip_packages }}"
2626

2727
- name: Install global Ruby gems.
2828
gem:
@@ -31,4 +31,4 @@
3131
version: "{{ item.version | default(omit) }}"
3232
user_install: false
3333
executable: "{{ item.executable | default(omit) }}"
34-
with_items: "{{ gem_packages }}"
34+
loop: "{{ gem_packages }}"

tasks/osx.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
- name: Run .osx dotfiles.
44
command: "{{ osx_script }}"
55
changed_when: false
6+
tags: ['osx']

tasks/remdock.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
- name: find if dock item exists
3+
ansible.builtin.command:
4+
cmd: dockutil --find '{{ item }}'
5+
register: dockitem_exists
6+
changed_when: false
7+
failed_when: '"No such file or directory" in dockitem_exists.stdout'
8+
tags: ['dock']
9+
10+
- name: Ensure unwanted dock items removed.
11+
ansible.builtin.command:
12+
cmd: dockutil --remove '{{ item }}'
13+
when: dockitem_exists.rc == 0
14+
tags: ['dock']

0 commit comments

Comments
 (0)