-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.justfile
165 lines (156 loc) Β· 4.06 KB
/
.justfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
EXT := if os() == "windows" { ".exe" } else { "" }
CWD := invocation_directory()
VSCODE := invocation_directory() / "editors" / "vscode"
BIN_NAME := "tooling-language-server"
# Default hidden recipe for listing other recipes + cwd
[no-cd]
[no-exit-message]
[private]
default:
#!/usr/bin/env bash
set -euo pipefail
printf "Current directory:\n {{CWD}}\n"
just --list
# Builds the language server
[no-exit-message]
build *ARGS:
#!/usr/bin/env bash
set -euo pipefail
cargo build --bin {{BIN_NAME}} {{ARGS}}
# Copies the built language server into the VSCode (VSIX) extension build directory
[no-exit-message]
[private]
vsix-copy-files TARGET_DIR DEBUG="false":
#!/usr/bin/env bash
set -euo pipefail
#
rm -rf "{{VSCODE}}/out"
rm -rf "{{VSCODE}}/bin"
rm -rf "{{VSCODE}}/CHANGELOG.md"
rm -rf "{{VSCODE}}/LICENSE.txt"
mkdir -p "{{VSCODE}}/out"
mkdir -p "{{VSCODE}}/bin"
#
if [[ "{{DEBUG}}" == "true" ]]; then
mkdir -p {{VSCODE}}/out/debug/
cp {{TARGET_DIR}}/debug/{{BIN_NAME}}{{EXT}} {{VSCODE}}/out/debug/
else
mkdir -p {{VSCODE}}/out/release/
cp {{TARGET_DIR}}/release/{{BIN_NAME}}{{EXT}} {{VSCODE}}/out/release/
fi
#
cp CHANGELOG.md {{VSCODE}}/CHANGELOG.md
cp LICENSE.txt {{VSCODE}}/LICENSE.txt
# Packages the VSCode (VSIX) extension - vsix-copy-files must be used first
[no-exit-message]
[private]
vsix-package:
#!/usr/bin/env bash
set -euo pipefail
cd "{{VSCODE}}/"
bun install
vsce package --out "{{VSCODE}}/bin/"
# Fully builds the language server + VSIX (VSCode + Open VSX) extension for publishing
[no-exit-message]
vsix-build TARGET_TRIPLE:
#!/usr/bin/env bash
set -euo pipefail
#
echo "π§ Building language server..."
just build --release --target {{TARGET_TRIPLE}}
echo "π¦ Copying language server files..."
just vsix-copy-files "target/{{TARGET_TRIPLE}}"
echo "π§° Building extension..."
just vsix-package
# Builds and publishes the VSIX (VSCode + Open VSX) extension to marketplaces
[no-exit-message]
vsix-publish TARGET_TRIPLE EXTENSION_TARGET:
#!/usr/bin/env bash
set -euo pipefail
#
just vsix-build {{TARGET_TRIPLE}}
#
echo "π Publishing extension..."
cd "{{VSCODE}}/"
vsce publish --skip-duplicate --target {{EXTENSION_TARGET}}
ovsx publish --skip-duplicate --target {{EXTENSION_TARGET}}
echo "β
Published extension successfully!"
# Builds and installs the VSCode extension locally
[no-exit-message]
vscode-install DEBUG="false":
#!/usr/bin/env bash
set -euo pipefail
#
echo "π§ Building language server..."
if [[ "{{DEBUG}}" == "true" ]]; then
just build
else
just build --release
fi
echo "π¦ Copying language server files..."
just vsix-copy-files "target" {{DEBUG}} > /dev/null
echo "π§° Building extension..."
just vsix-package > /dev/null
echo "π Installing extension..."
#
EXTENSION=$(find "{{VSCODE}}/bin/" -name "*.vsix")
code --install-extension "$EXTENSION" &> /dev/null
#
echo "β
Installed extension successfully!"
# Zips up language server and built extensions into single zip file
[no-exit-message]
zip-release TARGET_TRIPLE:
#!/usr/bin/env bash
set -euo pipefail
rm -rf staging
rm -rf release.zip
mkdir -p staging
cp "target/{{TARGET_TRIPLE}}/release/{{BIN_NAME}}{{EXT}}" staging/
cp "$(find "{{VSCODE}}/bin/" -name "*.vsix")" staging/extension.vsix
cd staging
if [ "{{os_family()}}" = "windows" ]; then
7z a ../release.zip *
else
chmod +x {{BIN_NAME}}
zip ../release.zip *
fi
cd "{{CWD}}"
rm -rf staging
# Used in GitHub workflow to move per-matrix release zips
[no-exit-message]
[private]
unpack-releases RELEASES_DIR:
#!/usr/bin/env bash
set -euo pipefail
#
if [ ! -d "{{RELEASES_DIR}}" ]; then
echo "Releases directory is missing"
exit 1
fi
#
cd "{{RELEASES_DIR}}"
echo ""
echo "Releases dir:"
ls -lhrt
echo ""
echo "Searching for zipped releases..."
#
for DIR in * ; do
if [ -d "$DIR" ]; then
cd "$DIR"
for FILE in * ; do
if [ ! -d "$FILE" ]; then
if [ "$FILE" = "release.zip" ]; then
echo "Found zipped release '$DIR'"
mv "$FILE" "../$DIR.zip"
rm -rf "../$DIR/"
fi
fi
done
cd ..
fi
done
#
echo ""
echo "Releases dir:"
ls -lhrt