1 ! Copyright (C) 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors bitly combinators db.tuples debugger fry
4 grouping io io.streams.string kernel locals make sequences
5 threads mason.email mason.twitter webapps.mason.backend
6 webapps.mason.version.common webapps.mason.version.data
7 webapps.mason.version.files webapps.mason.version.source
8 webapps.mason.version.binary ;
9 IN: webapps.mason.version
11 : check-releases ( builders -- )
12 [ release-git-id>> ] map all-equal?
13 [ "Some builders are out of date" throw ] unless ;
15 : make-release-directory ( version -- )
16 "Creating release directory..." print flush
17 [ "mkdir -p " % "" release-directory remote-directory % "\n" % ] "" make
20 : tweet-release ( version announcement-url -- )
23 [ % " released -- " % ] [ shorten-url % ] bi*
24 ] "" make mason-tweet ;
26 :: (do-release) ( version announcement-url -- )
28 builder new select-tuples :> builders
29 builders first release-git-id>> :> git-id
31 builders check-releases
32 version make-release-directory
33 version builders do-binary-release
34 version builders update-binary-releases
35 version git-id do-source-release
36 version git-id announcement-url update-version
37 version announcement-url tweet-release
42 : send-release-email ( string version -- )
43 [ "text/plain" ] dip "Release output: " prepend mason-email ;
45 :: do-release ( version announcement-url -- )
49 version announcement-url (do-release)
52 version send-release-email
53 ] "Mason release" spawn drop ;