;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*- ;;; Copyright (C) 2012 Nikita Karetnikov ;;; ;;; This file is part of Guix. ;;; ;;; Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with Guix. If not, see . (define-module (guix gnu-maintenance) #:use-module (web uri) #:use-module (web client) #:use-module (web response) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (ice-9 regex)) (define (http-fetch str) "Fetch a file from STR, which should be a URI." (let*-values (((resp data) (http-get (string->uri str))) ((code) (response-code resp))) (case code ((200) data) (else (error "download failed:" str code (string-downcase (response-reason-phrase resp))))))) (define (rx-filter lst rx) "Filter a list using a regexp." (map (cut match:substring <>) ((cut delete #f <>) (map (cut regexp-exec rx <>) lst)))) (define %womb (string-append "http://cvs.savannah.gnu.org/" "viewvc/*checkout*/gnumaint/" "gnupackages.txt?root=womb")) (define-public (gnu-packages-womb) "Return a list of GNU packages." (let ((lst (string-split (http-fetch %womb) #\nl))) (map (cut string-drop <> 9) (rx-filter lst (make-regexp "^package: (.+)$")))))