Skip to content

Instantly share code, notes, and snippets.

@fmg-lydonchandra
Forked from jslay88/install_openlens.sh
Created January 18, 2023 04:17
Show Gist options
  • Save fmg-lydonchandra/7149e89bf9e51d46ace538139c721554 to your computer and use it in GitHub Desktop.
Save fmg-lydonchandra/7149e89bf9e51d46ace538139c721554 to your computer and use it in GitHub Desktop.
Build and Install OpenLens
#!/bin/bash
install_deps_windows() {
echo "Installing Build Dependencies (Windows)..."
choco install -y make visualstudio2019buildtools visualstudio2019-workload-vctools
}
install_deps_darwin() {
echo "Installing Build Dependencies (Darwin)..."
xcode-select --install
if ! hash make 2>/dev/null; then
if ! hash brew 2>/dev/null; then
echo "Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
echo "Installing make via Homebrew..."
brew install make
fi
}
install_deps_posix() {
echo "Installing Build Dependencies (Posix)..."
sudo apt-get install -y make g++ curl
}
install_darwin() {
echo "Killing OpenLens (if open)..."
killall OpenLens
echo "Installing OpenLens (Darwin)..."
rm -Rf "$HOME/Applications/OpenLens.app"
arch="mac"
if [[ "$(uname -m)" == "arm64" ]]; then
arch="mac-arm64" # credit @teefax
fi
cp -Rfp "$tempdir/lens/dist/$arch/OpenLens.app" "$HOME/Applications/"
rm -Rf "$tempdir"
print_alias_message
}
install_posix() {
echo "Installing OpenLens (Posix)..."
cd "$tempdir"
sudo dpkg -i "$(ls -Art $tempdir/lens/dist/*.deb | tail -n 1)"
rm -Rf "$tempdir"
print_alias_message
}
install_windows() {
echo "Installing OpenLens (Windows)..."
"$(/bin/ls -Art $tempdir/lens/dist/OpenLens*.exe | tail -n 1)"
rm -Rf "$tempdir"
print_alias_message
}
install_nvm() {
if [ -z "$NVM_DIR" ]; then
echo "Installing NVM..."
NVM_VERSION=$(curl -s https://api.github.com/repos/nvm-sh/nvm/releases/latest | sed -En 's/ "tag_name": "(.+)",/\1/p')
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh | bash
NVM_DIR="$HOME/.nvm"
fi
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
}
build_openlens() {
tempdir=$(mktemp -d)
cd "$tempdir"
if [ -z "$1" ]; then
echo "Checking GitHub API for latests tag..."
OPENLENS_VERSION=$(curl -s https://api.github.com/repos/lensapp/lens/releases/latest | sed -En 's/ "tag_name": "(.+)",/\1/p')
else
if [[ "$1" == v* ]]; then
OPENLENS_VERSION="$1"
else
OPENLENS_VERSION="v$1"
fi
echo "Using supplied tag $OPENLENS_VERSION"
fi
if [ -z $OPENLENS_VERSION ]; then
echo "Failed to get valid version tag. Aborting!"
exit 1
fi
curl -L https://github.com/lensapp/lens/archive/refs/tags/$OPENLENS_VERSION.tar.gz | tar xvz
mv lens-* lens
cd lens
NVM_CURRENT=$(nvm current)
nvm install 16
nvm use 16
npm install -g yarn
make build
nvm use "$NVM_CURRENT"
}
print_alias_message() {
if [ "$(type -t install_openlens)" != 'alias' ]; then
printf "It is recommended to add an alias to your shell profile to run this script again.\n"
printf "alias install_openlens=\"curl -o- https://gist.githubusercontent.com/jslay88/bf654c23eaaaed443bb8e8b41d02b2a9/raw/install_openlens.sh | bash\"\n\n"
fi
}
if [[ "$(uname)" == "Linux" ]]; then
install_deps_posix
install_nvm
build_openlens "$1"
install_posix
elif [[ "$(uname)" == "Darwin" ]]; then
install_deps_darwin
install_nvm
build_openlens "$1"
install_darwin
else
install_deps_windows
install_nvm
build_openlens "$1"
install_windows
fi
echo "Done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment