add `site' makefile target
Also, adjust stamp handling to ensure that it doesn't change during the build process. original commit: d2ddfc09bd1a68f27822a99aee99743e3204d6fa
This commit is contained in:
parent
a95ce7aa51
commit
21c2b5812c
|
@ -6,7 +6,6 @@
|
||||||
(only-in "config.rkt" extract-options))
|
(only-in "config.rkt" extract-options))
|
||||||
|
|
||||||
(define build-dir (build-path "build"))
|
(define build-dir (build-path "build"))
|
||||||
(define dest-dir (build-path build-dir "site"))
|
|
||||||
|
|
||||||
(define built-dir (build-path build-dir "built"))
|
(define built-dir (build-path build-dir "built"))
|
||||||
(define native-dir (build-path build-dir "native"))
|
(define native-dir (build-path build-dir "native"))
|
||||||
|
@ -23,6 +22,12 @@
|
||||||
|
|
||||||
(define config (extract-options config-file config-mode))
|
(define config (extract-options config-file config-mode))
|
||||||
|
|
||||||
|
(define dest-dir (hash-ref config
|
||||||
|
'#:site-dest
|
||||||
|
(build-path build-dir "site")))
|
||||||
|
|
||||||
|
(printf "Assembling site as ~a\n" dest-dir)
|
||||||
|
|
||||||
(define (copy dir [build-dir build-dir])
|
(define (copy dir [build-dir build-dir])
|
||||||
(make-directory* dest-dir)
|
(make-directory* dest-dir)
|
||||||
(printf "Copying ~a\n" (build-path build-dir dir))
|
(printf "Copying ~a\n" (build-path build-dir dir))
|
||||||
|
|
|
@ -164,6 +164,8 @@
|
||||||
;; machine starts by a `git pull' in <dir>; set
|
;; machine starts by a `git pull' in <dir>; set
|
||||||
;; to #f, for example, for a repo checkout that is
|
;; to #f, for example, for a repo checkout that is
|
||||||
;; shared with server; the default is #t
|
;; shared with server; the default is #t
|
||||||
|
;; #:site-dest <path-string> --- destination for completed build; the default
|
||||||
|
;; is "build/site"
|
||||||
;;
|
;;
|
||||||
;; Machine-only keywords:
|
;; Machine-only keywords:
|
||||||
;;
|
;;
|
||||||
|
@ -233,6 +235,7 @@
|
||||||
site-config-options
|
site-config-options
|
||||||
site-config-content
|
site-config-content
|
||||||
current-mode
|
current-mode
|
||||||
|
current-stamp
|
||||||
extract-options)
|
extract-options)
|
||||||
|
|
||||||
(module reader syntax/module-reader
|
(module reader syntax/module-reader
|
||||||
|
@ -353,6 +356,7 @@
|
||||||
[(#:repo) (string? val)]
|
[(#:repo) (string? val)]
|
||||||
[(#:clean?) (boolean? val)]
|
[(#:clean?) (boolean? val)]
|
||||||
[(#:pull?) (boolean? val)]
|
[(#:pull?) (boolean? val)]
|
||||||
|
[(#:site-dest) (path-string? val)]
|
||||||
[else 'bad-keyword]))
|
[else 'bad-keyword]))
|
||||||
|
|
||||||
(define (check-machine-keyword kw val)
|
(define (check-machine-keyword kw val)
|
||||||
|
@ -368,6 +372,15 @@
|
||||||
|
|
||||||
(define current-mode (make-parameter "default"))
|
(define current-mode (make-parameter "default"))
|
||||||
|
|
||||||
|
(define current-stamp
|
||||||
|
(let* ([f (build-path "build" "stamp.txt")]
|
||||||
|
[s (and (file-exists? f)
|
||||||
|
(call-with-input-file* f read-line))])
|
||||||
|
(lambda ()
|
||||||
|
(if (string? s)
|
||||||
|
s
|
||||||
|
"now"))))
|
||||||
|
|
||||||
(define (extract-options config-file config-mode)
|
(define (extract-options config-file config-mode)
|
||||||
(or
|
(or
|
||||||
(and (file-exists? config-file)
|
(and (file-exists? config-file)
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
(keyword-apply make-download-page
|
(keyword-apply make-download-page
|
||||||
(map car args)
|
(map car args)
|
||||||
(map cdr args)
|
(map cdr args)
|
||||||
table-file)))
|
(list table-file))))
|
||||||
|
|
||||||
(define (make-download-page table-file
|
(define (make-download-page table-file
|
||||||
#:dest [dest "index.html"]
|
#:dest [dest "index.html"]
|
||||||
|
|
|
@ -55,48 +55,53 @@
|
||||||
"attach" "-readwrite" "-noverify" "-noautoopen"
|
"attach" "-readwrite" "-noverify" "-noautoopen"
|
||||||
"-mountpoint" mnt dmg)
|
"-mountpoint" mnt dmg)
|
||||||
(define mnt-name (let-values ([(base name dir?) (split-path mnt)]) (path->string name)))
|
(define mnt-name (let-values ([(base name dir?) (split-path mnt)]) (path->string name)))
|
||||||
;; see also https://github.com/andreyvit/yoursway-create-dmg
|
;; See also https://github.com/andreyvit/yoursway-create-dmg
|
||||||
|
;; First, give Finder a chance to see the new disk:
|
||||||
(define script
|
(define script
|
||||||
@~a{
|
@~a{
|
||||||
tell application "Finder"
|
tell application "Finder"
|
||||||
-- look for a single disk with the mount point as its name
|
-- look for a single disk with the mount point as its name
|
||||||
-- (maybe this works only on newer osx versions?)
|
-- (maybe this works only on newer osx versions?)
|
||||||
set myDisks to every disk
|
set theDMGDisk to ""
|
||||||
set theDMGDisk to ""
|
repeat while theDMGDisk = ""
|
||||||
repeat with d in myDisks
|
set myDisks to every disk
|
||||||
if name of d = "@mnt-name"
|
repeat with d in myDisks
|
||||||
if theDMGDisk = ""
|
if name of d = "@mnt-name"
|
||||||
set theDMGDisk to d
|
if theDMGDisk = ""
|
||||||
else
|
set theDMGDisk to d
|
||||||
error "Too many attached DMGs found!"
|
else
|
||||||
end if
|
error "Too many attached DMGs found!"
|
||||||
end if
|
end if
|
||||||
end repeat
|
end if
|
||||||
if theDMGDisk = "" then error "Attached DMG not found!"
|
end repeat
|
||||||
-- found a single matching disk, continue
|
-- not found? maybe Finder wasn't ready
|
||||||
tell theDMGDisk
|
if theDMGDisk = "" then delay 1
|
||||||
open
|
end repeat
|
||||||
set current view of container window to icon view
|
if theDMGDisk = "" then error "Attached DMG not found!"
|
||||||
set toolbar visible of container window to false
|
-- found a single matching disk, continue
|
||||||
set statusbar visible of container window to false
|
tell theDMGDisk
|
||||||
set bounds of container window to {320, 160, 1000, 540}
|
open
|
||||||
set theViewOptions to the icon view options of container window
|
set current view of container window to icon view
|
||||||
set arrangement of theViewOptions to not arranged
|
set toolbar visible of container window to false
|
||||||
set icon size of theViewOptions to 128
|
set statusbar visible of container window to false
|
||||||
set text size of theViewOptions to 16
|
set bounds of container window to {320, 160, 1000, 540}
|
||||||
set background picture of theViewOptions to file "@bg"
|
set theViewOptions to the icon view options of container window
|
||||||
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
|
set arrangement of theViewOptions to not arranged
|
||||||
set position of item "@volname" of container window to {170, 180}
|
set icon size of theViewOptions to 128
|
||||||
set position of item "@bg" of container window to {900, 180}
|
set text size of theViewOptions to 16
|
||||||
set position of item "Applications" of container window to {500, 180}
|
set background picture of theViewOptions to file "@bg"
|
||||||
set name of file "@bg" to ".@bg"
|
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
|
||||||
close
|
set position of item "@volname" of container window to {170, 180}
|
||||||
open
|
set position of item "@bg" of container window to {900, 180}
|
||||||
update without registering applications
|
set position of item "Applications" of container window to {500, 180}
|
||||||
delay 5
|
set name of file "@bg" to ".@bg"
|
||||||
close
|
close
|
||||||
end tell
|
open
|
||||||
end tell
|
update without registering applications
|
||||||
|
delay 5
|
||||||
|
close
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
})
|
})
|
||||||
(printf "~a\n" script)
|
(printf "~a\n" script)
|
||||||
(parameterize ([current-input-port (open-input-string script)])
|
(parameterize ([current-input-port (open-input-string script)])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user