factor/extra/mason/build/build.factor

55 lines
1.5 KiB
Factor

! Copyright (C) 2008, 2011 Eduardo Cavazos, Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays calendar combinators continuations io.directories
io.pathnames kernel mason.child mason.cleanup mason.common
mason.config mason.docs mason.git mason.notify mason.platform
mason.release mason.updates namespaces sequences ;
IN: mason.build
: create-build-dir ( -- )
now datestamp stamp set
build-dir make-directory ;
: enter-build-dir ( -- )
"Building in directory " build-dir append print-timestamp
build-dir set-current-directory ;
: clone-source ( -- )
"Cloning GIT repository" print-timestamp
"git" "clone" builds-dir get "factor" append-path 3array
short-running-process ;
: copy-image ( -- )
builds-dir get target-boot-image-name append-path
[ "." copy-file-into ] [ "factor" copy-file-into ] bi ;
: save-git-id ( -- )
"factor" [ git-id ] with-directory {
[ "git-id" to-file ]
[ "factor/git-id" to-file ]
[ current-git-id set ]
[ notify-begin-build ]
} cleave ;
: begin-build ( -- )
clone-source
copy-image
save-git-id ;
: do-build ( -- )
create-build-dir
enter-build-dir
[
begin-build
build-child
[ notify-report ] [
status-clean eq?
[ notify-upload upload-docs release ] when
] bi
notify-finish
finish-build
] [ cleanup-build ] [ ] cleanup
notify-idle ;
MAIN: do-build