Skip to content

Commit b1671f2

Browse files
committed
refactor: use plain string substitution instead of string.Template
Signed-off-by: suin <[email protected]>
1 parent f00fafc commit b1671f2

File tree

2 files changed

+30
-32
lines changed

2 files changed

+30
-32
lines changed

flake.nix.tpl

+15-15
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@
1616
else if system == "aarch64-linux" then "linux-arm64"
1717
else if system == "x86_64-darwin" then "darwin-amd64"
1818
else if system == "aarch64-darwin" then "darwin-arm64"
19-
else throw "Unsupported system: $${system}";
19+
else throw "Unsupported system: ${system}";
2020

2121
cli = pkgs.stdenv.mkDerivation rec {
2222
pname = "kcl-cli";
23-
version = "$cli_version";
23+
version = "{{ cli_version }}";
2424
2525
src = pkgs.fetchurl {
26-
url = "https://github.com/kcl-lang/cli/releases/download/v$${version}/kcl-v$${version}-$${getArch system}.tar.gz";
26+
url = "https://github.com/kcl-lang/cli/releases/download/v${version}/kcl-v${version}-${getArch system}.tar.gz";
2727
sha256 = {
28-
x86_64-linux = "$cli_hash_x86_64_linux";
29-
aarch64-linux = "$cli_hash_aarch64_linux";
30-
x86_64-darwin = "$cli_hash_x86_64_darwin";
31-
aarch64-darwin = "$cli_hash_aarch64_darwin";
32-
}.$${system};
28+
x86_64-linux = "{{ cli_hash_x86_64_linux }}";
29+
aarch64-linux = "{{ cli_hash_aarch64_linux }}";
30+
x86_64-darwin = "{{ cli_hash_x86_64_darwin }}";
31+
aarch64-darwin = "{{ cli_hash_aarch64_darwin }}";
32+
}.${system};
3333
};
3434

3535
dontUnpack = true;
@@ -47,16 +47,16 @@
4747

4848
language-server = pkgs.stdenv.mkDerivation rec {
4949
pname = "kcl-language-server";
50-
version = "$kcl_version";
50+
version = "{{ kcl_version }}";
5151
5252
src = pkgs.fetchurl {
53-
url = "https://github.com/kcl-lang/kcl/releases/download/v$${version}/kclvm-v$${version}-$${getArch system}.tar.gz";
53+
url = "https://github.com/kcl-lang/kcl/releases/download/v${version}/kclvm-v${version}-${getArch system}.tar.gz";
5454
sha256 = {
55-
x86_64-linux = "$language_server_hash_x86_64_linux";
56-
aarch64-linux = "$language_server_hash_aarch64_linux";
57-
x86_64-darwin = "$language_server_hash_x86_64_darwin";
58-
aarch64-darwin = "$language_server_hash_aarch64_darwin";
59-
}.$${system};
55+
x86_64-linux = "{{ language_server_hash_x86_64_linux }}";
56+
aarch64-linux = "{{ language_server_hash_aarch64_linux }}";
57+
x86_64-darwin = "{{ language_server_hash_x86_64_darwin }}";
58+
aarch64-darwin = "{{ language_server_hash_aarch64_darwin }}";
59+
}.${system};
6060
};
6161

6262
installPhase = ''

update_flake.py

+15-17
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import json
33
import urllib.request
44
import subprocess
5-
from string import Template
65

76
def fetch_latest_release(repo):
87
url = f"https://api.github.com/repos/kcl-lang/{repo}/releases/latest"
@@ -12,6 +11,7 @@ def fetch_latest_release(repo):
1211

1312
def calculate_hash(url):
1413
try:
14+
print(f"Calculating hash for {url}")
1515
result = subprocess.run(['nix-prefetch-url', url], capture_output=True, text=True, check=True)
1616
return result.stdout.strip()
1717
except subprocess.CalledProcessError as e:
@@ -21,35 +21,32 @@ def calculate_hash(url):
2121

2222
def generate_flake():
2323
with open('flake.nix.tpl', 'r') as f:
24-
template = Template(f.read())
24+
template = f.read()
2525

2626
kcl_version = fetch_latest_release("kcl")
2727
cli_version = fetch_latest_release("cli")
2828

2929
substitutions = {
3030
'kcl_version': kcl_version,
31-
'cli_version': cli_version
31+
'cli_version': cli_version,
32+
'cli_hash_x86_64_linux': calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-linux-amd64.tar.gz"),
33+
'cli_hash_aarch64_linux': calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-linux-arm64.tar.gz"),
34+
'cli_hash_x86_64_darwin': calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-darwin-amd64.tar.gz"),
35+
'cli_hash_aarch64_darwin': calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-darwin-arm64.tar.gz"),
36+
'language_server_hash_x86_64_linux': calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-linux-amd64.tar.gz"),
37+
'language_server_hash_aarch64_linux': calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-linux-arm64.tar.gz"),
38+
'language_server_hash_x86_64_darwin': calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-darwin-amd64.tar.gz"),
39+
'language_server_hash_aarch64_darwin': calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-darwin-arm64.tar.gz"),
3240
}
3341

34-
# CLI hashes
35-
substitutions['cli_hash_x86_64_linux'] = calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-linux-amd64.tar.gz")
36-
substitutions['cli_hash_aarch64_linux'] = calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-linux-arm64.tar.gz")
37-
substitutions['cli_hash_x86_64_darwin'] = calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-darwin-amd64.tar.gz")
38-
substitutions['cli_hash_aarch64_darwin'] = calculate_hash(f"https://github.com/kcl-lang/cli/releases/download/v{cli_version}/kcl-v{cli_version}-darwin-arm64.tar.gz")
39-
40-
# Language server hashes
41-
substitutions['language_server_hash_x86_64_linux'] = calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-linux-amd64.tar.gz")
42-
substitutions['language_server_hash_aarch64_linux'] = calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-linux-arm64.tar.gz")
43-
substitutions['language_server_hash_x86_64_darwin'] = calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-darwin-amd64.tar.gz")
44-
substitutions['language_server_hash_aarch64_darwin'] = calculate_hash(f"https://github.com/kcl-lang/kcl/releases/download/v{kcl_version}/kclvm-v{kcl_version}-darwin-arm64.tar.gz")
42+
for key, value in substitutions.items():
43+
template = template.replace(f'{{{{ {key} }}}}', value)
4544

4645
print(f"substitutions: {substitutions}")
47-
result = template.safe_substitute(substitutions)
48-
4946
warning_comment = "# WARNING: This file is automatically generated. Do not edit directly.\n"
5047
warning_comment += "# Instead, modify the flake.nix.tpl file and run the update script.\n\n"
5148

52-
new_content = warning_comment + result
49+
new_content = warning_comment + template
5350

5451
content_changed = True
5552
if os.path.exists('flake.nix'):
@@ -74,3 +71,4 @@ def generate_flake():
7471

7572
if __name__ == "__main__":
7673
generate_flake()
74+

0 commit comments

Comments
 (0)