]> git.donarmstrong.com Git - qmk_firmware.git/blob - util/win_shared_install.sh
Initial structure for shared msys2 and wsl installation
[qmk_firmware.git] / util / win_shared_install.sh
1 #!/bin/bash
2
3 download_dir=win_downloaded
4 wsl_download_dir=wsl_downloaded
5
6 function install_utils {
7     rm -f -r $download_dir
8     mkdir $download_dir
9
10     pushd $download_dir
11
12     echo "Installing dfu-programmer"
13     wget 'http://downloads.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip'
14     unzip -d dfu-programmer dfu-programmer-win-0.7.2.zip
15
16     echo "Installing dfu-util"
17     wget 'http://dfu-util.sourceforge.net/releases/dfu-util-0.9-win64.zip'
18     unzip dfu-util-0.9-win64.zip
19
20     echo "Installing teensy_loader_cli"
21     wget 'https://www.pjrc.com/teensy/teensy_loader_cli_windows.zip'
22     unzip teensy_loader_cli_windows.zip
23
24     echo "Installing Atmel Flip"
25     wget 'http://www.atmel.com/images/Flip%20Installer%20-%203.4.7.112.exe'
26     mv Flip\ Installer\ \-\ 3.4.7.112.exe FlipInstaller.exe
27
28     echo "Downloading the QMK driver installer"
29     wget -qO- https://api.github.com/repos/qmk/qmk_driver_installer/releases | grep browser_download_url | head -n 1 | cut -d '"' -f 4 | wget -i -
30
31     rm -f *.zip
32
33     popd > /dev/null
34 }
35
36 function install_drivers {
37     pushd $download_dir
38     cmd.exe /C qmk_driver_installer.exe $1 $2 ../drivers.txt
39     popd > /dev/null
40 }
41
42 pushd "$dir"
43
44 if [ -d "$wsl_download_dir" ]; then
45     echo "Renaming existing wsl_download_dir to win_download"
46     mv -f "$wsl_download_dir" "$download_dir"
47 fi
48
49 if [ ! -d "$download_dir" ]; then
50     install_utils
51 else
52     while true; do
53         echo
54         read -p "The utils seem to already be downloaded, do you want to re-download them and update to the newest version (Y/N) " res
55         case $res in
56             [Yy]* ) install_utils; break;;
57             [Nn]* ) break;;
58             * ) echo "Invalid answer";;
59         esac
60     done
61 fi
62
63 while true; do
64     echo
65     read -p "Flip need to be installed if you want to use that for programming, do you want to install it now? (Y/N) " res
66     case $res in
67         [Yy]* ) cmd.exe /c $download_dir\\FlipInstaller.exe; break;;
68         [Nn]* ) break;;
69         * ) echo "Invalid answer";;
70     esac
71 done
72
73
74 while true; do
75     echo
76     echo "Which USB drivers do you want to install?"
77     echo "(A)all - All supported drivers will be installed"
78     echo "(C)onnected - Only drivers for connected keyboards (in bootloader/flashing mode) will be installed"
79     echo "(F)force - Like all, but will also override existing drivers for connected keyboards"
80     echo "(N)one - No drivers will be installed, flashing your keyboard will most likely not work"
81     read -p "(A/C/F/N)? " res
82     case $res in
83         [Aa]* ) install_drivers --all; break;;
84         [Cc]* ) install_drivers; break;;
85         [Ff]* ) install_drivers --all --force; break;;
86         [Nn]* ) break;;
87         * ) echo "Invalid answer";;
88     esac
89 done
90
91 echo 
92 echo "Creating a softlink to the utils directory as ~/qmk_utils."
93 echo "This is needed so that the the make system can find all utils it need."
94 read -p "Press any key to continue (ctrl-c to abort)"
95 ln -sfn "$dir" ~/qmk_utils
96
97 if grep "^source ~/qmk_utils/activate_wsl.sh$" ~/.bashrc
98 then
99     echo
100     echo "The line source ~/qmk_utils/activate_wsl.sh is already added to your /.bashrc"
101     echo "Not adding it twice"
102 else
103     while true; do
104         echo
105         echo "Do you want to add 'source ~/qmk_utils/activate_wsl.sh' to the end of you .bashrc file?"
106         echo "Without this make won't find the needed utils, so if you don't want to do it automatically,"
107         echo "then you have to do it manually."
108         read -p "(Y/N)? " res
109         case $res in
110             [Yy]* ) echo "source ~/qmk_utils/activate_wsl.sh" >> ~/.bashrc; break;;
111             [Nn]* ) break;;
112             * ) echo "Invalid answer";;
113         esac
114     done
115 fi
116
117 while true; do
118     echo
119     echo "Do you want to add a symlink to the QMK repository in your home directory for convenience?"
120     echo "This will create a folder 'qmk_firmware' in your home directory."
121     echo "In the future you can use this folder instead of the full path on your windows file system"
122     read -p "(Y/N)? " res
123     case $res in
124         [Yy]* ) ln -sfn "$dir/.." ~/qmk_firmware; break;;
125         [Nn]* ) break;;
126         * ) echo "Invalid answer";;
127     esac
128 done
129
130 echo
131 echo "******************************************************************************"
132 echo "Installation completed!"
133 echo "You need to open a new batch command prompt for all the utils to work properly"
134 echo "******************************************************************************"
135
136 popd > /dev/null
137