2023-01-10 13:06:38 +00:00
|
|
|
.PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-rm
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2019-07-23 06:19:48 +00:00
|
|
|
help: SHELL := /bin/sh
|
2017-12-13 21:45:49 +00:00
|
|
|
help: ##@other Show this help
|
|
|
|
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
|
|
|
|
|
|
|
|
# This is a code for automatic help generator.
|
|
|
|
# It supports ANSI colors and categories.
|
|
|
|
# To add new item into help output, simply add comments
|
|
|
|
# starting with '##'. To add category, use @category.
|
|
|
|
GREEN := $(shell tput -Txterm setaf 2)
|
2019-02-01 10:44:51 +00:00
|
|
|
RED := $(shell tput -Txterm setaf 1)
|
2017-12-13 21:45:49 +00:00
|
|
|
WHITE := $(shell tput -Txterm setaf 7)
|
|
|
|
YELLOW := $(shell tput -Txterm setaf 3)
|
|
|
|
RESET := $(shell tput -Txterm sgr0)
|
|
|
|
HELP_FUN = \
|
2023-07-04 19:40:13 +00:00
|
|
|
%help; \
|
|
|
|
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
|
|
|
|
print "Usage: make [target]\n\nSee STARTING_GUIDE.md for more info.\n\n"; \
|
|
|
|
for (sort keys %help) { \
|
|
|
|
print "${WHITE}$$_:${RESET}\n"; \
|
|
|
|
for (@{$$help{$$_}}) { \
|
|
|
|
$$sep = " " x (32 - length $$_->[0]); \
|
|
|
|
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
|
|
|
|
}; \
|
|
|
|
print "\n"; \
|
|
|
|
}
|
2019-04-12 08:36:30 +00:00
|
|
|
HOST_OS := $(shell uname | tr '[:upper:]' '[:lower:]')
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2019-10-09 15:37:58 +00:00
|
|
|
# This can come from Jenkins
|
|
|
|
ifndef BUILD_TAG
|
2019-10-23 10:36:27 +00:00
|
|
|
export BUILD_TAG := $(shell git rev-parse --short HEAD)
|
2019-10-09 15:37:58 +00:00
|
|
|
endif
|
|
|
|
|
2022-04-22 08:20:01 +00:00
|
|
|
# We don't want to use /run/user/$UID because it runs out of space too easilly.
|
2022-07-17 12:37:46 +00:00
|
|
|
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
|
2022-04-22 08:20:01 +00:00
|
|
|
# This has to be specified for both the Node.JS server process and the Qt process.
|
2019-10-09 15:37:58 +00:00
|
|
|
export REACT_SERVER_PORT ?= 5001
|
2024-02-19 19:22:29 +00:00
|
|
|
# Default metro port used by scripts/run-android.sh.
|
|
|
|
export RCT_METRO_PORT ?= 8081
|
2022-08-31 23:30:35 +00:00
|
|
|
# Fix for ERR_OSSL_EVP_UNSUPPORTED error.
|
|
|
|
export NODE_OPTIONS += --openssl-legacy-provider
|
2022-04-22 08:20:01 +00:00
|
|
|
# The path can be anything, but home is usually safest.
|
|
|
|
export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
2019-04-05 17:22:49 +00:00
|
|
|
|
2019-11-19 11:17:39 +00:00
|
|
|
# Our custom config is located in nix/nix.conf
|
2023-06-15 17:00:53 +00:00
|
|
|
export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf
|
2020-06-19 13:43:58 +00:00
|
|
|
# Location of symlinks to derivations that should not be garbage collected
|
2024-02-07 10:44:43 +00:00
|
|
|
export _NIX_GCROOTS = ./.nix-gcroots
|
2019-11-19 11:17:39 +00:00
|
|
|
# Defines which variables will be kept for Nix pure shell, use semicolon as divider
|
2023-06-27 11:45:21 +00:00
|
|
|
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
|
|
|
|
BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\
|
|
|
|
ANDROID_GRADLE_OPTS,ANDROID_ABI_SPLIT,ANDROID_ABI_INCLUDE,\
|
|
|
|
STATUS_GO_SRC_OVERRIDE,STATUS_GO_IPFS_GATEWAY_URL
|
2019-11-19 11:17:39 +00:00
|
|
|
|
2022-11-20 23:46:04 +00:00
|
|
|
# Useful for Android release builds
|
2020-03-02 11:18:01 +00:00
|
|
|
TMP_BUILD_NUMBER := $(shell ./scripts/version/gen_build_no.sh | cut -c1-10)
|
|
|
|
|
2019-07-15 16:34:33 +00:00
|
|
|
#----------------
|
|
|
|
# Nix targets
|
|
|
|
#----------------
|
|
|
|
|
2021-11-05 12:59:33 +00:00
|
|
|
# WARNING: This has to be located right before all the targets.
|
2019-11-29 10:20:08 +00:00
|
|
|
SHELL := ./nix/scripts/shell.sh
|
2019-04-05 17:22:49 +00:00
|
|
|
|
2021-11-05 12:59:33 +00:00
|
|
|
shell: export TARGET ?= default
|
2019-07-23 06:19:48 +00:00
|
|
|
shell: ##@prepare Enter into a pre-configured shell
|
|
|
|
ifndef IN_NIX_SHELL
|
|
|
|
@ENTER_NIX_SHELL
|
|
|
|
else
|
|
|
|
@echo "${YELLOW}Nix shell is already active$(RESET)"
|
|
|
|
endif
|
|
|
|
|
2020-04-26 12:40:06 +00:00
|
|
|
nix-repl: SHELL := /bin/sh
|
|
|
|
nix-repl: ##@nix Start an interactive Nix REPL
|
|
|
|
nix repl default.nix
|
|
|
|
|
2020-06-19 13:43:58 +00:00
|
|
|
nix-gc-protected: SHELL := /bin/sh
|
|
|
|
nix-gc-protected:
|
|
|
|
@echo -e "$(YELLOW)The following paths are protected:$(RESET)" && \
|
|
|
|
ls -1 $(_NIX_GCROOTS) | sed 's/^/ - /'
|
|
|
|
|
2023-06-19 09:28:03 +00:00
|
|
|
nix-upgrade: SHELL := /bin/sh
|
|
|
|
nix-upgrade: ##@nix Upgrade Nix interpreter to current version.
|
|
|
|
nix/scripts/upgrade.sh
|
|
|
|
|
2020-06-19 13:43:58 +00:00
|
|
|
nix-gc: export TARGET := nix
|
|
|
|
nix-gc: nix-gc-protected ##@nix Garbage collect all packages older than 20 days from /nix/store
|
|
|
|
nix-store --gc
|
2019-11-29 10:20:08 +00:00
|
|
|
|
2020-04-21 10:29:54 +00:00
|
|
|
nix-clean: export TARGET := default
|
2022-07-17 12:37:46 +00:00
|
|
|
nix-clean: ##@nix Remove all status-mobile build artifacts from /nix/store
|
2019-11-29 10:20:08 +00:00
|
|
|
nix/scripts/clean.sh
|
2019-07-15 16:34:33 +00:00
|
|
|
|
|
|
|
nix-purge: SHELL := /bin/sh
|
2020-04-21 10:29:54 +00:00
|
|
|
nix-purge: ##@nix Completely remove Nix setup, including /nix directory
|
|
|
|
nix/scripts/purge.sh
|
2019-07-15 16:34:33 +00:00
|
|
|
|
2020-05-07 10:21:39 +00:00
|
|
|
nix-update-gradle: export TARGET := gradle
|
2019-07-15 16:34:33 +00:00
|
|
|
nix-update-gradle: ##@nix Update maven nix expressions based on current gradle setup
|
2020-05-07 10:21:39 +00:00
|
|
|
nix/deps/gradle/generate.sh
|
2019-07-15 16:34:33 +00:00
|
|
|
|
2019-09-07 12:57:22 +00:00
|
|
|
nix-update-clojure: export TARGET := clojure
|
2020-05-07 10:21:39 +00:00
|
|
|
nix-update-clojure: ##@nix Update maven Nix expressions based on current clojure setup
|
2019-09-07 12:57:22 +00:00
|
|
|
nix/deps/clojure/generate.sh
|
2019-07-15 16:34:33 +00:00
|
|
|
|
2023-10-17 08:37:35 +00:00
|
|
|
nix-update-gems: export TARGET := fastlane
|
2019-09-03 20:41:40 +00:00
|
|
|
nix-update-gems: ##@nix Update Ruby gems in fastlane/Gemfile.lock and fastlane/gemset.nix
|
2019-07-20 05:41:46 +00:00
|
|
|
fastlane/update.sh
|
|
|
|
|
2019-11-29 10:20:08 +00:00
|
|
|
nix-update-pods: export TARGET := ios
|
2019-10-07 13:13:12 +00:00
|
|
|
nix-update-pods: ##@nix Update CocoaPods in ios/Podfile.lock
|
|
|
|
cd ios && pod update
|
|
|
|
|
2019-07-23 06:19:48 +00:00
|
|
|
#----------------
|
|
|
|
# General targets
|
|
|
|
#----------------
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2019-07-23 06:19:48 +00:00
|
|
|
_fix-node-perms: SHELL := /bin/sh
|
|
|
|
_fix-node-perms: ##@prepare Fix permissions so that directory can be cleaned
|
2019-06-04 16:50:29 +00:00
|
|
|
$(shell test -d node_modules && chmod -R 744 node_modules)
|
|
|
|
$(shell test -d node_modules.tmp && chmod -R 744 node_modules.tmp)
|
|
|
|
|
2023-01-10 13:06:38 +00:00
|
|
|
$(TMPDIR): SHELL := /bin/sh
|
|
|
|
$(TMPDIR): ##@prepare Create a TMPDIR for temporary files
|
2019-10-09 15:37:58 +00:00
|
|
|
@mkdir -p "$(TMPDIR)"
|
|
|
|
# Make sure TMPDIR exists every time make is called
|
2023-01-10 13:06:38 +00:00
|
|
|
_tmpdir-mk: $(TMPDIR)
|
2019-10-09 15:37:58 +00:00
|
|
|
-include _tmpdir-mk
|
|
|
|
|
|
|
|
_tmpdir-rm: SHELL := /bin/sh
|
|
|
|
_tmpdir-rm: ##@prepare Remove TMPDIR
|
|
|
|
rm -fr "$(TMPDIR)"
|
|
|
|
|
2022-03-01 09:06:05 +00:00
|
|
|
_install-hooks: SHELL := /bin/sh
|
|
|
|
_install-hooks: ##@prepare Create prepare-commit-msg git hook symlink
|
2022-03-14 09:29:13 +00:00
|
|
|
@ln -s -f ../../scripts/hooks/prepare-commit-msg .git/hooks
|
2022-03-01 09:06:05 +00:00
|
|
|
-include _install-hooks
|
|
|
|
|
2020-12-21 08:20:38 +00:00
|
|
|
# Remove directories and ignored files
|
2019-04-05 17:22:49 +00:00
|
|
|
clean: SHELL := /bin/sh
|
2019-10-09 15:37:58 +00:00
|
|
|
clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
|
2020-12-21 08:20:38 +00:00
|
|
|
git clean -dXf
|
|
|
|
|
|
|
|
# Remove directories, ignored and non-ignored files
|
|
|
|
purge: SHELL := /bin/sh
|
|
|
|
purge: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
|
2019-10-09 15:37:58 +00:00
|
|
|
git clean -dxf
|
2018-08-30 12:56:45 +00:00
|
|
|
|
2020-12-21 08:20:38 +00:00
|
|
|
|
2019-11-29 10:20:08 +00:00
|
|
|
watchman-clean: export TARGET := watchman
|
2019-11-13 13:12:02 +00:00
|
|
|
watchman-clean: ##@prepare Delete repo directory from watchman
|
2022-07-17 12:37:46 +00:00
|
|
|
watchman watch-del $${STATUS_MOBILE_HOME}
|
2019-03-25 16:35:01 +00:00
|
|
|
|
2019-11-29 10:20:08 +00:00
|
|
|
pod-install: export TARGET := ios
|
2019-09-30 11:43:29 +00:00
|
|
|
pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock
|
|
|
|
cd ios && pod install; cd --
|
|
|
|
|
2024-02-02 14:53:40 +00:00
|
|
|
FLEETS_FILE := ./resources/config/fleets.json
|
2020-01-09 12:29:58 +00:00
|
|
|
update-fleets: ##@prepare Download up-to-date JSON file with current fleets state
|
|
|
|
curl -s https://fleets.status.im/ \
|
2022-12-09 07:30:42 +00:00
|
|
|
| sed 's/"warning": "/"warning": "DO NOT EDIT! /' \
|
2024-02-02 14:53:40 +00:00
|
|
|
> $(FLEETS_FILE)
|
|
|
|
echo >> $(FLEETS_FILE)
|
2020-01-09 12:29:58 +00:00
|
|
|
|
2022-04-22 08:20:01 +00:00
|
|
|
$(KEYSTORE_PATH): export TARGET := keytool
|
|
|
|
$(KEYSTORE_PATH):
|
2020-03-02 11:18:01 +00:00
|
|
|
@./scripts/generate-keystore.sh
|
|
|
|
|
2022-04-22 08:20:01 +00:00
|
|
|
keystore: $(KEYSTORE_PATH) ##@prepare Generate a Keystore for signing Android APKs
|
|
|
|
|
2021-03-03 16:01:54 +00:00
|
|
|
fdroid-max-watches: SHELL := /bin/sh
|
|
|
|
fdroid-max-watches: ##@prepare Bump max_user_watches to avoid ENOSPC errors
|
|
|
|
sysctl fs.inotify.max_user_watches=524288
|
|
|
|
|
|
|
|
fdroid-nix-dir: SHELL := /bin/sh
|
2021-02-25 10:45:33 +00:00
|
|
|
fdroid-nix-dir: ##@prepare Create /nix directory for F-Droid Vagrant builders
|
|
|
|
mkdir -m 0755 /nix
|
|
|
|
chown vagrant /nix
|
|
|
|
|
2021-06-08 07:48:11 +00:00
|
|
|
fdroid-fix-tmp: SHELL := /bin/sh
|
2021-06-10 13:53:31 +00:00
|
|
|
fdroid-fix-tmp: ##@prepare Fix TMPDIR permissions so Vagrant user is the owner
|
|
|
|
chown -R vagrant "$(TMPDIR)"
|
2021-06-08 07:48:11 +00:00
|
|
|
|
|
|
|
fdroid-build-env: fdroid-max-watches fdroid-nix-dir fdroid-fix-tmp ##@prepare Setup build environment for F-Droud build
|
2021-03-03 16:01:54 +00:00
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
fdroid-pr: export TARGET := android-sdk
|
2021-04-29 17:01:41 +00:00
|
|
|
fdroid-pr: ##@prepare Create F-Droid release PR
|
|
|
|
ifndef APK
|
|
|
|
$(error APK env var not defined)
|
|
|
|
endif
|
|
|
|
scripts/fdroid-pr.sh "$(APK)"
|
|
|
|
|
2021-05-12 09:07:35 +00:00
|
|
|
xcode-clean: SHELL := /bin/sh
|
|
|
|
xcode-clean: XCODE_HOME := $(HOME)/Library/Developer/Xcode
|
|
|
|
xcode-clean: ##@prepare Clean XCode derived data and archives
|
|
|
|
rm -fr $(XCODE_HOME)/DerivedData/StatusIm-* $(XCODE_HOME)/Archives/*/StatusIm*
|
|
|
|
|
2017-12-13 21:45:49 +00:00
|
|
|
#----------------
|
|
|
|
# Release builds
|
|
|
|
#----------------
|
2021-02-25 10:45:33 +00:00
|
|
|
release: release-android release-ios ##@build Build release for Android and iOS
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2022-04-22 08:20:01 +00:00
|
|
|
build-fdroid: export BUILD_ENV = prod
|
|
|
|
build-fdroid: export BUILD_TYPE = release
|
|
|
|
build-fdroid: export ANDROID_ABI_SPLIT = false
|
|
|
|
build-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64
|
|
|
|
build-fdroid: ##@build Build release for F-Droid
|
|
|
|
@scripts/build-android.sh
|
|
|
|
|
|
|
|
build-android: export BUILD_ENV ?= prod
|
|
|
|
build-android: export BUILD_TYPE ?= nightly
|
2024-02-15 08:18:11 +00:00
|
|
|
build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER)
|
2022-04-22 08:20:01 +00:00
|
|
|
build-android: export ANDROID_ABI_SPLIT ?= false
|
|
|
|
build-android: export ANDROID_ABI_INCLUDE ?= armeabi-v7a;arm64-v8a;x86
|
|
|
|
build-android: ##@build Build unsigned Android APK
|
|
|
|
@scripts/build-android.sh
|
|
|
|
|
|
|
|
release-android: export TARGET := keytool
|
2020-03-02 11:18:01 +00:00
|
|
|
release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
2022-04-22 08:20:01 +00:00
|
|
|
release-android: keystore build-android ##@build Build signed Android APK
|
|
|
|
@scripts/sign-android.sh result/app-release-unsigned.apk
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2020-05-07 10:21:39 +00:00
|
|
|
release-ios: export TARGET := ios
|
2023-08-29 13:18:14 +00:00
|
|
|
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
|
2019-06-04 15:20:03 +00:00
|
|
|
release-ios: export BUILD_ENV ?= prod
|
2023-05-16 16:42:56 +00:00
|
|
|
release-ios: watchman-clean ios-clean jsbundle ##@build Build release for iOS release
|
|
|
|
xcodebuild \
|
|
|
|
-scheme StatusIm \
|
|
|
|
-configuration Release \
|
|
|
|
-workspace ios/StatusIm.xcworkspace \
|
|
|
|
-destination 'generic/platform=iOS' \
|
|
|
|
-UseModernBuildSystem=N clean archive
|
|
|
|
|
|
|
|
jsbundle: SHELL := /bin/sh
|
|
|
|
jsbundle: export BUILD_ENV ?= prod
|
|
|
|
jsbundle: ##@build Build JavaScript and Clojurescript bundle for iOS and Android
|
|
|
|
nix/scripts/build.sh targets.mobile.jsbundle
|
2018-09-13 09:44:33 +00:00
|
|
|
|
2020-04-23 18:19:12 +00:00
|
|
|
#--------------
|
|
|
|
# status-go lib
|
2020-05-14 11:58:05 +00:00
|
|
|
#--------------
|
2020-04-23 18:19:12 +00:00
|
|
|
|
|
|
|
status-go-android: SHELL := /bin/sh
|
|
|
|
status-go-android: ##@status-go Compile status-go for Android app
|
|
|
|
nix/scripts/build.sh targets.status-go.mobile.android
|
|
|
|
|
|
|
|
status-go-ios: SHELL := /bin/sh
|
|
|
|
status-go-ios: ##@status-go Compile status-go for iOS app
|
|
|
|
nix/scripts/build.sh targets.status-go.mobile.ios
|
|
|
|
|
2022-05-19 15:50:41 +00:00
|
|
|
status-go-library: SHELL := /bin/sh
|
|
|
|
status-go-library: ##@status-go Compile status-go for node-js
|
|
|
|
nix/scripts/build.sh targets.status-go.library
|
|
|
|
|
2017-12-13 21:45:49 +00:00
|
|
|
#--------------
|
2020-05-14 11:58:05 +00:00
|
|
|
# Watch, Build & Review changes
|
|
|
|
#--------------
|
|
|
|
|
2020-05-20 14:36:38 +00:00
|
|
|
run-clojure: export TARGET := clojure
|
2020-05-14 11:58:05 +00:00
|
|
|
run-clojure: ##@run Watch for and build Clojure changes for mobile
|
|
|
|
yarn shadow-cljs watch mobile
|
|
|
|
|
2023-12-18 08:33:24 +00:00
|
|
|
run-metro: export TARGET := clojure
|
2020-05-14 11:58:05 +00:00
|
|
|
run-metro: ##@run Start Metro to build React Native changes
|
2024-02-14 14:28:45 +00:00
|
|
|
@scripts/run-metro.sh
|
2019-04-05 17:22:49 +00:00
|
|
|
|
2020-05-14 11:58:05 +00:00
|
|
|
run-re-frisk: export TARGET := clojure
|
|
|
|
run-re-frisk: ##@run Start re-frisk server
|
|
|
|
yarn shadow-cljs run re-frisk-remote.core/start
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2019-06-04 16:50:29 +00:00
|
|
|
# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix
|
2020-04-01 07:52:57 +00:00
|
|
|
run-android: export TARGET := android
|
2024-02-01 15:26:18 +00:00
|
|
|
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
|
|
|
|
# https://github.com/status-im/status-mobile/issues/18493
|
|
|
|
run-android: export ORG_GRADLE_PROJECT_hermesEnabled := false
|
2020-04-14 11:09:59 +00:00
|
|
|
run-android: ##@run Build Android APK and start it on the device
|
2024-02-14 14:28:45 +00:00
|
|
|
@scripts/run-android.sh
|
2019-02-01 10:44:51 +00:00
|
|
|
|
2023-11-06 18:25:06 +00:00
|
|
|
SIMULATOR=iPhone 13
|
2024-01-10 16:55:08 +00:00
|
|
|
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
2019-11-29 10:20:08 +00:00
|
|
|
run-ios: export TARGET := ios
|
2024-01-11 09:27:28 +00:00
|
|
|
run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
2024-02-14 14:28:45 +00:00
|
|
|
run-ios: ##@run Build iOS app and start it in on the simulator
|
|
|
|
@scripts/run-ios.sh "${SIMULATOR}"
|
2017-12-13 21:45:49 +00:00
|
|
|
|
2023-04-19 10:50:26 +00:00
|
|
|
show-ios-devices: ##@other shows connected ios device and its name
|
|
|
|
xcrun xctrace list devices
|
|
|
|
|
2024-01-10 16:55:08 +00:00
|
|
|
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
2023-04-19 10:50:26 +00:00
|
|
|
run-ios-device: export TARGET := ios
|
2024-01-11 09:27:28 +00:00
|
|
|
run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
2024-02-20 05:24:09 +00:00
|
|
|
run-ios-device: ##@run iOS app and start it on the first connected iPhone
|
|
|
|
@scripts/run-ios-device.sh
|
2023-04-19 10:50:26 +00:00
|
|
|
|
2017-12-23 09:36:25 +00:00
|
|
|
#--------------
|
|
|
|
# Tests
|
|
|
|
#--------------
|
|
|
|
|
2023-01-12 10:19:47 +00:00
|
|
|
# Get all clojure files, including untracked, excluding removed
|
|
|
|
define find_all_clojure_files
|
2024-01-09 12:19:30 +00:00
|
|
|
$$(comm -23 <(sort <(git ls-files --cached --others --exclude-standard)) <(sort <(git ls-files --deleted)) | grep -E '((\.clj-kondo\/status-im)|(src).*\.clj[sc]?$$)|((\.clj-kondo\/(status-im|config))|(src).*\.edn$$)|shadow-cljs\.edn')
|
2023-01-12 10:19:47 +00:00
|
|
|
endef
|
|
|
|
|
2023-06-20 10:07:46 +00:00
|
|
|
lint: export TARGET := clojure
|
2023-10-04 19:06:54 +00:00
|
|
|
lint: export CLJ_LINTER_PRINT_WARNINGS ?= false
|
2019-11-19 11:17:39 +00:00
|
|
|
lint: ##@test Run code style checks
|
2023-11-16 03:10:40 +00:00
|
|
|
@sh scripts/lint/re-frame-in-quo-components.sh && \
|
|
|
|
sh scripts/lint/direct-require-component-outside-quo.sh && \
|
|
|
|
sh scripts/lint/require-i18n-resource-first.sh && \
|
2023-10-04 19:06:54 +00:00
|
|
|
clj-kondo --config .clj-kondo/config.edn --cache false --fail-level error --lint src $(if $(filter $(CLJ_LINTER_PRINT_WARNINGS),true),,| grep -v ': warning: ') && \
|
2023-01-12 10:19:47 +00:00
|
|
|
ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \
|
2023-11-16 03:10:40 +00:00
|
|
|
scripts/lint/translations.clj && \
|
2023-06-19 13:39:12 +00:00
|
|
|
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
|
2023-11-16 03:10:40 +00:00
|
|
|
sh scripts/lint/trailing-newline.sh && \
|
2023-10-17 18:05:58 +00:00
|
|
|
node_modules/.bin/prettier --write .
|
2019-11-19 11:17:39 +00:00
|
|
|
|
2023-01-12 10:19:47 +00:00
|
|
|
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
|
2023-06-20 10:07:46 +00:00
|
|
|
lint-fix: export TARGET := clojure
|
2020-01-06 11:45:15 +00:00
|
|
|
lint-fix: ##@test Run code style checks and fix issues
|
2023-01-12 10:19:47 +00:00
|
|
|
ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \
|
|
|
|
zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \
|
2023-06-19 13:39:12 +00:00
|
|
|
zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \
|
2024-01-11 23:19:55 +00:00
|
|
|
clojure-lsp --ns-exclude-regex ".*/\.clj-kondo/.*|.*/src/status_im/core\.cljs|.*/src/test_helpers/component_tests_preload\.cljs$$" clean-ns && \
|
2023-11-16 03:10:40 +00:00
|
|
|
sh scripts/lint/trailing-newline.sh --fix && \
|
2023-10-17 18:05:58 +00:00
|
|
|
node_modules/.bin/prettier --write .
|
2022-12-20 13:57:49 +00:00
|
|
|
|
2022-05-27 08:35:43 +00:00
|
|
|
shadow-server: export TARGET := clojure
|
|
|
|
shadow-server:##@ Start shadow-cljs in server mode for watching
|
|
|
|
yarn shadow-cljs server
|
|
|
|
|
2024-01-05 18:47:03 +00:00
|
|
|
_test-clojure: export TARGET := clojure
|
|
|
|
_test-clojure: export WATCH ?= false
|
2024-03-07 05:30:36 +00:00
|
|
|
_test-clojure: status-go-library
|
2024-01-05 18:47:03 +00:00
|
|
|
_test-clojure:
|
|
|
|
ifeq ($(WATCH), true)
|
2024-03-07 05:30:36 +00:00
|
|
|
yarn node-pre-gyp rebuild && \
|
2024-01-05 18:47:03 +00:00
|
|
|
yarn shadow-cljs compile mocks && \
|
|
|
|
nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs
|
|
|
|
else
|
2024-03-07 05:30:36 +00:00
|
|
|
yarn node-pre-gyp rebuild && \
|
2024-01-05 18:47:03 +00:00
|
|
|
yarn shadow-cljs compile mocks && \
|
|
|
|
yarn shadow-cljs compile test && \
|
|
|
|
node --require ./test-resources/override.js "$$SHADOW_OUTPUT_TO"
|
|
|
|
endif
|
2022-05-27 08:35:43 +00:00
|
|
|
|
2024-01-05 18:47:03 +00:00
|
|
|
test: export SHADOW_OUTPUT_TO := target/test/test.js
|
|
|
|
test: export SHADOW_NS_REGEXP := .*-test$$
|
|
|
|
test: ##@test Run all Clojure tests
|
|
|
|
test: _test-clojure
|
2022-12-20 12:07:00 +00:00
|
|
|
|
2024-01-05 18:47:03 +00:00
|
|
|
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
|
|
|
|
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
|
2024-03-07 05:30:36 +00:00
|
|
|
test-watch-for-repl: status-go-library
|
2024-01-05 18:47:03 +00:00
|
|
|
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
|
2024-03-07 05:30:36 +00:00
|
|
|
yarn node-pre-gyp rebuild
|
2024-01-05 18:47:03 +00:00
|
|
|
rm -f target/test/test.js
|
2019-09-07 12:57:22 +00:00
|
|
|
yarn shadow-cljs compile mocks && \
|
2024-01-05 18:47:03 +00:00
|
|
|
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
|
|
|
|
'yarn shadow-cljs watch test --verbose' \
|
|
|
|
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
|
|
|
|
|
|
|
|
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
|
2024-02-28 12:51:53 +00:00
|
|
|
test-unit: export SHADOW_NS_REGEXP := ^(?!tests\.integration-test)(?!tests\.contract-test).*-test$$
|
2024-01-05 18:47:03 +00:00
|
|
|
test-unit: ##@test Run unit tests
|
|
|
|
test-unit: _test-clojure
|
|
|
|
|
|
|
|
test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js
|
2024-02-09 17:10:09 +00:00
|
|
|
test-integration: export SHADOW_NS_REGEXP := ^tests\.integration-test.*$$
|
2024-01-05 18:47:03 +00:00
|
|
|
test-integration: ##@test Run integration tests
|
|
|
|
test-integration: _test-clojure
|
2017-12-23 09:36:25 +00:00
|
|
|
|
2024-02-09 17:10:09 +00:00
|
|
|
test-contract: export SHADOW_OUTPUT_TO := target/contract_test/test.js
|
|
|
|
test-contract: export SHADOW_NS_REGEXP := ^tests\.contract-test.*$$
|
|
|
|
test-contract: ##@test Run contract tests
|
|
|
|
test-contract: _test-clojure
|
|
|
|
|
2024-03-27 12:51:45 +00:00
|
|
|
test-android: jsbundle
|
|
|
|
test-android: export TARGET := android
|
|
|
|
test-android: ##@test Android Gradle test
|
2023-09-04 09:41:26 +00:00
|
|
|
cd android && ./gradlew test
|
|
|
|
|
2024-03-27 12:51:45 +00:00
|
|
|
test-component-watch: export TARGET := clojure
|
|
|
|
test-component-watch: export COMPONENT_TEST := true
|
|
|
|
test-component-watch: export BABEL_ENV := test
|
|
|
|
test-component-watch: export JEST_USE_SILENT_REPORTER := false
|
|
|
|
test-component-watch: ##@ Watch tests and re-run no changes to cljs files
|
2024-01-16 18:00:42 +00:00
|
|
|
@scripts/check-metro-shadow-process.sh
|
2023-09-26 11:49:24 +00:00
|
|
|
rm -rf ./component-spec
|
2023-12-11 15:52:23 +00:00
|
|
|
nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js --testEnvironment node ' -e cljs
|
2022-11-23 13:59:18 +00:00
|
|
|
|
2024-03-27 12:51:45 +00:00
|
|
|
test-component: export TARGET := clojure
|
|
|
|
test-component: export COMPONENT_TEST := true
|
|
|
|
test-component: export BABEL_ENV := test
|
|
|
|
test-component: export JEST_USE_SILENT_REPORTER := false
|
|
|
|
test-component: ##@test Run component tests once in NodeJS
|
2023-10-26 17:54:23 +00:00
|
|
|
@scripts/check-metro-shadow-process.sh
|
2023-09-26 11:49:24 +00:00
|
|
|
rm -rf ./component-spec
|
2022-11-23 13:59:18 +00:00
|
|
|
yarn shadow-cljs compile component-test && \
|
2023-12-11 15:52:23 +00:00
|
|
|
jest --clearCache && jest --config=test/jest/jest.config.js --testEnvironment node
|
2022-11-23 13:59:18 +00:00
|
|
|
|
2023-05-16 16:42:56 +00:00
|
|
|
#--------------
|
2017-12-13 21:45:49 +00:00
|
|
|
# Other
|
|
|
|
#--------------
|
2020-05-14 11:58:05 +00:00
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
geth-connect: export TARGET := android-sdk
|
2019-04-05 17:22:49 +00:00
|
|
|
geth-connect: ##@other Connect to Geth on the device
|
|
|
|
adb forward tcp:8545 tcp:8545 && \
|
2017-12-13 21:45:49 +00:00
|
|
|
build/bin/geth attach http://localhost:8545
|
|
|
|
|
2023-05-16 16:42:56 +00:00
|
|
|
ios-clean: SHELL := /bin/sh
|
|
|
|
ios-clean: ##@prepare Clean iOS build artifacts
|
|
|
|
git clean -dxf -f target/ios
|
|
|
|
|
2020-05-14 11:58:05 +00:00
|
|
|
android-clean: export TARGET := gradle
|
2019-08-22 16:36:59 +00:00
|
|
|
android-clean: ##@prepare Clean Gradle state
|
2020-05-14 11:58:05 +00:00
|
|
|
git clean -dxf -f ./android/app/build; \
|
2020-04-21 10:06:40 +00:00
|
|
|
[[ -d android/.gradle ]] && cd android && ./gradlew clean
|
2019-08-22 16:36:59 +00:00
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
android-ports: export TARGET := android-sdk
|
2019-04-05 17:22:49 +00:00
|
|
|
android-ports: ##@other Add proxies to Android Device/Simulator
|
|
|
|
adb reverse tcp:8081 tcp:8081 && \
|
|
|
|
adb reverse tcp:3449 tcp:3449 && \
|
|
|
|
adb reverse tcp:4567 tcp:4567 && \
|
2018-09-30 06:22:33 +00:00
|
|
|
adb forward tcp:5561 tcp:5561
|
2018-04-10 08:29:18 +00:00
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
android-devices: export TARGET := android-sdk
|
2019-11-20 16:25:22 +00:00
|
|
|
android-devices: ##@other Invoke adb devices
|
|
|
|
adb devices
|
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
android-logcat: export TARGET := android-sdk
|
2022-07-17 12:37:46 +00:00
|
|
|
android-logcat: ##@other Read status-mobile logs from Android phone using adb
|
2019-12-06 09:53:09 +00:00
|
|
|
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
|
2018-03-13 11:55:42 +00:00
|
|
|
|
2022-09-29 10:29:28 +00:00
|
|
|
android-install: export TARGET := android-sdk
|
2019-06-04 16:50:29 +00:00
|
|
|
android-install: export BUILD_TYPE ?= release
|
2020-04-21 10:06:40 +00:00
|
|
|
android-install: ##@other Install APK on device using adb
|
2019-10-22 11:56:13 +00:00
|
|
|
adb install result/app-$(BUILD_TYPE).apk
|
2019-06-04 16:50:29 +00:00
|
|
|
|
2019-04-05 17:22:49 +00:00
|
|
|
_list: SHELL := /bin/sh
|
2019-01-29 18:46:11 +00:00
|
|
|
_list:
|
|
|
|
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
|
|
|
|
|
2020-05-14 11:58:05 +00:00
|
|
|
#--------------
|
|
|
|
# REPLs
|
|
|
|
#--------------
|
2020-05-05 08:46:19 +00:00
|
|
|
|
2020-05-14 11:58:05 +00:00
|
|
|
repl-clojure: export TARGET := clojure
|
|
|
|
repl-clojure: ##@repl Start Clojure repl for mobile App
|
|
|
|
yarn shadow-cljs cljs-repl mobile
|
2020-05-05 08:46:19 +00:00
|
|
|
|
2020-05-14 11:58:05 +00:00
|
|
|
repl-nix: nix-repl ##@repl Start an interactive Nix REPL
|
2024-02-06 17:59:35 +00:00
|
|
|
|
|
|
|
#--------------
|
|
|
|
# Dev Automation Flows
|
|
|
|
#--------------
|
|
|
|
|
|
|
|
auto-login: export TARGET := default
|
|
|
|
auto-login: ##@auto runs flow for login or onboarding app on simulator/emulator
|
|
|
|
maestro test "maestro/create-account-or-login.yaml"
|
|
|
|
|
|
|
|
auto-custom: export TARGET := default
|
|
|
|
auto-custom: ##@auto runs any custom maestro automation flow on simulator/emulator
|
|
|
|
ifndef FLOW
|
|
|
|
$(error Usage: make automate FLOW=your-maestro-flow-file.yaml)
|
|
|
|
endif
|
|
|
|
maestro test "$(FLOW)"
|