main
 1#! /usr/bin/env nix-shell
 2#! nix-shell -i bash -p qmk
 3# shellcheck shell=bash
 4
 5set -eufo pipefail
 6TARGET_USER=vincent
 7
 8checkout() {
 9	if [[ ! -d ./build/qmk_firmware ]]; then
10		git clone https://github.com/qmk/qmk_firmware ./build/qmk_firmware
11	fi
12}
13
14update() {
15	git submodule update --init --recursive
16	for i in qmk_firmware keychron_firmware; do
17		(
18			[[ -e ./build/${i} ]] && {
19				cd ./build/${i}
20				qmk git-submodule
21			} || true
22		)
23	done
24}
25
26symlink() {
27	local p=qmk_firmware
28	local keyboard="zsa/moonlander"
29	rm -f build/${p}/keyboards/${keyboard}/keymaps/${TARGET_USER}
30	mkdir -p build/${p}/keyboards/${keyboard}/keymaps
31	ln -rvsf "${PWD}/config" build/${p}/keyboards/${keyboard}/keymaps/${TARGET_USER}
32	# [[ -e build/${p}/users/common ]] || ln -rvsf ${PWD}/common build/${p}/users/vincent
33}
34
35action() {
36	local keyboard="zsa/moonlander"
37	local action=$1
38	local p=qmk_firmware
39	symlink ${keyboard}
40	make BUILD_DIR="${PWD}/build" -j1 -C build/${p} "${keyboard}:${TARGET_USER}:${action}"
41}
42
43build() {
44	action build
45}
46
47flash() {
48	action flash
49}
50
51clean() {
52	local build_dir="build"
53	[[ -n "$build_dir" ]] && [[ -d "$build_dir" ]] && rm -rf "$build_dir"
54	git submodule update -f --recursive
55}
56
57help() {
58	echo "build.sh [update/clean/build/flash]"
59}
60
61[[ -z ${1-""} ]] && {
62	set +x
63	echo "need at least one arg"
64	help
65	exit 1
66}
67
68if [[ $1 == update ]]; then
69	update
70	exit
71elif [[ $1 == checkout ]]; then
72	checkout "${2:-}"
73	exit
74elif [[ ${1} == clean ]]; then
75	clean
76	exit
77fi
78
79case "$1" in
80build) build ;;
81flash) flash ;;
82*)
83	echo "Wrong argument $1"
84	help
85	exit 1
86	;;
87esac