# # Makefile # mas # ################################################################################ # # Variables # CMD_NAME = mas SHELL = /bin/sh PREFIX ?= $(shell brew --prefix) SWIFT_VERSION = 5.7.1 # set EXECUTABLE_DIRECTORY according to your specific environment # run swift build and see where the output executable is created # OS specific differences ifeq ($(shell uname), Darwin) PLATFORM = $(shell uname -m)-apple-macosx EXECUTABLE_DIRECTORY = ./.build/${PLATFORM}/debug endif ################################################################################ # # Help # .DEFAULT_GOAL := help .PHONY: help help: MAKEFILE_FMT = " \033[36m%-25s\033[0m%s\n" help: ## (default) Displays this message @echo "mas Makefile" @echo "" @echo "Targets:" @grep -E '^[a-zA-Z0-9_-]*:.*?##' ${MAKEFILE_LIST} | awk 'BEGIN {FS = ":.*?##"}; {printf ${MAKEFILE_FMT}, $$1, $$2}' : # Hacky way to display a newline ## ################################################################################ # # ℹī¸ Info Targets # .PHONY: version version: ## Prints versions of tools used by this Makefile. xcodebuild -version swiftenv version swift --version swift package tools-version .PHONY: init init: ## Installs tools. - swiftenv install ${SWIFT_VERSION} swiftenv local ${SWIFT_VERSION} ################################################################################ # # đŸ‘ĸ Bootstrap # .PHONY: bootstrap bootstrap: ## Installs tools. script/bootstrap -f .PHONY: bootstrap-update bootstrap-update: ## Upgrades and installs tools. script/bootstrap ################################################################################ # # 👩đŸģ‍đŸ’ģ Development Targets # .PHONY: clean clean: ## Cleans built products. script/clean .PHONY: lint lint: ## Lints source code. script/lint .PHONY: format format: ## Formats source code. script/format .PHONY: build build: ## Builds the project. script/build .PHONY: test test: build ## Runs tests. script/test # make run ARGS="asdf" .PHONY: run run: build ${EXECUTABLE_DIRECTORY}/${CMD_NAME} ${ARGS} .PHONY: update-headers update-headers: ## Updates private macOS headers. script/update_headers ################################################################################ # # 🕊ī¸ Swift Package Targets # .PHONY: describe describe: ## Describes the Swift package. swift package describe .PHONY: resolve resolve: ## Resolves SwiftPM dependencies. swift package resolve .PHONY: dependencies dependencies: resolve ## Lists SwiftPM dependencies. swift package show-dependencies .PHONY: update update: resolve ## Updates SwiftPM dependencies. swift package update ################################################################################ # # 🚀 Release Targets # .PHONY: build-universal build-universal: ## Builds a "fat" universal binary. script/build --universal .PHONY: install install: build ## Installs the binary. script/install ${PREFIX} .PHONY: install-universal install-universal: build-universal ## Installs a universal binary. script/install --universal .PHONY: uninstall uninstall: ## Uninstalls the binary. script/uninstall .PHONY: package package: build ## Packages the project. script/package .PHONY: package-install package-install: package ## Installs the package. script/package_install .PHONY: brew_release_validate brew_release_validate: ## Validates Homebrew mas formula. script/brew_release_validate