diff --git a/.gitignore b/.gitignore index b4bd54c6be..3d544c712e 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ pubspec.lock # ignore tool used for commit linting .githooks/gitlint +.githooks/gitlint.exe diff --git a/frontend/scripts/install_dev_env/install_windows.sh b/frontend/scripts/install_dev_env/install_windows.sh new file mode 100644 index 0000000000..bbba4cf2d5 --- /dev/null +++ b/frontend/scripts/install_dev_env/install_windows.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +YELLOW="\e[93m" +GREEN="\e[32m" +RED="\e[31m" +ENDCOLOR="\e[0m" + +printMessage() { + printf "${YELLOW}AppFlowy : $1${ENDCOLOR}\n" +} + +printSuccess() { + printf "${GREEN}AppFlowy : $1${ENDCOLOR}\n" +} + +printError() { + printf "${RED}AppFlowy : $1${ENDCOLOR}\n" +} + + +# Note: This script does not install applications which are installed by the package manager. There are too many package managers out there. + +# Install Rust +if ! rustc --version; then + + printMessage "The Rust programming language is required to compile AppFlowy." + printMessage "It has not been detected on your system." + + read -p "$(printSuccess "Do you want to install Rust? [y/N]") " installrust + + if [ ${installrust^^} == "Y" ]; then + printMessage "Installing Rust." + if ! curl --proto '=https' --tlsv1.2 -sSf https://win.rustup.rs/x86_64 -o rustup-init.exe; then + printError "Failed to download the Rust installer" + exit 1 + fi + start "Rust Installer" rustup-init.exe + read -p "$(printSuccess "Press enter when Rust installation is done") " isDone + rm rustup-init.exe + $USERPROFILE/.cargo/bin/rustup toolchain install stable + $USERPROFILE/.cargo/bin/rustup default stable + else + printMessage "Skipping Rust installation." + fi +else + printSuccess "Rust has been detected on your system, so Rust installation has been skipped" +fi + +# Enable the flutter stable channel +printMessage "Setting up Flutter" +flutter channel stable + +# Add pub cache and cargo to PATH +powershell '[Environment]::SetEnvironmentVariable("PATH", $Env:PATH + ";" + $Env:LOCALAPPDATA + "\Pub\Cache\Bin", [EnvironmentVariableTarget]::User)' +powershell '[Environment]::SetEnvironmentVariable("PATH", $Env:PATH + ";" + $Env:USERPROFILE + "\.cargo\bin", [EnvironmentVariableTarget]::User)' + +# Enable linux desktop +flutter config --enable-windows-desktop + +# Fix any problems reported by flutter doctor +flutter doctor + +# Add the githooks directory to your git configuration +printMessage "Setting up githooks." +git config core.hooksPath .githooks + +# Install go-gitlint +printMessage "Installing go-gitlint." +GOLINT_FILENAME="go-gitlint_1.1.0_windows_x86_64.tar.gz" +if curl --proto '=https' --tlsv1.2 -sSfL https://github.com/llorllale/go-gitlint/releases/download/1.1.0/${GOLINT_FILENAME} -o ${GOLINT_FILENAME}; then + tar -zxv --directory .githooks/. -f ${GOLINT_FILENAME} gitlint.exe + rm ${GOLINT_FILENAME} +else + printError "Failed to install go-gitlint" +fi + +# Change to the frontend directory +cd frontend + +# Install cargo make +printMessage "Installing cargo-make." +$USERPROFILE/.cargo/bin/cargo install --force cargo-make + +# Install duckscript +printMessage "Installing duckscript." +$USERPROFILE/.cargo/bin/cargo install --force duckscript_cli + +# Enable vcpkg integration +# Note: Requires admin +printMessage "Setting up vcpkg." +vcpkg integrate install + +# Check prerequisites +printMessage "Checking prerequisites." +PATH="$PATH;$LOCALAPPDATA\Pub\Cache\bin" bash -c '$USERPROFILE/.cargo/bin/cargo make flowy_dev'