diff options
Diffstat (limited to 'provider')
-rw-r--r-- | provider/posts/blog/git-deploy.md | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/provider/posts/blog/git-deploy.md b/provider/posts/blog/git-deploy.md index 92d94fe..443f8d8 100644 --- a/provider/posts/blog/git-deploy.md +++ b/provider/posts/blog/git-deploy.md | |||
@@ -19,6 +19,7 @@ handled by `post-update`: | |||
19 | ~~~{.sh} | 19 | ~~~{.sh} |
20 | #!/usr/bin/env zsh | 20 | #!/usr/bin/env zsh |
21 | 21 | ||
22 | |||
22 | touchedMaster=false | 23 | touchedMaster=false |
23 | 24 | ||
24 | for ref ($@); do | 25 | for ref ($@); do |
@@ -31,19 +32,43 @@ done | |||
31 | $touchedMaster || exit 0 | 32 | $touchedMaster || exit 0 |
32 | 33 | ||
33 | { | 34 | { |
34 | tmpDir=$(mktemp -d) | 35 | checkoutDir=/srv/git/checkouts/$(basename $(pwd)) |
35 | delTmpDir() { | 36 | |
36 | cd / | 37 | print ${checkoutDir} |
37 | rm -rf ${tmpDir} | 38 | |
38 | } | 39 | mkdir -p $(dirname ${checkoutDir}) |
39 | 40 | ||
40 | trap delTmpDir EXIT | 41 | unset GIT_DIR |
41 | 42 | ||
42 | git clone --branch master --depth 1 --single-branch file://$(pwd) ${tmpDir} | 43 | if [[ -d ${checkoutDir} ]]; then |
44 | git -C ${checkoutDir} fetch origin | ||
45 | else | ||
46 | rm -rf ${checkoutDir} | ||
47 | git clone --depth 1 file://$(pwd) ${checkoutDir} | ||
48 | fi | ||
43 | 49 | ||
44 | cd ${tmpDir} | 50 | git -C ${checkoutDir} checkout -f origin/master |
45 | umask 0022 | 51 | |
46 | nix-shell --run "dirty-haskell build && dirty-haskell deploy" | 52 | { |
53 | umask 0022 | ||
54 | cd ${checkoutDir} | ||
55 | |||
56 | script=$(mktemp) | ||
57 | delScript() { | ||
58 | rm -v ${script} | ||
59 | } | ||
60 | trap delScript EXIT | ||
61 | chmod +x ${script} | ||
62 | |||
63 | >${script} <<EOF | ||
64 | #! /usr/bin/env nix-shell | ||
65 | #! nix-shell -i sh ${checkoutDir}/shell.nix | ||
66 | |||
67 | dirty-haskell build && dirty-haskell deploy | ||
68 | EOF | ||
69 | |||
70 | ${script} | ||
71 | } | ||
47 | } 2>&1 | stdbuf -o 0 tr '\r' '\n' | logger --id=$$ -p daemon.info -t dirty-haskell | 72 | } 2>&1 | stdbuf -o 0 tr '\r' '\n' | logger --id=$$ -p daemon.info -t dirty-haskell |
48 | ~~~ | 73 | ~~~ |
49 | 74 | ||