]> gitweb.factorcode.org Git - factor.git/blob - basis/bootstrap/image/download/download.factor
Create basis vocab root
[factor.git] / basis / bootstrap / image / download / download.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: http.client checksums checksums.openssl splitting assocs
4 kernel io.files bootstrap.image sequences io urls ;
5 IN: bootstrap.image.download
6
7 : url URL" http://factorcode.org/images/latest/" ;
8
9 : download-checksums ( -- alist )
10     url "checksums.txt" >url derive-url http-get nip
11     string-lines [ " " split1 ] { } map>assoc ;
12
13 : need-new-image? ( image -- ? )
14     dup exists?
15     [
16         [ openssl-md5 checksum-file hex-string ]
17         [ download-checksums at ]
18         bi = not
19     ] [ drop t ] if ;
20
21 : download-image ( arch -- )
22     boot-image-name dup need-new-image? [
23         "Downloading " write dup write "..." print
24          url over >url derive-url download
25          need-new-image? [
26              "Boot image corrupt, or checksums.txt on server out of date" throw
27          ] when
28     ] [
29         "Boot image up to date" print
30         drop
31     ] if ;
32
33 : download-my-image ( -- ) my-arch download-image ;
34
35 MAIN: download-my-image