123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- SHELL := /bin/bash
- .PHONY: help ios update tvos
- RUBY := $(shell command -v ruby 2>/dev/null)
- HOMEBREW := $(shell command -v brew 2>/dev/null)
- BUNDLER := $(shell command -v bundle 2>/dev/null)
- default: help
- # Add the following 'help' target to your Makefile
- # And add help text after each target name starting with '\#\#'
- # A category can be added with @category
- # COLORS
- GREEN := $(shell tput -Txterm setaf 2)
- YELLOW := $(shell tput -Txterm setaf 3)
- WHITE := $(shell tput -Txterm setaf 7)
- RESET := $(shell tput -Txterm sgr0)
- ## ----- Helper functions ------
- # Helper target for declaring an external executable as a recipe dependency.
- # For example,
- # `my_target: | _program_awk`
- # will fail before running the target named `my_target` if the command `awk` is
- # not found on the system path.
- _program_%: FORCE
- @_=$(or $(shell which $* 2> /dev/null),$(error `$*` command not found. Please install `$*` and try again))
- # Helper target for declaring required environment variables.
- #
- # For example,
- # `my_target`: | _var_PARAMETER`
- #
- # will fail before running `my_target` if the variable `PARAMETER` is not declared.
- _var_%: FORCE
- @_=$(or $($*),$(error `$*` is a required parameter))
- _tag: | _var_VERSION
- make --no-print-directory -B README.md
- git commit -am "Tagging release $(VERSION)"
- git tag -a $(VERSION) $(if $(NOTES),-m '$(NOTES)',-m $(VERSION))
- .PHONY: _tag
- _push: | _var_VERSION
- git push origin $(VERSION)
- git push origin master
- .PHONY: _push
- ## ------ Commmands -----------
- TARGET_MAX_CHAR_NUM=20
- ## Show help
- help:
- @echo ''
- @echo 'Usage:'
- @echo ' ${YELLOW}make${RESET} ${GREEN}<target>${RESET}'
- @echo ''
- @echo 'Targets:'
- @awk '/^[a-zA-Z\-\_0-9]+:/ { \
- helpMessage = match(lastLine, /^## (.*)/); \
- if (helpMessage) { \
- helpCommand = substr($$1, 0, index($$1, ":")-1); \
- helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
- printf " ${YELLOW}%-$(TARGET_MAX_CHAR_NUM)s${RESET} ${GREEN}%s${RESET}\n", helpCommand, helpMessage; \
- } \
- } \
- { lastLine = $$0 }' \
- $(MAKEFILE_LIST)
- ## Install dependencies.
- setup: \
- pre_setup
- # check_for_homebrew \
- # update_homebrew \
- pull_request: \
- test \
- codecov_upload \
- danger
- pre_setup:
- $(info Project setup…)
- check_for_ruby:
- $(info Checking for Ruby…)
- ifeq ($(RUBY),)
- $(error Ruby is not installed.)
- endif
- check_for_homebrew:
- $(info Checking for Homebrew…)
- ifeq ($(HOMEBREW),)
- $(error Homebrew is not installed)
- endif
- update_homebrew:
- $(info Updating Homebrew…)
- brew update
- install_swift_lint:
- $(info Install swiftlint…)
- brew unlink swiftlint || true
- brew install swiftlint
- brew link --overwrite swiftlint
- install_bundler_gem:
- $(info Checking and installing bundler…)
- ifeq ($(BUNDLER),)
- gem install bundler -v '~> 1.17'
- else
- gem update bundler '~> 1.17'
- endif
- install_ruby_gems:
- $(info Installing Ruby gems…)
- bundle install
- pull:
- $(info Pulling new commits…)
- git stash push || true
- git pull
- git stash pop || true
- ## -- Source Code Tasks --
- ## Pull upstream and update 3rd party frameworks
- update: submodules
- submodules:
- $(info Updating submodules…)
- git submodule update --init --recursive --remote
- ## -- QA Task Runners --
- codecov_upload:
- curl -s https://codecov.io/bash | bash
- danger:
- bundle exec danger
- ## -- Testing --
- ## Run test on all targets
- test:
- bundle exec fastlane test
- ## -- Building --
- build:
- @xcodebuild -workspace Pomelo.xcodeproj/project.xcworkspace \
- -scheme Pomelo \
- -sdk iphoneos \
- -destination generic/platform=iOS
- archive -archivePath ./archive \
- CODE_SIGNING_REQUIRED=NO \
- AD_HOC_CODE_SIGNING_ALLOWED=YES \
- CODE_SIGNING_ALLOWED=NO \
- DWARF_DSYM_FOLDER_PATH="."
- ipa:
- mkdir Payload
- mkdir Payload/Pomelo.app
- cp -R archive.xcarchive/Products/Applications/Pomelo.app/ Payload/Pomelo.app/
- zip -r Pomelo.ipa Payload
|