nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1#!/usr/bin/env nix-shell
2#!nix-shell -i bash -p nix curl cacert
3
4set -euo pipefail
5
6cd $(readlink -e $(dirname "${BASH_SOURCE[0]}"))
7
8export SSL_CERT_FILE=$NIX_SSL_CERT_FILE
9
10readonly SECURITY_KEY="7f8faaaa468174dc1c9cd62e5f218a5b"
11prefix="https://wps-linux-personal.wpscdn.cn"
12
13linux_payload=$(curl -s "https://linux.wps.cn")
14darwin_payload=$(curl -s "https://mac.wps.cn")
15
16linux_version=$(echo "$linux_payload" | grep -oP '(?<=banner_txt">)[^<]+')
17darwin_version=$(echo "$darwin_payload" | grep -oP '(?<=\s)\d+(?:\.\d+)+(?=/)')
18
19linux_amd64_url=$(echo "$linux_payload" | grep -oP "downLoad\('[^']*'" | head -1 | sed "s/downLoad('//;s/'$//")
20darwin_amd64_url="https://package.mac.wpscdn.cn/mac_wps_pkg/${darwin_version}/WPS_Office_${darwin_version}(${darwin_version##*.})_x64.dmg"
21darwin_arm64_url="https://package.mac.wpscdn.cn/mac_wps_pkg/${darwin_version}/WPS_Office_${darwin_version}(${darwin_version##*.})_arm64.dmg"
22
23timestamp10=$(date '+%s')
24linux_amd64_md5hash=($(printf '%s' "$SECURITY_KEY${linux_amd64_url#$prefix}$timestamp10" | md5sum))
25
26linux_amd64_hash=$(nix-prefetch-url --name "wpsoffice-cn-$linux_version.deb" "$linux_amd64_url?t=$timestamp10&k=$linux_amd64_md5hash")
27darwin_amd64_hash=$(nix-prefetch-url --name "wpsoffice-cn-$darwin_version.dmg" "$darwin_amd64_url")
28darwin_arm64_hash=$(nix-prefetch-url --name "wpsoffice-cn-$darwin_version.dmg" "$darwin_arm64_url")
29
30linux_amd64_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$linux_amd64_hash")
31darwin_amd64_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$darwin_amd64_hash")
32darwin_arm64_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$darwin_arm64_hash")
33
34cat > sources.nix << EOF
35# Generated by ./update.sh - do not update manually!
36# Last updated: $(date +%F)
37{
38 linux-version = "$linux_version";
39 darwin-version = "$darwin_version";
40 x86_64-linux = {
41 url = "$linux_amd64_url";
42 hash = "$linux_amd64_hash";
43 };
44 x86_64-darwin = {
45 url = "$darwin_amd64_url";
46 hash = "$darwin_amd64_hash";
47 };
48 aarch64-darwin = {
49 url = "$darwin_arm64_url";
50 hash = "$darwin_arm64_hash";
51 };
52}
53EOF