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