Spaces:
Running
Running
Upload 2 files
Browse files- create_languagepacks.sh +91 -0
- 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 |
+
}
|