magic
This commit is contained in:
+21
-20
@@ -19,13 +19,13 @@ error() {
|
||||
echo -e "${RED}[x]${NC} $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
command -v curl >/dev/null 2>&1 || error "curl is required"
|
||||
command -v md5sum >/dev/null 2>&1 || error "md5sum is required"
|
||||
command -v tar >/dev/null 2>&1 || error "tar is required"
|
||||
|
||||
mkdir -p "${INSTALL_DIR}/external" "${INSTALL_DIR}/internal"
|
||||
|
||||
download_bin() {
|
||||
download() {
|
||||
local url="$1" dest="$2"
|
||||
local tmp; tmp="$(mktemp)"
|
||||
curl -fsSL -o "$tmp" "$url" || { rm -f "$tmp"; return 1; }
|
||||
@@ -36,12 +36,10 @@ install_edition() {
|
||||
local edition="$1"
|
||||
local status_url="${BASE_URL}/${edition}/status.json"
|
||||
local status_file="${INSTALL_DIR}/${edition}/status.json"
|
||||
local bin_dir="${INSTALL_DIR}/${edition}/linusware"
|
||||
local bin_path="${bin_dir}/linusware"
|
||||
|
||||
info "Checking ${edition} edition..."
|
||||
|
||||
download_bin "$status_url" "$status_file" || {
|
||||
download "$status_url" "$status_file" || {
|
||||
warn "Could not fetch status.json for ${edition}, skipping"
|
||||
return
|
||||
}
|
||||
@@ -59,37 +57,40 @@ install_edition() {
|
||||
|
||||
local md5_url="${BASE_URL}/${edition}/bin/MD5SUM"
|
||||
local md5_file; md5_file="$(mktemp)"
|
||||
download_bin "$md5_url" "$md5_file" || {
|
||||
download "$md5_url" "$md5_file" || {
|
||||
rm -f "$md5_file"
|
||||
warn "Could not fetch MD5SUM for ${edition}"
|
||||
return
|
||||
}
|
||||
local expected_hash; expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file"
|
||||
local expected_hash
|
||||
expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file"
|
||||
|
||||
local bin_url="${BASE_URL}/${edition}/bin/linusware"
|
||||
local tmp_bin; tmp_bin="$(mktemp)"
|
||||
download_bin "$bin_url" "$tmp_bin" || {
|
||||
rm -f "$tmp_bin"
|
||||
error "Failed to download ${edition} binary"
|
||||
local archive_url="${BASE_URL}/${edition}/bin/linusware.tar.gz"
|
||||
local tmp_archive; tmp_archive="$(mktemp)"
|
||||
download "$archive_url" "$tmp_archive" || {
|
||||
rm -f "$tmp_archive"
|
||||
error "Failed to download ${edition} archive"
|
||||
}
|
||||
|
||||
local actual_hash
|
||||
actual_hash=$(md5sum "$tmp_bin" | cut -d' ' -f1)
|
||||
actual_hash=$(md5sum "$tmp_archive" | cut -d' ' -f1)
|
||||
if [ "$actual_hash" != "$expected_hash" ]; then
|
||||
rm -f "$tmp_bin"
|
||||
rm -f "$tmp_archive"
|
||||
error "MD5 mismatch for ${edition} (expected ${expected_hash}, got ${actual_hash})"
|
||||
fi
|
||||
|
||||
mkdir -p "$bin_dir"
|
||||
mv "$tmp_bin" "$bin_path"
|
||||
chmod +x "$bin_path"
|
||||
rm -rf "${INSTALL_DIR}/${edition}/linusware"
|
||||
tar -xzf "$tmp_archive" -C "${INSTALL_DIR}/${edition}"
|
||||
rm -f "$tmp_archive"
|
||||
|
||||
local run_path="${INSTALL_DIR}/${edition}/linusware/run.sh"
|
||||
chmod +x "$run_path"
|
||||
echo "$version" > "${INSTALL_DIR}/${edition}/version.txt"
|
||||
|
||||
info "${edition} v${version} installed successfully"
|
||||
}
|
||||
|
||||
# main
|
||||
|
||||
info "Installing LinusWare to ${INSTALL_DIR}"
|
||||
echo ""
|
||||
|
||||
@@ -97,8 +98,8 @@ install_edition external
|
||||
install_edition internal
|
||||
|
||||
info "Downloading launcher and updater..."
|
||||
download_bin "${BASE_URL}/launcher.sh" "${INSTALL_DIR}/launcher.sh"
|
||||
download_bin "${BASE_URL}/update.sh" "${INSTALL_DIR}/update.sh"
|
||||
download "${BASE_URL}/launcher.sh" "${INSTALL_DIR}/launcher.sh"
|
||||
download "${BASE_URL}/update.sh" "${INSTALL_DIR}/update.sh"
|
||||
chmod +x "${INSTALL_DIR}/launcher.sh" "${INSTALL_DIR}/update.sh"
|
||||
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user