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 ;
10 : check-releases ( builders -- )
11 [ release-git-id>> ] map all-equal?
12 [ "Some builders are out of date" throw ] unless ;
14 : make-release-directory ( version -- )
15 "Creating release directory..." print flush
16 [ "mkdir -p " % "" release-directory % "\n" % ] "" make
19 : tweet-release ( version announcement-url -- )
22 [ % " released -- " % ] [ shorten-url % ] bi*
23 ] "" make mason-tweet ;
25 :: (do-release) ( version announcement-url -- )
27 builder new select-tuples :> builders
28 builders first release-git-id>> :> git-id
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
41 : send-release-email ( string version -- )
42 [ "text/plain" ] dip "Release output: " prepend mason-email ;
44 :: do-release ( version announcement-url -- )
48 version announcement-url (do-release)
51 version send-release-email
52 ] "Mason release" spawn drop ;