LAST233 commited on
Commit
615fb98
·
verified ·
1 Parent(s): f34a58f

Upload 2 files

Browse files
Files changed (2) hide show
  1. create_languagepacks.sh +91 -0
  2. settings.json +68 -0
create_languagepacks.sh ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # 定义路径
4
+ EXTENSIONS_DIR="$HOME/.local/share/code-server/extensions"
5
+ OUTPUT_DIR="$HOME/.local/share/code-server"
6
+ LANGUAGE_PACK_PREFIX="ms-ceintl.vscode-language-pack-"
7
+
8
+ # 定义输出文件
9
+ LANGUAGEPACKS_FILE="$OUTPUT_DIR/languagepacks.json"
10
+ ARGV_FILE="$OUTPUT_DIR/User/argv.json"
11
+ EXTENSIONS_JSON="$EXTENSIONS_DIR/extensions.json"
12
+
13
+ # 创建 User 目录(如果不存在)
14
+ mkdir -p "$(dirname "$ARGV_FILE")"
15
+
16
+ # 查找语言包目录
17
+ LANGUAGE_PACK_FOLDER=$(find "$EXTENSIONS_DIR" -type d -name "${LANGUAGE_PACK_PREFIX}*" | head -n 1)
18
+
19
+ # 检查语言包文件夹是否存在
20
+ if [ -z "$LANGUAGE_PACK_FOLDER" ]; then
21
+ echo "未找到语言包文件夹,请确保路径正确。"
22
+ exit 1
23
+ fi
24
+
25
+ # 从 package.json 中提取数据
26
+ PACKAGE_JSON="$LANGUAGE_PACK_FOLDER/package.json"
27
+ if [ ! -f "$PACKAGE_JSON" ]; then
28
+ echo "未找到 package.json 文件,请检查语言包目录。"
29
+ exit 1
30
+ fi
31
+
32
+ # 从 extensions.json 中提取 UUID
33
+ if [ ! -f "$EXTENSIONS_JSON" ]; then
34
+ echo "未找到 extensions.json 文件,请检查路径。"
35
+ exit 1
36
+ fi
37
+
38
+ LANGUAGE_PACK_NAME=$(jq -r '.name' "$PACKAGE_JSON")
39
+ echo "找到语言包: $LANGUAGE_PACK_NAME"
40
+ LANGUAGE_PACK_UUID=$(jq -r --arg id "ms-ceintl.$LANGUAGE_PACK_NAME" '.[] | select(.identifier.id == $id) | .identifier.uuid' "$EXTENSIONS_JSON")
41
+
42
+ if [ -z "$LANGUAGE_PACK_UUID" ]; then
43
+ echo "未能在 extensions.json 中找到对应语言包的 UUID"
44
+ exit 1
45
+ fi
46
+
47
+ # 提取其他必要信息
48
+ LANGUAGE_ID=$(jq -r '.contributes.localizations[0].languageId' "$PACKAGE_JSON")
49
+ LANGUAGE_LABEL=$(jq -r '.contributes.localizations[0].localizedLanguageName' "$PACKAGE_JSON")
50
+ LANGUAGE_PACK_VERSION=$(jq -r '.version' "$PACKAGE_JSON")
51
+
52
+ # 动态生成 translations
53
+ TRANSLATIONS=$(jq -n --arg dir "$LANGUAGE_PACK_FOLDER" --argjson translations "$(jq '.contributes.localizations[0].translations' "$PACKAGE_JSON")" '
54
+ reduce $translations[] as $item ({}; . + {($item.id): "\($dir)/\($item.path)"})
55
+ ')
56
+
57
+ # 生成 languagepacks.json
58
+ HASH=$(echo -n "$LANGUAGE_PACK_UUID$LANGUAGE_PACK_VERSION" | md5sum | awk '{print $1}')
59
+ cat > "$LANGUAGEPACKS_FILE" <<EOL
60
+ {
61
+ "${LANGUAGE_ID}": {
62
+ "hash": "${HASH}",
63
+ "extensions": [
64
+ {
65
+ "extensionIdentifier": {
66
+ "id": "${LANGUAGE_PACK_NAME}",
67
+ "uuid": "${LANGUAGE_PACK_UUID}"
68
+ },
69
+ "version": "${LANGUAGE_PACK_VERSION}"
70
+ }
71
+ ],
72
+ "translations": ${TRANSLATIONS},
73
+ "label": "${LANGUAGE_LABEL}"
74
+ }
75
+ }
76
+ EOL
77
+
78
+ # 格式化 languagepacks.json
79
+ jq '.' "$LANGUAGEPACKS_FILE" > "$LANGUAGEPACKS_FILE.tmp" && mv "$LANGUAGEPACKS_FILE.tmp" "$LANGUAGEPACKS_FILE"
80
+ echo "languagepacks.json 已生成并格式化: $LANGUAGEPACKS_FILE"
81
+
82
+ # 生成 argv.json
83
+ cat > "$ARGV_FILE" <<EOL
84
+ {
85
+ "locale": "${LANGUAGE_ID}"
86
+ }
87
+ EOL
88
+
89
+ # 格式化 argv.json
90
+ jq '.' "$ARGV_FILE" > "$ARGV_FILE.tmp" && mv "$ARGV_FILE.tmp" "$ARGV_FILE"
91
+ echo "argv.json 已生成并格式化: $ARGV_FILE"
settings.json ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "luogu.cphPort": 7680,
3
+ "cph-ng.companion.listenPort": 7680,
4
+ "workbench.editor.empty.hint": "hidden",
5
+ "git.autofetch": true,
6
+ "code-runner.runInTerminal": true,
7
+ "code-runner.executorMap": {
8
+ "javascript": "node",
9
+ "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
10
+ "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
11
+ "zig": "zig run",
12
+ "cpp": "cd $dir && g++ \"$fileName\" -o out.out && ./out.out",
13
+ "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
14
+ "php": "php",
15
+ "python": "python -u",
16
+ "perl": "perl",
17
+ "perl6": "perl6",
18
+ "ruby": "ruby",
19
+ "go": "go run",
20
+ "lua": "lua",
21
+ "groovy": "groovy",
22
+ "powershell": "powershell -ExecutionPolicy ByPass -File",
23
+ "bat": "cmd /c",
24
+ "shellscript": "bash",
25
+ "fsharp": "fsi",
26
+ "csharp": "scriptcs",
27
+ "vbscript": "cscript //Nologo",
28
+ "typescript": "ts-node",
29
+ "coffeescript": "coffee",
30
+ "scala": "scala",
31
+ "swift": "swift",
32
+ "julia": "julia",
33
+ "crystal": "crysta l",
34
+ "ocaml": "ocaml",
35
+ "r": "Rscript",
36
+ "applescript": "osascript",
37
+ "clojure": "lein exec",
38
+ "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
39
+ "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
40
+ "racket": "racket",
41
+ "scheme": "csi -script",
42
+ "ahk": "autohotkey",
43
+ "autoit": "autoit3",
44
+ "dart": "dart",
45
+ "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
46
+ "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
47
+ "haskell": "runghc",
48
+ "nim": "nim compile --verbosity:0 --hints:off --run",
49
+ "lisp": "sbcl --script",
50
+ "kit": "kitc --run",
51
+ "v": "v run",
52
+ "sass": "sass --style expanded",
53
+ "scss": "scss --style expanded",
54
+ "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
55
+ "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
56
+ "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
57
+ "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
58
+ "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
59
+ "sml": "cd $dir && sml $fileName",
60
+ "mojo": "mojo run",
61
+ "erlang": "escript",
62
+ "spwn": "spwn build",
63
+ "pkl": "cd $dir && pkl eval -f yaml $fileName -o $fileNameWithoutExt.yaml",
64
+ "gleam": "gleam run -m $fileNameWithoutExt"
65
+ },
66
+ "terminal.integrated.enableMultiLinePasteWarning": "never",
67
+ "luogu.cphStyle": "ProblemIDwithProblemName"
68
+ }