qmk_firmware/util/qmk_install.sh
Zach White db1eacdaac
Align our subprocess usage with current best practices. (#12940)
* Align our subprocess usage with current best practices.

* remove unused import

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* fix the cpp invocation for older python

* allow for unprompted installation

* make sure qmk new-keyboard works on windows

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-19 15:24:46 -07:00

77 lines
3 KiB
Bash
Executable file

#!/bin/bash
QMK_FIRMWARE_DIR=$(cd -P -- "$(dirname -- "$0")/.." && pwd -P)
QMK_FIRMWARE_UTIL_DIR=$QMK_FIRMWARE_DIR/util
if [ "$1" = "-y" ]; then
SKIP_PROMPT='-y'
MSYS2_CONFIRM='--noconfirm'
else
SKIP_PROMPT=''
MSYS2_CONFIRM=''
fi
case $(uname -a) in
*Darwin*)
. "$QMK_FIRMWARE_UTIL_DIR/install/macos.sh";;
*FreeBSD*)
. "$QMK_FIRMWARE_UTIL_DIR/install/freebsd.sh";;
*MINGW64_NT*)
. "$QMK_FIRMWARE_UTIL_DIR/install/msys2.sh";;
*MSYS_NT*|*MINGW32_NT*)
echo "Please open a MinGW64 terminal window and re-run this script."
exit 1;;
*Linux*)
. "$QMK_FIRMWARE_UTIL_DIR/install/linux_shared.sh"
case $(grep ID /etc/os-release) in
*arch*|*manjaro*)
. "$QMK_FIRMWARE_UTIL_DIR/install/arch.sh";;
*debian*|*ubuntu*)
. "$QMK_FIRMWARE_UTIL_DIR/install/debian.sh";;
*fedora*)
. "$QMK_FIRMWARE_UTIL_DIR/install/fedora.sh";;
*gentoo*)
. "$QMK_FIRMWARE_UTIL_DIR/install/gentoo.sh";;
*slackware*)
. "$QMK_FIRMWARE_UTIL_DIR/install/slackware.sh";;
*solus*)
. "$QMK_FIRMWARE_UTIL_DIR/install/solus.sh";;
*void*)
. "$QMK_FIRMWARE_UTIL_DIR/install/void.sh";;
*)
echo "Sorry, we don't recognize your distribution. Try using the docker image instead:"
echo
echo "https://docs.qmk.fm/#/getting_started_docker"
exit 1;;
esac
if uname -a | grep -qi microsoft; then
echo "********************************************************************************"
echo "* Detected Windows Subsystem for Linux. *"
echo "* Currently, WSL has no access to USB devices and so flashing from within the *"
echo "* WSL terminal will not work. *"
echo "* *"
echo "* Please install the QMK Toolbox instead: *"
echo "* https://github.com/qmk/qmk_toolbox/releases *"
echo "* Then, map your WSL filesystem as a network drive: *"
echo "* \\\\\\\\wsl$\\<distro> *"
echo "********************************************************************************"
echo
fi
;;
*)
echo "Sorry, we don't recognize your environment. Help us by contributing support!"
echo
echo "https://docs.qmk.fm/#/contributing"
exit 1;;
esac
if type _qmk_install_prepare &>/dev/null; then
_qmk_install_prepare || exit 1
fi
_qmk_install
if type _qmk_install_bootloadhid &>/dev/null; then
_qmk_install_bootloadhid
fi