-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
127 lines (97 loc) · 2.74 KB
/
Makefile
File metadata and controls
127 lines (97 loc) · 2.74 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#
# Make file to combine, uglify and lint JS libs
#
build: sfmin bookmin booklink chrome2 cleanup
INTRO_FILE = templates/intro
COPY_YEAR = $(shell date "+%Y")
DATE = $(shell date)
#
# Builds the intros for each JavaScript file
#
# build_intro (library title, root, path to lib)
#
define build_intro
sed -e 's/@DATE/${DATE}/' \
-e 's/@COPY_YEAR/${COPY_YEAR}/' \
-e 's/@LIB/${1}/' \
-e 's/@PATH/${3}/' \
${INTRO_FILE} > ${INTRO_FILE}.tmp
uglifyjs -nc js/${2}${3}.js > js/min/${3}.min.js
cat ${INTRO_FILE}.tmp js/min/${3}.min.js > js/min/${3}.min.js.tmp
mv js/min/${3}.min.js.tmp js/min/${3}.min.js
rm -rf ${INTRO_FILE}.tmp
endef
#
# Combines files with newlines
#
# combine (first file, second file, output file)
#
define combine
cat ${1} templates/newline ${2} > ${3}
endef
#
# URL encodes JavaScript for use in HTML as a String
#
# urlencode (file)
#
define urlencode
cat ${1} | python -c 'import sys,urllib;print urllib.quote(sys.stdin.read().strip())' > ${1}.tmp
mv ${1}.tmp ${1}
rm -rf ${1}.tmp
endef
#
# Creates the anchor tag for the bookmarklet
#
# build_link (file)
#
define build_link
cat templates/index_start ${1} templates/index_end > test/index.html
endef
#
# Minifies all files in the src dir into the build dir.
# Renames the files to be filename.min.js
#
# build_all()
#
define build_all
for file in js/*; do \
y=$${file%.*}.min.js; \
z=$${y##*/}; \
uglifyjs -nc $${file} > build/$${z}; \
done
endef
sf:
$(call combine,js/scriptloader.js,js/stackfiddle.js,js/sl-sf.js)
$(call combine,js/sl-sf.js,js/link/stackfiddle-link.js,js/sl-sf-link.js)
sfmin:
$(call build_intro,Scriptloader,,scriptloader)
$(call build_intro,StackFiddle,,stackfiddle)
$(call build_intro,StackFiddle Link,link/,stackfiddle-link)
$(call combine,js/scriptloader.js,js/stackfiddle.js,js/sl-sf.js)
$(call combine,js/sl-sf.js,js/link/stackfiddle-link.js,js/sl-sf-link.js)
$(call combine,js/min/scriptloader.min.js,js/min/stackfiddle.min.js,js/min/sl-sf.min.js)
$(call combine,js/min/sl-sf.min.js,js/min/stackfiddle-link.min.js,js/min/sl-sf-link.min.js)
bookmin:
uglifyjs -nc js/link/bookmarklet.js > js/min/bookmarklet.min.js
$(call urlencode,js/min/bookmarklet.min.js)
booklink:
$(call build_link,js/min/bookmarklet.min.js)
chrome2:
$(call combine,js/sl-sf.js,chrome/js/stackfiddle-chrome.js,chrome/js/sl-sf-chrome.js)
cp css/stackfiddle.css chrome/css/stackfiddle.css
zip -r chrome/stackfiddle-chrome-ext.zip chrome/
cleanup:
rm -rf js/min/scriptloader.min.js
rm -rf js/min/stackfiddle.min.js
rm -rf js/min/bookmarklet.min.js
rm -rf js/min/sl-sf.min.js
rm -rf js/min/stackfiddle-link.min.js
rm -rf js/sl-sf.js
minall:
#$(call build_all,/js/*)
sflint:
jslint js/stackfiddle.js
sllint:
jslint js/scriptloader.js
booklint:
jslint js/bookmarklet.js