forked from hzheng/1pass4all
/
Makefile
138 lines (118 loc) · 5.2 KB
/
Makefile
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
128
129
130
131
132
133
134
135
136
137
138
### APP VARIABLES
APP = 1pass4all
VERSION = 0.2.8
VERSION_STR = v$(subst .,_,$(VERSION))
APP_TITLE = $(APP)-$(VERSION_STR)
BOOKMARKLET_NAME = $(APP).js
TIME := $(shell date +%Y_%m%d_%H%M)
### PARAMETERS
SALT = 9rjixtK35p091K2glFZWDgueRFqmSNfX
# uncomment the next line if you need a refresh salt
#SALT := $(shell base64 < /dev/urandom | tr / - | head -c 32)
PASS_LEN = 10
PASS_BASE = 94
ITERATION = 100
# auto-submit(true or false)
AUTO_SUBMIT = true
SCRIPT_URL = http:\/\/hzheng.github.com\/$(APP)\/archive\/$(BOOKMARKLET_NAME)
APP_HOME_URL = http:\/\/hzheng.github.com\/$(APP)
### DIRECTORIES
SRC_DIR = src
LIB_DIR = lib
TPL_DIR = template
RES_DIR = resources
BUILD_DIR = build
#DIST_DIR = $(BUILD_DIR)/$(TIME)
DIST_DIR = $(BUILD_DIR)/dist
### SOURCES
BASIC_SRC = $(SRC_DIR)/hasher.js $(SRC_DIR)/passCreator.js
BOOKMARKLET_SRC = $(BASIC_SRC) $(SRC_DIR)/1pass4all.js
MOBILE_SRC = $(BASIC_SRC) $(SRC_DIR)/1pass4all_mobile.js
INSTALL_RES = $(SRC_DIR)/install.js $(SRC_DIR)/install.css
INSTALL_TPL = $(TPL_DIR)/install.html
INSTALL_ZH_TPL = $(TPL_DIR)/install_zh.html
MOBILE_TPL = $(TPL_DIR)/mobile.html
### BUILDS
COMPILED_BOOKMARKLET_JS = $(BUILD_DIR)/compiled_bookmarklet.js
COMPILED_MOBILE_JS = $(BUILD_DIR)/compiled_mobile.js
ENCODED_JS = $(BUILD_DIR)/encoded.js
BOOKMARKLET_URL = $(BUILD_DIR)/bookmark.url
INSTALL_HTM = $(BUILD_DIR)/install.html
INSTALL_ZH_HTM = $(BUILD_DIR)/install_zh.html
MOBILE_HTM = $(BUILD_DIR)/mobile.html
BUILT_BOOKMARKLET_JS = $(BUILD_DIR)/$(APP_TITLE).js
BUILT_MOBILE_JS = $(BUILD_DIR)/$(APP_TITLE)_mobile.js
MOBILE_URL = $(BUILD_DIR)/mobile.url
### TARGETS
all: init $(INSTALL_HTM) $(INSTALL_ZH_HTM) $(BOOKMARKLET_URL)
init:
@mkdir -p $(DIST_DIR)
$(COMPILED_BOOKMARKLET_JS): $(BOOKMARKLET_SRC)
@echo "compiling $^ to $@ (salt: $(SALT))"
@sed -e 's/\(version: "\).*"/\1$(VERSION)"/' -e 's/\(debug = \)true/\10/' \
-e 's/\(autoSubmit: "\).*"/\1$(AUTO_SUBMIT)"/' \
-e 's/\(homeUrl: "\).*"/\1$(APP_HOME_URL)"/' \
-e 's/\(passLen: "\).*"/\1$(PASS_LEN)"/' \
-e 's/\(passBase: "\).*"/\1$(PASS_BASE)"/' \
-e 's/\(iteration: "\).*"/\1$(ITERATION)"/' \
-e 's/\(salt: "\).*"/\1$(SALT)"/' $^ \
| java -jar $(LIB_DIR)/compiler.jar --js_output_file $@
$(COMPILED_MOBILE_JS): $(MOBILE_SRC)
@echo "compiling $^ to $@ (salt: $(SALT))"
@sed -e 's/\(version: "\).*"/\1$(VERSION)"/' -e 's/\(debug = \)true/\10/' \
-e 's/\(passLen: "\).*"/\1$(PASS_LEN)"/' \
-e 's/\(passBase: "\).*"/\1$(PASS_BASE)"/' \
-e 's/\(iteration: "\).*"/\1$(ITERATION)"/' \
-e 's/\(salt: "\).*"/\1$(SALT)"/' $^ \
| java -jar $(LIB_DIR)/compiler.jar --js_output_file $@
$(BUILT_BOOKMARKLET_JS): $(COMPILED_BOOKMARKLET_JS)
@echo "generating wrapped script(bookmarklet):" $@
@(echo "(function(){" | cat - $<; echo "})();") > $@
@cp $@ $(DIST_DIR)/$(BOOKMARKLET_NAME)
$(BUILT_MOBILE_JS): $(COMPILED_MOBILE_JS)
@echo "generating wrapped script(mobile):" $@
@(echo "(function(){" | cat - $<; echo "})();") > $@
# Chrome and Safari 5 won't work for single percentage signs
# Single quotes must be escaped
$(ENCODED_JS): $(BUILT_BOOKMARKLET_JS)
@echo "generating encoded script:" $@
@sed -e 's/%/%25/g' -e "s/'/%27/g" $< > $@
$(INSTALL_HTM): $(ENCODED_JS) $(INSTALL_TPL) $(INSTALL_RES) $(MOBILE_URL)
@echo "generating installation page: " $@
@sed -e 's/$$VERSION/$(VERSION)/' -e 's/$$SCRIPT_URL/$(SCRIPT_URL)/' \
-e 's/$$SALT/$(SALT)/' -e 's/$$ITERATION/$(ITERATION)/' \
-e 's/$$PASS_LEN/$(PASS_LEN)/' -e 's/$$PASS_BASE/$(PASS_BASE)/' \
-e 's/$$AUTO_SUBMIT/$(AUTO_SUBMIT)/' $(INSTALL_TPL) \
| awk '{if ($$0 ~ /\$$MOBILE_URL/) {while (getline < "$(MOBILE_URL)") print} else if ($$0 ~ /\$$SCRIPT/) {while (getline < "$<") print} else print}' > $@
@cp $@ $(INSTALL_RES) $(RES_DIR)/* $(DIST_DIR)/
$(INSTALL_ZH_HTM): $(ENCODED_JS) $(INSTALL_ZH_TPL) $(MOBILE_URL)
@echo "generating Chinese installation page: " $@
@sed -e 's/$$VERSION/$(VERSION)/' -e 's/$$SCRIPT_URL/$(SCRIPT_URL)/' \
-e 's/$$SALT/$(SALT)/' -e 's/$$ITERATION/$(ITERATION)/' \
-e 's/$$PASS_LEN/$(PASS_LEN)/' -e 's/$$PASS_BASE/$(PASS_BASE)/' \
-e 's/$$AUTO_SUBMIT/$(AUTO_SUBMIT)/' $(INSTALL_ZH_TPL) \
| awk '{if ($$0 ~ /\$$MOBILE_URL/) {while (getline < "$(MOBILE_URL)") print} else if ($$0 ~ /\$$SCRIPT/) {while (getline < "$<") print} else print}' > $@
@cp $@ $(INSTALL_RES) $(RES_DIR)/* $(DIST_DIR)/
@cp $@ $(DIST_DIR)/
$(MOBILE_HTM): $(BUILT_MOBILE_JS) $(MOBILE_TPL)
@echo "generating mobile page: " $@
@sed -e 's/$$VERSION/$(VERSION)/' -e 's/$$APP_HOME_URL/$(APP_HOME_URL)/' \
-e 's/$$SALT/$(SALT)/' -e 's/$$PASS_LEN/$(PASS_LEN)/' \
-e 's/$$ITERATION/$(ITERATION)/' $(MOBILE_TPL) \
| awk '{if ($$0 ~ /\$$SCRIPT/) {while (getline < "$<") print} else print}' > $@
@cp $@ $(DIST_DIR)/
$(MOBILE_URL): $(MOBILE_HTM)
@echo "generating mobile url: " $@
@perl -MMIME::Base64 -0777 -ne '$$_= encode_base64($$_);s/\s+//g;print "data:text/html;charset=utf-8;base64,$$_"' < $< > $@
$(BOOKMARKLET_URL): $(BUILT_BOOKMARKLET_JS)
@echo "generating bookmark url:" $@
@echo "javascript:" | cat - $< > $@
#generate TLD list
tld:
@curl -s http://mxr.mozilla.org/mozilla/source/netwerk/dns/src/effective_tld_names.dat?raw=1 | \
awk '/^[^\/|!]/{printf "\"%s\", ", $$1}'
sonar:
@sonar-runner
clean:
@rm -rf $(BUILD_DIR)/*
.PHONY: clean init tld sonar