]> gitweb.factorcode.org Git - factor.git/blob - extra/mason/version/version.factor
Merge branch 'master' of git://factorcode.org/git/factor into s3
[factor.git] / extra / mason / version / version.factor
1 ! Copyright (C) 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors bit.ly combinators db.tuples debugger fry
4 grouping io io.streams.string kernel locals make mason.email
5 mason.server mason.twitter mason.version.binary
6 mason.version.common mason.version.data mason.version.files
7 mason.version.source sequences threads ;
8 IN: mason.version
9
10 : check-releases ( builders -- )
11     [ release-git-id>> ] map all-equal?
12     [ "Some builders are out of date" throw ] unless ;
13
14 : make-release-directory ( version -- )
15     "Creating release directory..." print flush
16     [ "mkdir -p " % "" release-directory remote-directory % "\n" % ] "" make
17     execute-on-server ;
18
19 : tweet-release ( version announcement-url -- )
20     [
21         "Factor " %
22         [ % " released -- " % ] [ shorten-url % ] bi*
23     ] "" make mason-tweet ;
24
25 :: (do-release) ( version announcement-url -- )
26     [
27         builder new select-tuples :> builders
28         builders first release-git-id>> :> git-id
29
30         builders check-releases
31         version make-release-directory
32         version builders do-binary-release
33         version builders update-binary-releases
34         version git-id do-source-release
35         version git-id announcement-url update-version
36         version announcement-url tweet-release
37
38         "Done." print flush
39     ] with-mason-db ;
40
41 : send-release-email ( string version -- )
42     [ "text/plain" ] dip "Release output: " prepend mason-email ;
43
44 :: do-release ( version announcement-url -- )
45     [
46         [
47             [
48                 version announcement-url (do-release)
49             ] try
50         ] with-string-writer
51         version send-release-email
52     ] "Mason release" spawn drop ;