feat: 优化客户端跨平台配置和运行态管理
This commit is contained in:
@@ -72,6 +72,27 @@ print(rel.replace(os.sep, "/").strip("/"))
|
||||
PY
|
||||
}
|
||||
|
||||
install_directory_id() {
|
||||
python3 - "$1" <<'PY'
|
||||
import hashlib
|
||||
import os
|
||||
import sys
|
||||
|
||||
value = os.path.realpath(sys.argv[1]).replace(os.sep, "/").rstrip("/")
|
||||
print(hashlib.sha256(value.encode("utf-8")).hexdigest())
|
||||
PY
|
||||
}
|
||||
|
||||
user_data_manifest_candidate() {
|
||||
local runtime_dir="$1"
|
||||
local manifest_name="$2"
|
||||
local data_home="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||
local install_id
|
||||
install_id="$(install_directory_id "$runtime_dir")"
|
||||
printf '%s/Marsco/UpdateClientSDK/installations/%s/update/manifest_cache/%s' \
|
||||
"$data_home" "$install_id" "$manifest_name"
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--source-dir) SOURCE_DIR="$2"; shift 2 ;;
|
||||
@@ -148,12 +169,27 @@ if [[ -n "$DUPLICATE_MAIN" ]]; then
|
||||
fi
|
||||
|
||||
MANIFEST_NAME="manifest_${CURRENT_VERSION}.json"
|
||||
SOURCE_MANIFEST="$SOURCE_DIR/$(join_relative_path "$RUNTIME_DIR_RELATIVE" "update/manifest_cache/$MANIFEST_NAME")"
|
||||
if [[ ! -f "$SOURCE_MANIFEST" && -f "$SOURCE_DIR/update/manifest_cache/$MANIFEST_NAME" ]]; then
|
||||
SOURCE_MANIFEST="$SOURCE_DIR/update/manifest_cache/$MANIFEST_NAME"
|
||||
if [[ -z "$RUNTIME_DIR_RELATIVE" ]]; then
|
||||
RUNTIME_DIR_ABSOLUTE="$SOURCE_DIR"
|
||||
else
|
||||
RUNTIME_DIR_ABSOLUTE="$SOURCE_DIR/$RUNTIME_DIR_RELATIVE"
|
||||
fi
|
||||
MANIFEST_CANDIDATES=(
|
||||
"$(user_data_manifest_candidate "$RUNTIME_DIR_ABSOLUTE" "$MANIFEST_NAME")"
|
||||
"$SOURCE_DIR/$(join_relative_path "$RUNTIME_DIR_RELATIVE" "update/manifest_cache/$MANIFEST_NAME")"
|
||||
"$SOURCE_DIR/update/manifest_cache/$MANIFEST_NAME"
|
||||
)
|
||||
SOURCE_MANIFEST=""
|
||||
for candidate in "${MANIFEST_CANDIDATES[@]}"; do
|
||||
if [[ -f "$candidate" ]]; then
|
||||
SOURCE_MANIFEST="$candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "$SKIP_MANIFEST_CHECK" -eq 0 && ! -f "$SOURCE_MANIFEST" ]]; then
|
||||
echo "Missing signed Manifest cache for current version: $SOURCE_MANIFEST. Complete online update/verification for this version before packaging." >&2
|
||||
echo "Missing signed Manifest cache for current version: $MANIFEST_NAME." >&2
|
||||
echo "Complete online update/verification for this version before packaging. Searched paths:" >&2
|
||||
printf ' - %s\n' "${MANIFEST_CANDIDATES[@]}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user