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