mirror of
https://gitlab.com/nonguix/nonguix.git
synced 2026-01-25 03:54:58 -06:00
Merge branch 'chrome-updater' into 'master'
import: Add %google-chrome-updater. See merge request nonguix/nonguix!815
This commit is contained in:
commit
e99d572a79
1 changed files with 69 additions and 0 deletions
69
guix/import/google-chrome.scm
Normal file
69
guix/import/google-chrome.scm
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
;;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
;;; Copyright © 2026 Anderson Torres <anderson.torres.8519@gmail.com>
|
||||
|
||||
;;; This file is not part of GNU Guix but requires this naming scheme
|
||||
;;; so that the %chrome-updater is properly read when using
|
||||
;;; `guix refresh -L$(pwd) google-chrome-canary' in nonguix root.
|
||||
|
||||
(define-module (guix import google-chrome)
|
||||
#:use-module (guix import json)
|
||||
#:use-module (guix memoization)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix upstream)
|
||||
#:export (%google-chrome-updater))
|
||||
|
||||
(define (extract-google-chrome-version channel)
|
||||
"Extract the most recent Google Chrome version from CHANNEL.
|
||||
|
||||
CHANNEL can be stable, beta, canary and dev; dev corresponds to unstable."
|
||||
(let* ((json-data-url
|
||||
(string-append "https://versionhistory.googleapis.com/v1/"
|
||||
"chrome/platforms/linux/channels/"
|
||||
channel
|
||||
"/versions/all/releases?"
|
||||
"filter=endtime=none,fraction%3E=0.5&order_by=version%20desc"))
|
||||
(json-data (json-fetch json-data-url))
|
||||
(release-data (assoc-ref json-data "releases"))
|
||||
(release (vector-ref release-data 0))
|
||||
(version (assoc-ref release "version")))
|
||||
version))
|
||||
|
||||
(define (google-chrome-versions)
|
||||
"Returns an alist of all Google Chrome versions."
|
||||
(memoize
|
||||
(lambda _
|
||||
(list
|
||||
(cons "google-chrome-stable" (extract-google-chrome-version "stable"))
|
||||
(cons "google-chrome-beta" (extract-google-chrome-version "beta"))
|
||||
(cons "google-chrome-canary" (extract-google-chrome-version "canary"))
|
||||
(cons "google-chrome-unstable" (extract-google-chrome-version "dev"))))))
|
||||
|
||||
(define* (latest-release package #:key (version #f) partial-version?)
|
||||
"Return an <upstream-source> for the latest release of PACKAGE."
|
||||
(let* ((name (package-name package))
|
||||
(version (or version
|
||||
(assoc-ref ((google-chrome-versions)) name))))
|
||||
(upstream-source
|
||||
(package name)
|
||||
(version version)
|
||||
(urls
|
||||
(list (string-append
|
||||
"https://dl.google.com/linux/chrome/deb/pool/main/g/"
|
||||
name "/" name "_" version "-1_amd64.deb"))))))
|
||||
|
||||
(define (google-chrome-package? package)
|
||||
"Return true if PACKAGE is Google Chrome."
|
||||
(member (package-name package)
|
||||
(list "google-chrome-stable"
|
||||
"google-chrome-beta"
|
||||
"google-chrome-canary"
|
||||
"google-chrome-unstable")))
|
||||
|
||||
(define %google-chrome-updater
|
||||
(upstream-updater
|
||||
(name 'google-chrome)
|
||||
(description "Updater for Google Chrome packages")
|
||||
(pred google-chrome-package?)
|
||||
(import latest-release)))
|
||||
|
||||
;;; google-chrome.scm ends here.
|
||||
Loading…
Add table
Reference in a new issue