Skip to content

Commit 12381a6

Browse files
authored
feat: automatically update vscode extensions (#332)
* feat: automatically update vscode extensions * chore: update-vscode-extensions runs directly on runner * chore: update to correct vsce package * chore: select more recent nodejs version * chore: add debugging to script * ci: fix argument mistake in jq * chore: revert explicit nodejs setup
1 parent d0cc416 commit 12381a6

5 files changed

Lines changed: 63 additions & 23 deletions

File tree

.devcontainer/devcontainer-metadata-vscode.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
[
22
{
3-
"remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" },
3+
"remoteEnv": {
4+
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
5+
},
46
"customizations": {
57
"vscode": {
68
"extensions": [
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
3+
set -Eeuo pipefail
4+
5+
apt-get update
6+
apt-get install --no-install-recommends -y jq
7+
8+
for FILE in "$@"; do
9+
JSON=$(cat $FILE)
10+
11+
for PACKAGE in $(echo $JSON | jq -r 'keys | .[]'); do
12+
VERSION=$(apt-cache policy "$PACKAGE" | grep -oP '(?<=Candidate:\s)(.+)')
13+
JSON=$(echo $JSON | jq '.[$package] = $version' --arg package $PACKAGE --arg version $VERSION)
14+
done
15+
16+
echo $JSON | jq . > $FILE
17+
done

.devcontainer/update-dependencies.sh

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/env bash
2+
3+
set -Eeuo pipefail
4+
5+
FILE=${1:?}
6+
7+
sudo apt-get update
8+
sudo apt-get install --no-install-recommends -y jq
9+
sudo npm install -g @vscode/vsce
10+
11+
JSON=$(cat $FILE)
12+
EXTENSIONS=
13+
14+
for EXTENSION in $(echo $JSON | jq -r '.[].customizations.vscode.extensions | flatten[]'); do
15+
NAME="${EXTENSION%%@*}"
16+
VERSION=$(vsce show --json $NAME | jq -r '.versions[0].version')
17+
18+
EXTENSIONS="\"$NAME@$VERSION\",$EXTENSIONS"
19+
done
20+
21+
EXTENSIONS=${EXTENSIONS::-1}
22+
23+
echo $JSON | jq '.[].customizations.vscode.extensions = $extensions | sort' --argjson extensions "[$EXTENSIONS]" > $FILE

.github/workflows/update-dependencies.yml

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,28 @@ jobs:
2020
pull-requests: write
2121
steps:
2222
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
23-
- name: Update dependencies
23+
- run: ./update-apt-dependencies.sh apt-requirements-base.json apt-requirements-clang.json
2424
working-directory: .devcontainer
25-
run: ./update-dependencies.sh apt-requirements-base.json apt-requirements-clang.json
2625
- uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1
2726
with:
28-
commit-message: "feat(deps): update dependencies"
27+
commit-message: "feat(deps): update apt dependencies"
2928
branch: feature/update-apt-dependencies
30-
title: "feat(deps): update dependencies"
31-
labels: dependencies
29+
title: "feat(deps): update group apt dependencies"
30+
labels: dependencies,apt
31+
token: ${{ secrets.AMP_RELEASER_TOKEN }}
32+
update-vscode-extensions:
33+
runs-on: ubuntu-latest
34+
permissions:
35+
contents: write
36+
pull-requests: write
37+
steps:
38+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
39+
- run: ./update-vscode-extensions.sh devcontainer-metadata-vscode.json
40+
working-directory: .devcontainer
41+
- uses: peter-evans/create-pull-request@a4f52f8033a6168103c2538976c07b467e8163bc # v6.0.1
42+
with:
43+
commit-message: "feat(deps): update vscode extensions"
44+
branch: feature/update-vscode-extensions
45+
title: "feat(deps): update group vscode extensions"
46+
labels: dependencies,vscode-extensions
3247
token: ${{ secrets.AMP_RELEASER_TOKEN }}

0 commit comments

Comments
 (0)