Skip to content

Instantly share code, notes, and snippets.

@hughpearse
Last active September 10, 2024 08:56
Show Gist options
  • Save hughpearse/b64630ae91c49a9928efe1f113009104 to your computer and use it in GitHub Desktop.
Save hughpearse/b64630ae91c49a9928efe1f113009104 to your computer and use it in GitHub Desktop.
Instant Development Environments
#!/bin/bash
##########
# Usage:
# foo@bar$ rm run.pid; rm nohup.out; fuser -k 8080/tcp; nohup bash ./lin_sever_golang_ide.sh 2>&1 & echo $! > run.pid
# foo@bar$ disown
# foo@bar$ cat nohup.out | grep "Password:"
# foo@bar$ cat run.pid | xargs kill
##########
# Visual Studio Code
zipFileVSCode="code-server-4.92.2-linux-amd64.tar.gz"
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --insecure -L -o ${zipFileVSCode} https://github.com/coder/code-server/releases/download/v4.92.2/code-server-4.92.2-linux-amd64.tar.gz
vscodeDir="code-server-4.92.2-linux-amd64";
[ ! -d "${vscodeDir}" ] && tar -xzf ./${zipFileVSCode}
# Go Development Kit
zipFileGo="go1.23.0.linux-amd64.tar.gz"
echo "Checking: ${zipFileGo}"
[ ! -f "${zipFileGo}" ] && curl --insecure -L -o ${zipFileGo} https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
goDir="go"
[ ! -d "${goDir}" ] && tar -xzf ./${zipFileGo}
# VSCode Extension for Go
goExtensionFile="golang.Go-0.42.0.vsix"
echo "Checking ${goExtensionFile}"
[ ! -f "${goExtensionFile}" ] && curl --insecure --compressed -L -o ${goExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/golang/vsextensions/Go/0.42.0/vspackage
# Set env vars
export GO_HOME="$(pwd)/${goDir}"
export GOBIN="${GO_HOME}/bin"
export GOPATH="$(pwd)/go-settings"
export GOCACHE="$(pwd)/go-cache"
export GOTMPDIR="$(pwd)/go-tmp"
export PATH="${GOBIN}:${PATH}"
mkdir -p ${GOTMPDIR}
# Install extensions
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${goExtensionFile}
export PASSWORD="$(openssl rand -hex 32)"
echo "Password: ${PASSWORD}"
# Launch VS Code
$(pwd)/${vscodeDir}/bin/code-server --bind-addr 0.0.0.0:8080 --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
##########
# Usage:
# foo@bar$ rm run.pid; rm nohup.out; fuser -k 8081/tcp; nohup bash ./lin_sever_java_ide.sh 2>&1 & echo $! > run.pid
# foo@bar$ disown
# foo@bar$ cat nohup.out | grep "Password:"
# foo@bar$ cat run.pid | xargs kill
##########
# Visual Studio Code
zipFileVSCode="code-server-4.92.2-linux-amd64.tar.gz"
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --insecure -L -o ${zipFileVSCode} https://github.com/coder/code-server/releases/download/v4.92.2/code-server-4.92.2-linux-amd64.tar.gz
vscodeDir="code-server-4.92.2-linux-amd64";
[ ! -d "${vscodeDir}" ] && tar -xzf ./${zipFileVSCode}
# Java 21
zipFileJava="zulu21.zip";
echo "Checking: ${zipFileJava}"
[ ! -f "${zipFileJava}" ] && curl --ssl-no-revoke -L -o ${zipFileJava} https://cdn.azul.com/zulu/bin/zulu21.36.17-ca-jdk21.0.4-linux_x64.zip
jdkDir="zulu21.36.17-ca-jdk21.0.4-linux_x64";
[ ! -d "${jdkDir}" ] && unzip -n ./${zipFileJava} ;
# Gradle 8.9
zipFileGradle="gradle-8.9.zip";
echo "Checking: ${zipFileGradle}"
[ ! -f "${zipFileGradle}" ] && curl --ssl-no-revoke -L -o ${zipFileGradle} https://services.gradle.org/distributions/gradle-8.9-bin.zip
gradleDir="gradle-8.9";
[ ! -d "${gradleDir}" ] && unzip -n ./${zipFileGradle} ;
# Maven 3.9.9
zipFileMvn="apache-maven-3.9.9-bin.zip";
echo "Checking: ${zipFileMvn}"
[ ! -f "${zipFileMvn}" ] && curl --ssl-no-revoke -L -o ${zipFileMvn} https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.zip
mvnDir="apache-maven-3.9.9";
[ ! -d "${mvnDir}" ] && unzip -n ./${zipFileMvn} ;
# VSCode Extension for Java
javaExtensionFile="vscjava.vscode-java-pack-0.29.2024081515.vsix";
echo "Checking ${javaExtensionFile}"
[ ! -f "${javaExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${javaExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/vscjava/vsextensions/vscode-java-pack/0.29.2024081515/vspackage
# VSCode Extension for Gradle
gradleExtensionFile="vscjava.vscode-java-pack-0.29.2024081515.vsix";
echo "Checking ${gradleExtensionFile}"
[ ! -f "${gradleExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${gradleExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/vscjava/vsextensions/vscode-gradle/3.16.2024081608/vspackage
# VSCode Extension for Maven
mavenExtensionFile="vscjava.vscode-java-pack-0.29.2024081515.vsix";
echo "Checking ${mavenExtensionFile}"
[ ! -f "${mavenExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${mavenExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/vscjava/vsextensions/vscode-maven/0.44.2024072906/vspackage
# Set env vars
export GRADLE_USER_HOME="$(pwd)/.gradle"
export JAVA_HOME="$(pwd)/${jdkDir}";
export GRADLE_HOME="$(pwd)/${gradleDir}";
export MAVEN_HOME="$(pwd)/${mvnDir}"
export PATH="${JAVA_HOME}/bin:${GRADLE_HOME}/bin:${MAVEN_HOME}/bin:${PATH}";
# Install extensions
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${javaExtensionFile}
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${gradleExtensionFile}
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${mavenExtensionFile}
export PASSWORD="$(openssl rand -hex 32)"
echo "Password: ${PASSWORD}"
# Launch VS Code
$(pwd)/${vscodeDir}/bin/code-server --bind-addr 0.0.0.0:8081 --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
##########
# Usage:
# foo@bar$ rm run.pid; rm nohup.out; fuser -k 8082/tcp; nohup bash ./lin_sever_nodejs_ide.sh 2>&1 & echo $! > run.pid
# foo@bar$ disown
# foo@bar$ cat nohup.out | grep "Password:"
# foo@bar$ cat run.pid | xargs kill
##########
# Visual Studio Code
zipFileVSCode="code-server-4.92.2-linux-amd64.tar.gz"
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --insecure -L -o ${zipFileVSCode} https://github.com/coder/code-server/releases/download/v4.92.2/code-server-4.92.2-linux-amd64.tar.gz
vscodeDir="code-server-4.92.2-linux-amd64";
[ ! -d "${vscodeDir}" ] && tar -xzf ./${zipFileVSCode}
# NodeJS
zipFileNode="node-v22.6.0-linux-x64.tar.xz"
echo "Checking: ${zipFileNode}"
[ ! -f "${zipFileNode}" ] && curl --insecure -L -o ${zipFileNode} https://nodejs.org/dist/v22.6.0/node-v22.6.0-linux-x64.tar.xz
nodejsDir="node-v22.6.0-linux-x64"
[ ! -d "${nodejsDir}" ] && tar -xf ./${zipFileNode}
tar -xf ./node-v22.6.0-linux-x64.tar.xz
# VSCode Extension for vscode-npm-script
npmScriptExtensionFile="eg2.vscode-npm-script-0.3.29.vsix"
echo "Checking ${npmScriptExtensionFile}"
[ ! -f "${npmScriptExtensionFile}" ] && curl --insecure --compressed -L -o ${npmScriptExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/eg2/vsextensions/vscode-npm-script/0.3.29/vspackage
# VSCode Extension for npm-intellisense
npmIntelliExtensionFile="christian-kohler.npm-intellisense-1.4.5.vsix"
echo "Checking ${npmIntelliExtensionFile}"
[ ! -f "${npmIntelliExtensionFile}" ] && curl --insecure --compressed -L -o ${npmIntelliExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/christian-kohler/vsextensions/npm-intellisense/1.4.5/vspackage
# VSCode Extension for path-intellisense
pathIntelliExtensionFile="christian-kohler.path-intellisense-2.9.0.vsix"
echo "Checking ${pathIntelliExtensionFile}"
[ ! -f "${pathIntelliExtensionFile}" ] && curl --insecure --compressed -L -o ${pathIntelliExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/christian-kohler/vsextensions/path-intellisense/2.9.0/vspackage
# VSCode Extension for vscode-eslint
eslintExtensionFile="dbaeumer.vscode-eslint-3.0.13.vsix"
echo "Checking ${eslintExtensionFile}"
[ ! -f "${eslintExtensionFile}" ] && curl --insecure --compressed -L -o ${eslintExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/dbaeumer/vsextensions/vscode-eslint/3.0.13/vspackage
# Set env vars
export NODE_HOME="$(pwd)/${nodejsDir}"
export NODE_PATH="$(pwd)/.node_modules"
export PATH="${NODE_HOME}/bin:${PATH}"
# Install extensions
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${npmScriptExtensionFile}
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${npmIntelliExtensionFile}
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${pathIntelliExtensionFile}
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${eslintExtensionFile}
export PASSWORD="$(openssl rand -hex 32)"
echo "Password: ${PASSWORD}"
# Launch VS Code
$(pwd)/${vscodeDir}/bin/code-server --bind-addr 0.0.0.0:8082 --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
##########
# Usage:
# foo@bar$ rm run.pid; rm nohup.out; fuser -k 8083/tcp; nohup bash ./lin_sever_rust_ide.sh 2>&1 & echo $! > run.pid
# foo@bar$ disown
# foo@bar$ cat nohup.out | grep "Password:"
# foo@bar$ cat run.pid | xargs kill
##########
# Visual Studio Code
zipFileVSCode="code-server-4.92.2-linux-amd64.tar.gz"
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --insecure -L -o ${zipFileVSCode} https://github.com/coder/code-server/releases/download/v4.92.2/code-server-4.92.2-linux-amd64.tar.gz
vscodeDir="code-server-4.92.2-linux-amd64";
[ ! -d "${vscodeDir}" ] && tar -xzf ./${zipFileVSCode}
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# VSCode Extension for vscode-eslint
rustExtensionFile="rust-lang.rust-analyzer-0.4.2091@linux-x64.vsix"
echo "Checking ${rustExtensionFile}"
[ ! -f "${rustExtensionFile}" ] && curl --insecure --compressed -L -o ${rustExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/rust-lang/vsextensions/rust-analyzer/0.4.2091/vspackage?targetPlatform=linux-x64
# Install extensions
$(pwd)/${vscodeDir}/bin/code-server --extensions-dir=$(pwd)/vscode-data --install-extension ${rustExtensionFile}
export PASSWORD="$(openssl rand -hex 32)"
echo "Password: ${PASSWORD}"
# Launch VS Code
$(pwd)/${vscodeDir}/bin/code-server --bind-addr 0.0.0.0:8083 --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
# Visual Studio Code
zipFileVSCode="vscode.zip";
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --ssl-no-revoke -L -o ${zipFileVSCode} https://update.code.visualstudio.com/latest/win32-x64-archive/stable
vscodeDir="vscode";
[ ! -d "${vscodeDir}" ] && unzip -n ./${zipFileVSCode} -d ${vscodeDir} ;
# .NET SDK 7.0
zipFileDotNet="dotnet-sdk-7.0.410-win-x64.zip";
echo "Checking: ${zipFileDotNet}"
[ ! -f "${zipFileDotNet}" ] && curl --ssl-no-revoke -L -o ${zipFileDotNet} https://download.visualstudio.microsoft.com/download/pr/1c6cf2f4-25f6-4317-94ce-5be9c8ae167d/02364359ad16d626f9dcb55717bd6900/dotnet-sdk-7.0.410-win-x64.zip
dotnetDir="dotnet";
[ ! -d "${dotnetDir}" ] && unzip -n ./${zipFileDotNet} -d ${dotnetDir};
# VSCode Extension for C# and dotnet
installToolExtensionFile="ms-dotnettools.vscode-dotnet-runtime-2.1.2.vsix"
echo "Checking ${installToolExtensionFile}"
[ ! -f "${installToolExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${installToolExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dotnettools/vsextensions/vscode-dotnet-runtime/2.1.2/vspackage
# VSCode Extension for C#
cSharpExtensionFile="ms-dotnettools.csharp-2.43.16@win32-x64.vsix";
echo "Checking ${cSharpExtensionFile}"
[ ! -f "${cSharpExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${cSharpExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dotnettools/vsextensions/csharp/2.43.16/vspackage?targetPlatform=win32-x64
# VSCode Extension for DotNET
dotNetExtensionFile="ms-dotnettools.csdevkit-1.10.6@win32-x64.vsix";
echo "Checking ${dotNetExtensionFile}"
[ ! -f "${dotNetExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${dotNetExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-dotnettools/vsextensions/csdevkit/1.10.6/vspackage?targetPlatform=win32-x64
# Git
zipFileGit="MinGit-2.46.0-64-bit.zip";
echo "Checking: ${zipFileGit}"
[ ! -f "${zipFileGit}" ] && curl --ssl-no-revoke -L -o ${zipFileGit} https://github.com/git-for-windows/git/releases/download/v2.46.0.windows.1/MinGit-2.46.0-64-bit.zip
gitDir="git";
[ ! -d "${gitDir}" ] && unzip -n ./${zipFileGit} -d ${gitDir};
# Set env vars
export WSNSHELL_HOME="$(pwd)"
export DOTNET_HOME="$(pwd)/${dotnetDir}";
export GITHOME="$(pwd)/${gitDir}"
export PATH="${DOTNET_HOME}/:${GITHOME}/mingw64/bin:${PATH}";
# Install extensions
$(pwd)/${vscodeDir}/bin/code --extensions-dir=$(pwd)/vscode-data --install-extension ${installToolExtensionFile}
$(pwd)/${vscodeDir}/bin/code --extensions-dir=$(pwd)/vscode-data --install-extension ${cSharpExtensionFile}
$(pwd)/${vscodeDir}/bin/code --extensions-dir=$(pwd)/vscode-data --install-extension ${dotNetExtensionFile}
# Launch VS Code
$(pwd)/${vscodeDir}/Code.exe --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
# Visual Studio Code
zipFileVSCode="vscode.zip";
echo "Checking: ${zipFileVSCode}"
[ ! -f "${zipFileVSCode}" ] && curl --ssl-no-revoke -L -o ${zipFileVSCode} https://update.code.visualstudio.com/latest/win32-x64-archive/stable
vscodeDir="vscode";
[ ! -d "${vscodeDir}" ] && unzip -n ./${zipFileVSCode} -d ${vscodeDir} ;
# Go Development Kit
zipFileGo="go1.23.0.windows-amd64.zip";
echo "Checking: ${zipFileGo}"
[ ! -f "${zipFileGo}" ] && curl --ssl-no-revoke -L -o ${zipFileGo} https://go.dev/dl/go1.23.0.windows-amd64.zip
goDir="go";
[ ! -d "${goDir}" ] && unzip -n ./${zipFileGo} ;
# VSCode Extension for Go
goExtensionFile="golang.Go-0.42.0.vsix";
echo "Checking ${goExtensionFile}"
[ ! -f "${goExtensionFile}" ] && curl --ssl-no-revoke --compressed -L -o ${goExtensionFile} https://marketplace.visualstudio.com/_apis/public/gallery/publishers/golang/vsextensions/Go/0.42.0/vspackage
# Git
zipFileGit="MinGit-2.46.0-64-bit.zip";
echo "Checking: ${zipFileGit}"
[ ! -f "${zipFileGit}" ] && curl --ssl-no-revoke -L -o ${zipFileGit} https://github.com/git-for-windows/git/releases/download/v2.46.0.windows.1/MinGit-2.46.0-64-bit.zip
gitDir="git";
[ ! -d "${gitDir}" ] && unzip -n ./${zipFileGit} -d ${gitDir};
# Set env vars
export WSNSHELL_HOME="$(pwd)"
export HOME="$(pwd)"
export GO_HOME="$(pwd)/${goDir}";
export GOBIN="${GO_HOME}/bin"
export GOPATH="$(pwd)/go-settings";
export GOCACHE="$(pwd)/go-cache";
export GOTMPDIR="$(pwd)/go-tmp"
export GITHOME="$(pwd)/${gitDir}"
export PATH="${GOBIN}:${GITHOME}/mingw64/bin:${PATH}";
[ ! -d "${GOTMPDIR}" ] && mkdir ${GOTMPDIR}
# Install extensions
$(pwd)/${vscodeDir}/bin/code --extensions-dir=$(pwd)/vscode-data --install-extension ${goExtensionFile}
# Launch VS Code
$(pwd)/${vscodeDir}/Code.exe --user-data-dir $(pwd)/vscode-data --extensions-dir=$(pwd)/vscode-data
#!/bin/bash
# Intellij
zipFileIntellij="intellij.zip";
echo "Checking: ${zipFileIntellij}"
[ ! -f "${zipFileIntellij}" ] && curl --ssl-no-revoke -L -o ${zipFileIntellij} https://download.jetbrains.com/idea/ideaIC-2024.2.0.1.win.zip
intellijDir="intellij"
[ ! -d "${intellijDir}" ] && unzip -n ./${zipFileIntellij} -d ${intellijDir} ;
# Java 17
zipFileJava="zulu17.zip";
echo "Checking: ${zipFileJava}"
[ ! -f "${zipFileJava}" ] && curl --ssl-no-revoke -L -o ${zipFileJava} https://cdn.azul.com/zulu/bin/zulu17.52.17-ca-jdk17.0.12-win_x64.zip
jdkDir="zulu17.52.17-ca-jdk17.0.12-win_x64";
[ ! -d "${jdkDir}" ] && unzip -n ./${zipFileJava} ;
# Java 21
#zipFileJava="zulu21.zip";
#echo "Checking: ${zipFileJava}"
#[ ! -f "${zipFileJava}" ] && curl --ssl-no-revoke -L -o ${zipFileJava} https://cdn.azul.com/zulu/bin/zulu21.36.17-ca-jdk21.0.4-win_x64.zip
#jdkDir="zulu21.36.17-ca-jdk21.0.4-win_x64";
#[ ! -d "${jdkDir}" ] && unzip -n ./${zipFileJava} ;
# Gradle 8.9
#zipFileGradle="gradle-8.9-bin.zip";
#echo "Checking: ${zipFileGradle}"
#[ ! -f "${zipFileGradle}" ] && curl --ssl-no-revoke -L -o ${zipFileGradle} https://services.gradle.org/distributions/gradle-8.9-bin.zip
#gradleDir="gradle-8.9";
#[ ! -d "${gradleDir}" ] && unzip -n ./${zipFileGradle} ;
# Gradle 8.5
zipFileGradle="gradle-8.5-bin.zip";
echo "Checking: ${zipFileGradle}"
[ ! -f "${zipFileGradle}" ] && curl --ssl-no-revoke -L -o ${zipFileGradle} https://services.gradle.org/distributions/gradle-8.5-bin.zip
gradleDir="gradle-8.5";
[ ! -d "${gradleDir}" ] && unzip -n ./${zipFileGradle} ;
# Maven 3.9.9
zipFileMvn="apache-maven-3.9.9-bin.zip";
echo "Checking: ${zipFileMvn}"
[ ! -f "${zipFileMvn}" ] && curl --ssl-no-revoke -L -o ${zipFileMvn} https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.zip
mvnDir="apache-maven-3.9.9";
[ ! -d "${mvnDir}" ] && unzip -n ./${zipFileMvn} ;
# Git
zipFileGit="MinGit-2.46.0-64-bit.zip";
echo "Checking: ${zipFileGit}"
[ ! -f "${zipFileGit}" ] && curl --ssl-no-revoke -L -o ${zipFileGit} https://github.com/git-for-windows/git/releases/download/v2.46.0.windows.1/MinGit-2.46.0-64-bit.zip
gitDir="git";
[ ! -d "${gitDir}" ] && unzip -n ./${zipFileGit} -d ${gitDir};
# Set env vars
export WSNSHELL_HOME="$(pwd)"
export GRADLE_USER_HOME="$(pwd)/.gradle"
export JAVA_HOME="$(pwd)/${jdkDir}";
export GRADLE_HOME="$(pwd)/${gradleDir}";
export MAVEN_HOME="$(pwd)/${mvnDir}"
export GITHOME="$(pwd)/${gitDir}"
export PATH="${JAVA_HOME}/bin:${GRADLE_HOME}/bin:${MAVEN_HOME}/bin:${GITHOME}/mingw64/bin:${PATH}";
# Launch IDE
$(pwd)/${intellijDir}/bin/idea64.exe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment