ref: 3f80f0cff5a50a2e273044f6a3d3265b8f97a5c4 rubo/Makefile -rw-r--r-- 2.6 KiB View raw
                                                                                
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
SHELL := /usr/bin/env bash
.DEFAULT_GOAL := help
.RECIPEPREFIX +=

## Run all tests on the project: React Native, scripts, backend.
test: ./client/node_modules/ js-tests bats-tests
.PHONY: test

js-tests:
  cd ./client/ && npm test
.PHONY: js-tests

bats-tests:
  ./client/scripts/tests/version.bats
.PHONY: bats-tests

## Build, sign, upload, archive and annouce new APK version.
app-release: ./client/node_modules/ test
  ./client/scripts/release.sh
.PHONY: app-release

./client/node_modules/: ./client/package-lock.json
  cd ./client/ && npm ci

## Start local Android emulator and dev environment
dev-android: dev-tools ./client/node_modules/ android-emulator
  cd ./client/ && react-native run-android
.PHONY: dev-android

AVD="@Nexus_5X_API_25"

android-emulator:
  adb devices | tail -n +2 | head -n -1 | grep emulator || $$ANDROID_HOME/tools/emulator $(AVD) > /dev/null & disown
.PHONY: android-emulator

dev-tools:
  ./client/scripts/assert-dev-tools.sh
.PHONY: dev-tools

clean:
  git clean -fdx

# Taken from https://gist.github.com/klmr/575726c7e05d8780505a

# Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html>
# sed script explained:
# /^##/:
#   * save line in hold space
#   * purge line
#   * Loop:
#     * append newline + line to hold space
#     * go to next line
#     * if line starts with doc comment, strip comment character off and loop
#   * remove target prerequisites
#   * append hold space (+ newline) to line
#   * replace newline plus comments by `---`
#   * print line
# Separate expressions are necessary because labels cannot be delimited by
# semicolon; see <http://stackoverflow.com/a/11799865/1968>
help:
  @echo "$$(tput bold)Available rules:$$(tput sgr0)"
  @echo
  @sed -n -e "/^## / { \
    h; \
    s/.*//; \
    :doc" \
    -e "H; \
    n; \
    s/^## //; \
    t doc" \
    -e "s/:.*//; \
    G; \
    s/\\n## /---/; \
    s/\\n/ /g; \
    p; \
  }" ${MAKEFILE_LIST} \
  | LC_ALL='C' sort --ignore-case \
  | awk -F '---' \
    -v ncol=$$(tput cols) \
    -v indent=19 \
    -v col_on="$$(tput setaf 6)" \
    -v col_off="$$(tput sgr0)" \
  '{ \
    printf "%s%*s%s ", col_on, -indent, $$1, col_off; \
    n = split($$2, words, " "); \
    line_length = ncol - indent; \
    for (i = 1; i <= n; i++) { \
      line_length -= length(words[i]) + 1; \
      if (line_length <= 0) { \
        line_length = ncol - indent - length(words[i]) - 1; \
        printf "\n%*s ", -indent, " "; \
      } \
      printf "%s ", words[i]; \
    } \
    printf "\n"; \
  }' \
| more $(shell test $(shell uname) == Darwin && echo '--no-init --raw-control-chars')