This repository has been archived by the owner on Apr 30, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.coffee
89 lines (79 loc) · 2.23 KB
/
Gruntfile.coffee
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
module.exports = (grunt) ->
hash = ''
shortHash = ''
targetDirectory = 'cdn'
grunt.initConfig {
pkg: grunt.file.readJSON('package.json')
clean: [targetDirectory]
compass:
dist:
options:
sassDir: 'static/css/sass'
cssDir: 'tmp/static/css'
environment: 'production'
copy:
img:
expand: true
cwd: 'static/img'
src: ['**']
dest: 'tmp/static/img'
filter: 'isFile'
fonts:
expand: true
cwd: 'static/fonts'
src: ['**']
dest: 'tmp/static/fonts'
filter: 'isFile'
shell:
chash:
command: 'git log --pretty=format:\'%H\' -n 1'
options:
callback: (err, stdout, stderr, cb) ->
hash = stdout
shortHash = hash.substr(0,7)
cb()
moveFiles:
command: () -> ['mkdir ', targetDirectory, ' && mv tmp ', targetDirectory, '/', shortHash].join('')
config:
command: () -> ['sed \'s/{uniqueTarget}/', targetDirectory, '\\/', shortHash, '/\' _config.yml.default > _config.yml'].join('')
gitGhPages:
command: 'git checkout gh-pages'
gitMaster:
command: 'git checkout master'
gitUpdateMaster:
command: 'git pull --rebase'
gitRebaseMaster:
command: 'git rebase master'
gitAddNewAssets:
command: () -> ['git add -A ', targetDirectory, ' && git add _config.yml'].join('')
gitCommit:
command: () -> ['git commit -m "deployment: ', hash, '"'].join('')
gitPushMaster:
command: 'git push origin master'
gitPushGhPages:
command: 'git push origin gh-pages'
}
grunt.loadNpmTasks 'grunt-shell'
grunt.loadNpmTasks 'grunt-contrib-clean'
grunt.loadNpmTasks 'grunt-contrib-compass'
grunt.loadNpmTasks 'grunt-contrib-copy'
grunt.registerTask 'build-assets', [
'clean'
'shell:chash'
'compass'
'copy'
'shell:moveFiles'
'shell:config'
]
grunt.registerTask 'deploy', [
'shell:gitMaster'
'shell:gitUpdateMaster'
'build-assets'
'shell:gitAddNewAssets'
'shell:gitCommit'
'shell:gitPushMaster'
'shell:gitGhPages'
'shell:gitRebaseMaster'
'shell:gitPushGhPages'
'shell:gitMaster'
]