]> git.donarmstrong.com Git - qmk_firmware.git/blob - util/new_project.sh
9dec714b02a2160849cd2531f6396a5bf260e156
[qmk_firmware.git] / util / new_project.sh
1 #!/bin/sh
2 # Script to make a new quantum project
3 # Jack Humbert 2015
4
5 KEYBOARD=$1
6 KEYBOARD_TYPE=$2
7
8 if [ -z "$KEYBOARD" ]; then
9     echo "Usage:   $0 <keyboard_name> <keyboard_type>"
10     echo "Example: $0 gh60 avr"
11     echo "Example: $0 bfake ps2avrgb"
12     exit 1
13 elif [ -z "$KEYBOARD_TYPE" ]; then
14   KEYBOARD_TYPE=avr
15 fi
16
17 if [ "$KEYBOARD_TYPE" != "avr" ] && [ "$KEYBOARD_TYPE" != "ps2avrgb" ]; then
18   echo "Invalid keyboard type target"
19   exit 1
20 fi
21
22 if [ -e "keyboards/$1" ]; then
23         echo "Error! keyboards/$1 already exists!"
24         exit 1
25 fi
26
27 cd "$(dirname "$0")/.." || exit
28
29 KEYBOARD_NAME=$(basename "$1")
30 KEYBOARD_NAME_UPPERCASE=$(echo "$KEYBOARD_NAME" | awk '{print toupper($0)}')
31 NEW_KBD=keyboards/${KEYBOARD}
32
33
34 cp -r quantum/template/base "$NEW_KBD"
35 cp -r "quantum/template/$KEYBOARD_TYPE/." "$NEW_KBD"
36
37 mv "${NEW_KBD}/template.c" "${NEW_KBD}/${KEYBOARD_NAME}.c"
38 mv "${NEW_KBD}/template.h" "${NEW_KBD}/${KEYBOARD_NAME}.h"
39 find "${NEW_KBD}" -type f -exec sed -i '' -e "s;%KEYBOARD%;${KEYBOARD_NAME};g" {} \;
40 find "${NEW_KBD}" -type f -exec sed -i '' -e "s;%KEYBOARD_UPPERCASE%;${KEYBOARD_NAME_UPPERCASE};g" {} \;
41
42 GIT=$(whereis git)
43 if [ "$GIT" != "" ]; then
44   IS_GIT_REPO=$($GIT log >>/dev/null 2>&1; echo $?)
45   if [ "$IS_GIT_REPO" -eq 0 ]; then
46     ID="$($GIT config --get user.name)"
47     read -rp "What is your name? [$ID] " YOUR_NAME
48     if [ -n "$YOUR_NAME" ]; then
49       ID=$YOUR_NAME
50     fi
51     echo "Using $ID as user name"
52
53     for i in "$NEW_KBD/config.h" \
54              "$NEW_KBD/$KEYBOARD_NAME.c" \
55              "$NEW_KBD/$KEYBOARD_NAME.h" \
56              "$NEW_KBD/keymaps/default/config.h" \
57              "$NEW_KBD/keymaps/default/keymap.c"
58     do
59       awk -v id="$ID" '{sub(/%YOUR_NAME%/,id); print}' < "$i" > "$i.$$"
60       mv "$i.$$" "$i"
61     done
62   fi
63 fi
64
65 cat <<-EOF
66 ######################################################
67 # $NEW_KBD project created. To start
68 # working on things, cd into $NEW_KBD
69 ######################################################
70 EOF