Skip to content

Commit 4d51d20

Browse files
committed
✨ feat: add options to modify VSCode settings + list project-manager's projects
1 parent 58d2e9b commit 4d51d20

File tree

5 files changed

+169
-1
lines changed

5 files changed

+169
-1
lines changed

roles/ansible-role-vscode/README.md

+74
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,26 @@ Requirements
1111
Role Variables
1212
--------------
1313

14+
Default suggested VS Code extensions:
15+
16+
```yaml
17+
# Set this settings to `false` to not install 'suggested' extensions below:
18+
vscode_install_suggested_extensions: true
19+
vscode_suggested_extensions:
20+
- alefragnani.project-manager
21+
- bierner.github-markdown-preview
22+
- donjayamanne.githistory
23+
- editorconfig.editorconfig
24+
- formulahendry.code-runner
25+
- foxundermoon.shell-format
26+
- github.vscode-github-actions
27+
- github.vscode-pull-request-github
28+
- timonwong.shellcheck
29+
- redhat.ansible
30+
- redhat.vscode-xml
31+
- redhat.vscode-yaml
32+
```
33+
1434
To install VS Code extensions:
1535
1636
```yaml
@@ -23,6 +43,45 @@ To uninstall VS Code extensions:
2343
vscode_extensions_uninstall: []
2444
```
2545
46+
Whether or not to force rewrite VSCode settings
47+
48+
```yaml
49+
vscode_settings_force: false
50+
```
51+
52+
Default VS Code settings
53+
54+
```yaml
55+
vscode_settings:
56+
# Panel position:
57+
workbench.panel.defaultLocation: "bottom" # bottom | left | right | top
58+
# DEFAULT settings for VSCode Project Manager extensions
59+
# - https://github.com/alefragnani/vscode-project-manager
60+
# - https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager
61+
projectManager.groupList: true
62+
projectManager.removeCurrentProjectFromList: false
63+
projectManager.checkInvalidPathsBeforeListing: true
64+
projectManager.supportSymlinksOnBaseFolders: false
65+
projectManager.showParentFolderInfoOnDuplicates: false
66+
projectManager.filterOnFullPath: false
67+
projectManager.projectsLocation: ""
68+
projectManager.git.baseFolders: []
69+
projectManager.git.ignoredFolders: []
70+
projectManager.git.maxDepthRecursion: 4
71+
projectManager.ignoreProjectsWithinProjects: false
72+
projectManager.cacheProjectsBetweenSessions: true
73+
projectManager.showProjectNameInStatusBar: true
74+
projectManager.openInNewWindowWhenClickingInStatusBar: false
75+
projectManager.openInCurrentWindowIfEmpty: "always" # always | onlyUsingCommandPalette | onlyUsingSideBar | never
76+
projectManager.tags: ["Personal", "Work"]
77+
```
78+
79+
Define a list of projects which will be managed by [VSCode Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager) extension
80+
81+
```yaml
82+
vscode_projects: []
83+
```
84+
2685
Dependencies
2786
------------
2887
@@ -36,12 +95,27 @@ Example Playbook
3695
hosts: localhost
3796

3897
vars:
98+
vscode_install_suggested_extensions: true
3999
vscode_extensions_install:
40100
- redhat.ansible
41101
- foxundermoon.shell-format
102+
- esbenp.prettier-vscode
42103

43104
vscode_extensions_uninstall:
44105
- ms-azuretools.vscode-azureterraform
106+
107+
vscode_settings_force: true
108+
vscode_settings:
109+
editor.defaultFormatter: "esbenp.prettier-vscode"
110+
"[javascript]":
111+
editor.defaultFormatter: "esbenp.prettier-vscode"
112+
editor.formatOnSave: true
113+
114+
vscode_projects:
115+
- name: "My dotfiles"
116+
rootPath: "~/.dotfiles"
117+
tags: ["Personal"]
118+
enabled: true
45119

46120
roles:
47121
- role: ansible-role-vscode
+55-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
11
---
22
# defaults file for ansible-role-vscode
33

4-
vscode_extensions_install: []
4+
# Set this settings to `false` to not install 'suggested' extensions below:
5+
vscode_install_suggested_extensions: true
6+
vscode_suggested_extensions:
7+
- alefragnani.project-manager
8+
- bierner.github-markdown-preview
9+
- donjayamanne.githistory
10+
- editorconfig.editorconfig
11+
- formulahendry.code-runner
12+
- foxundermoon.shell-format
13+
- github.vscode-github-actions
14+
- github.vscode-pull-request-github
15+
- timonwong.shellcheck
16+
- redhat.ansible
17+
- redhat.vscode-xml
18+
- redhat.vscode-yaml
519

20+
vscode_extensions_install: []
621
vscode_extensions_uninstall: []
22+
23+
# whether or not to force new changes in vscode settings
24+
vscode_settings_force: false
25+
vscode_settings:
26+
# Panel position:
27+
workbench.panel.defaultLocation: "bottom" # bottom | left | right | top
28+
# DEFAULT settings for VSCode Project Manager extensions
29+
# - https://github.com/alefragnani/vscode-project-manager
30+
# - https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager
31+
projectManager.groupList: true
32+
projectManager.removeCurrentProjectFromList: false
33+
projectManager.checkInvalidPathsBeforeListing: true
34+
projectManager.supportSymlinksOnBaseFolders: false
35+
projectManager.showParentFolderInfoOnDuplicates: false
36+
projectManager.filterOnFullPath: false
37+
projectManager.projectsLocation: ""
38+
projectManager.git.baseFolders: []
39+
projectManager.git.ignoredFolders: []
40+
projectManager.git.maxDepthRecursion: 4
41+
projectManager.ignoreProjectsWithinProjects: false
42+
projectManager.cacheProjectsBetweenSessions: true
43+
projectManager.showProjectNameInStatusBar: true
44+
projectManager.openInNewWindowWhenClickingInStatusBar: false
45+
projectManager.openInCurrentWindowIfEmpty: "always" # always | onlyUsingCommandPalette | onlyUsingSideBar | never
46+
projectManager.tags: ["Personal", "Work"]
47+
48+
# Define a list of projects which will be managed by VSCode Project Manager extension
49+
vscode_projects: []
50+
# vscode_projects:
51+
# - name: "Dotsfiles"
52+
# rootPath: "~/projects/dotfiles"
53+
# paths: []
54+
# tags: ["Personal"]
55+
# enabled: true
56+
# - name: "Numbered Bookmarks"
57+
# rootPath: "~/Documents/GitHub/vscode-numbered-bookmarks"
58+
# paths: []
59+
# tags: ["Personal", "VS Code"]
60+
# enabled: false

roles/ansible-role-vscode/tasks/main.yml

+38
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
---
22
# tasks file for ansible-role-vscode
33

4+
- name: Install VSCode Suggested Extensions for WSL
5+
ansible.builtin.command: "code --install-extension {{ item }}"
6+
register: vscode_install_ext_suggested
7+
changed_when:
8+
- vscode_install_ext_suggested.rc == 0
9+
- '"already installed" not in vscode_install_ext_suggested.stdout'
10+
loop: "{{ vscode_suggested_extensions }}"
11+
when: vscode_install_suggested_extensions
12+
413
- name: Install VSCode Extensions for WSL
514
ansible.builtin.command: "code --install-extension {{ item }}"
615
register: vscode_install_ext
@@ -18,3 +27,32 @@
1827
- '"not installed" not in vscode_uninstall_ext.stdout'
1928
loop: "{{ vscode_extensions_uninstall }}"
2029
when: vscode_extensions_uninstall | length > 0
30+
31+
- name: Ensure VSCode settings directory exists
32+
ansible.builtin.file:
33+
path: "{{ ansible_user_dir }}/.vscode-server/data/Machine"
34+
state: directory
35+
mode: "0700"
36+
access_time: preserve
37+
modification_time: preserve
38+
39+
- name: Write VSCode settings for WSL machine
40+
ansible.builtin.template:
41+
src: settings.json.j2
42+
dest: "{{ ansible_user_dir }}/.vscode-server/data/Machine/settings.json"
43+
force: "{{ vscode_settings_force | bool }}"
44+
mode: "0600"
45+
46+
- name: Check if project-manager directory exists
47+
ansible.builtin.stat:
48+
path: "{{ ansible_user_dir }}/.vscode-server/data/User/globalStorage/alefragnani.project-manager"
49+
register: project_manager_dir
50+
51+
- name: Define a list of projects which will be managed by vscode project-manager
52+
ansible.builtin.template:
53+
src: projects.json.j2
54+
dest: "{{ ansible_user_dir }}/.vscode-server/data/User/globalStorage/alefragnani.project-manager/projects.json"
55+
mode: u+rwx
56+
when:
57+
- project_manager_dir.stat.exists
58+
- vscode_projects | length > 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{ vscode_projects | to_nice_json }}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{ vscode_settings | to_nice_json }}

0 commit comments

Comments
 (0)