1 #!/usr/bin/env nix-shell
2 #!nix-shell -I nixpkgs=./. -i bash -p curl jq gawk libossp_uuid libxml2 nix
3 # shellcheck shell=bash
7 DEFAULT_NIX
="$(realpath ".
/pkgs
/by-name
/go
/google-chrome
/package.nix
")"
11 local start_pattern
="$2"
12 local end_pattern
="$3"
14 local url
="https://versionhistory.googleapis.com/v1/chrome/platforms/${platform}/channels/stable/versions/all/releases?filter=endtime=none,fraction%3E=0.5&order_by=version%20desc"
19 response
="$(curl --silent --fail "$url")"
20 version
="$(jq ".releases
[0].version
" --raw-output <<< "$response")"
21 current_version
="$(awk "/${start_pattern}/,/${end_pattern}/ { if (\$0 ~ /version = \"/) { match(\$0, /version = \"([^\"]+)\"/, arr); print arr[1]; exit } }" "$DEFAULT_NIX")"
23 echo "$version" "$current_version"
33 read -ra version_info
<<< "$(get_version_info "linux
" "linux
= stdenv.mkDerivation
" "});")"
34 version
="${version_info[0]}"
35 current_version
="${version_info[1]}"
37 if [[ "$current_version" = "$version" ]]; then
38 echo "[Nix] Linux google chrome: same version"
42 local download_url
="https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${version}-1_amd64.deb"
43 new_hash
="$(nix-prefetch-url "$download_url" 2>/dev/null)"
44 new_sri_hash
="$(nix hash to-sri --type sha256 "$new_hash")"
46 sed -i "/^ linux = stdenv.mkDerivation/,/^ });/s/version = \".*\"/version = \"$version\"/" "$DEFAULT_NIX"
47 sed -i "/^ linux = stdenv.mkDerivation/,/^ });/s|hash = \".*\"|hash = \"$new_sri_hash\"|" "$DEFAULT_NIX"
49 echo "[Nix] Linux google-chrome: $current_version -> $version with hash $new_hash"
59 local manifest_version
63 read -ra version_info
<<< "$(get_version_info "mac
" "darwin
= stdenvNoCC.mkDerivation
" "});")"
64 version
="${version_info[0]}"
65 current_version
="${version_info[1]}"
68 if [[ "$current_version" = "$version" ]]; then
69 echo "[Nix] Darwin google chrome: same version"
73 local post_data
="<?xml version='1.0' encoding='UTF-8'?>
74 <request protocol='3.0' version='1.3.23.9' shell_version='1.3.21.103' ismachine='1'
75 sessionid='$uuid' installsource='ondemandcheckforupdate'
76 requestid='$uuid' dedup='cr'>
77 <hw sse='1' sse2='1' sse3='1' ssse3='1' sse41='1' sse42='1' avx='1' physmemory='12582912' />
78 <os platform='mac' version='$version' arch='arm64'/>
79 <app appid='com.google.Chrome' ap=' ' version=' ' nextversion=' ' lang=' ' brand='GGLS' client=' '>
84 response
="$(curl -s -X POST -H "Content-Type
: text
/xml
" --data "$post_data" "https
://tools.google.com
/service
/update2
")"
85 url
="$(echo "$response" | xmllint --xpath "string
(//url
[contains
(@codebase
, 'http://dl.google.com/release2')]/@codebase
)" -)"
86 pkg
="$(echo "$response" | xmllint --xpath "string
(//package
/@name
)" -)"
87 manifest_version
="$(echo "$response" | xmllint --xpath "string
(//manifest
/@version
)" -)"
89 local download_url
="$url$pkg"
90 new_hash
="$(nix hash to-sri --type sha256 "$
(nix-prefetch-url
"$download_url" 2>/dev
/null
)")"
91 new_sri_hash
="$(nix hash to-sri --type sha256 "$new_hash")"
93 sed -i "/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s/version = \".*\"/version = \"$manifest_version\"/" "$DEFAULT_NIX"
94 sed -i "/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s|hash = \".*\"|hash = \"$new_sri_hash\"|" "$DEFAULT_NIX"
95 sed -i "/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s|url = \".*\"|url = \"$download_url\"|" "$DEFAULT_NIX"
97 echo "[Nix] Darwin google-chrome: $current_version -> $manifest_version with hash $new_hash"