1 ! Copyright (C) 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays combinators furnace.actions html.forms
4 kernel xml.syntax mason.platform mason.report present
5 sequences webapps.mason webapps.mason.report
6 webapps.mason.backend webapps.mason.utils ;
7 FROM: webapps.mason.version.files => platform ;
8 IN: webapps.mason.package
10 : building ( builder string -- xml )
11 swap current-git-id>> git-link
12 [XML <-> for <-> XML] ;
14 : status-string ( builder -- string )
16 { +idle+ [ drop "Idle" ] }
17 { +starting+ [ "Starting build" building ] }
18 { +make-vm+ [ "Compiling VM" building ] }
19 { +boot+ [ "Bootstrapping" building ] }
20 { +test+ [ "Testing" building ] }
21 { +upload+ [ "Uploading package" building ] }
22 { +finish+ [ "Finishing build" building ] }
23 { +dirty+ [ drop "Dirty" ] }
24 { +clean+ [ drop "Clean" ] }
25 { +error+ [ drop "Error" ] }
29 : current-status ( builder -- xml )
31 [ current-timestamp>> present " (as of " ")" surround ] bi
34 : build-status ( git-id timestamp -- xml )
35 over [ [ git-link ] [ present ] bi* " (built on " ")" surround 2array ] [ 2drop f ] if ;
37 : packages-url ( builder -- url )
38 platform download-url ;
40 : package-link ( builder -- xml )
41 [ packages-url ] [ last-release>> ] bi [ "/" glue ] keep link ;
43 : packages-link ( builder -- link )
44 packages-url dup link ;
46 : clean-image-url ( builder -- url )
47 platform "https://downloads.factorcode.org/images/clean/" prepend ;
49 : clean-image-link ( builder -- link )
50 clean-image-url dup link ;
52 : last-build-status ( builder -- xml )
53 [ last-git-id>> ] [ last-timestamp>> ] bi build-status ;
55 : clean-build-status ( builder -- xml )
56 [ clean-git-id>> ] [ clean-timestamp>> ] bi build-status ;
58 : <download-package-action> ( -- action )
63 "os" value "cpu" value (platform) "platform" set-value
66 [ package-link "package" set-value ]
67 [ release-git-id>> git-link "git-id" set-value ]
68 [ requirements "requirements" set-value ]
69 [ host-name>> "host-name" set-value ]
70 [ heartbeat-timestamp>> "heartbeat-timestamp" set-value ]
71 [ current-status "status" set-value ]
72 [ last-build-status "last-build" set-value ]
73 [ clean-build-status "last-clean-build" set-value ]
74 [ current-timestamp>> "current-timestamp" set-value ]
75 [ packages-link "binaries" set-value ]
76 [ clean-image-link "clean-images" set-value ]
77 [ report-link "last-report" set-value ]