forked from benhoskings/babushka-deps
-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy.rb
75 lines (63 loc) · 1.33 KB
/
deploy.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
meta :task do
accepts_block_for :run
template {
met? { @run_called }
meet {
call_task(:run)
@run_called = true
}
}
end
dep 'deploy repo up to date' do
setup {
set :repo_path, '.'
}
requires [
'branch name',
'clean.repo',
'branch exists.repo',
'branch checked out.repo',
'HEAD up to date.repo',
'submodules up to date.task',
'cached JS and CSS removed',
'app bundled',
'app flagged for restart.task'
]
end
dep 'branch name' do
end
meta :repo do
def repo
@repo ||= Babushka::GitRepo.new(var(:repo_path))
end
end
dep 'clean.repo' do
met? { repo.clean? }
end
dep 'branch exists.repo' do
met? { repo.branches.include? var(:branch) }
meet { repo.branch! var(:branch) }
end
dep 'branch checked out.repo' do
met? { repo.current_branch == var(:branch) }
meet { repo.checkout! var(:branch) }
end
dep 'HEAD up to date.repo' do
met? { repo.current_head == var(:new_id) }
meet { repo.reset_hard! var(:new_id) }
end
dep 'submodules up to date.task' do
run {
shell "git submodule update --init"
}
end
dep 'cached JS and CSS removed' do
meet {
shell "rm -f public/javascripts/all.js"
shell "rm -f public/stylesheets/all.css"
}
end
dep 'app flagged for restart.task' do
before { shell 'mkdir -p tmp' }
run { shell 'touch tmp/restart.txt' }
end