summaryrefslogtreecommitdiff
path: root/src/urls.scm
blob: dfa83ab1ab8af55acbe13a06333c1bd91def0df0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(define-module (src urls)
  #:use-module (srfi srfi-19)
  #:use-module (src date-utils)
  #:export (gnu-url
            weekly-news-post-url
            weekly-news-post-slug
            data-guix-gnu-org-compare-by-datetime-url))

(define* (gnu-url #:optional (path ""))
  "Append PATH to GNU.org URL.

   PATH (string)
     An optional relative URL path to a resource. For example:
     'software/guile/'.

   RETURN VALUE (string)
     A URL. For example: https://gnu.org/software/guile/."
  (string-append "https://gnu.org/" path))

(define* (weekly-news-post-url . args)
  (string-append
   "/"
   (apply weekly-news-post-slug args)
   ".html"))

(define (is-year-and-week-a-draft? year week)
  (time>? (date->time-utc
           (lookup-end-date-for-week year week))
          (current-time)))

(define* (weekly-news-post-slug year week #:key (locale "en_US"))
  (string-append
   (if (is-year-and-week-a-draft? year week)
       "drafts/"
       "")
   (format #f "~a/~d/~2,'0d" locale year week)))

(define* (data-guix-gnu-org-compare-by-datetime-url
          base-datetime
          target-datetime
          #:key (json #f))
  (define (date->string* date)
    (date->string date "~1%20~T"))

  (string-append
   "http://data.guix.gnu.org/compare-by-datetime"
   (if json ".json" "")
   "?base_branch=master"
   "&base_datetime=" (date->string* base-datetime)
   "&target_branch=master"
   "&target_datetime=" (date->string* target-datetime)))