Skip to content

Instantly share code, notes, and snippets.

@meriadec
Last active May 2, 2018 08:00
Show Gist options
  • Save meriadec/9cea57fc5bc60d2236ae763866e703af to your computer and use it in GitHub Desktop.
Save meriadec/9cea57fc5bc60d2236ae763866e703af to your computer and use it in GitHub Desktop.
Ledger Live environment setup
#!/bin/env bash
#
# Ledger Live - environment setup
# -------------------------------
#
# This script install environment to work with lib-core + live-desktop
# without the pain.
#
# It will install this structure in the calling directory:
# .
# ├── ledger-live-desktop -> Electron app
# ├── lib-ledger-core -> C++ core library
# ├── lib-ledger-core-build -> Core library build (dylibs)
# └── lib-ledger-core-node-bindings -> NodeJs bindings for lib-core
#
# exit whenever an error is encountered
set -e
function main {
echo "> Ledger Live environment setup"
echo ""
# repo url branch
cloneIfNeeded meriadec/ledger-live-desktop lib-core-bindings
cloneIfNeeded meriadec/lib-ledger-core-node-bindings master
cloneIfNeeded KhalilBellakrid/lib-ledger-core develop
# the build folder is created empty
createIfNeeded lib-ledger-core-build
# install submodules on lib-ledger-core if needed
if [ -z "$(ls -A lib-ledger-core/djinni)" ]; then
echo "> Installing lib-ledger-core submodules"
pushd lib-ledger-core
git submodule update --init --recursive
popd
else
echo "> Submodules for lib-ledger-core seems to be be already installed, skipping"
fi
# build dylib
if [ -e lib-ledger-core-build/core/src/libledger-core.* ]; then
echo "> Dynamic library already builded, skipping"
else
echo "> Building dynamic library"
pushd lib-ledger-core-build
if [[ `uname` == 'Linux' ]]; then
cmake -DCMAKE_INSTALL_PREFIX=/usr/lib ../lib-ledger-core
elif [[ `uname` == 'Darwin' ]]; then
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/qt/5.10.0_1 ../lib-ledger-core
else
echo "Just stop using Windows already"
exit 1
fi
make -j 4
popd
fi
# copy dylib
echo "> Installing dylib in bindings..."
mkdir -p lib-ledger-core-node-bindings/lib
cp lib-ledger-core-build/core/src/libledger-core.* lib-ledger-core-node-bindings/lib
# ledger-core-node-bindings deps
if [ -z "$(ls -A lib-ledger-core-node-bindings/node_modules)" ]; then
echo "> Installing lib-ledger-core-node-bindings dependencies..."
pushd lib-ledger-core-node-bindings
mkdir -p js/tmp # TODO: find a better place to store sqlite instance
yarn --ignore-engines # --ignore-engines is for Node 10.*
popd
else
echo "> lib-ledger-core-node-bindings dependencies already here, skipping"
fi
# ledger-live deps
if [ -z "$(ls -A ledger-live-desktop/node_modules)" ]; then
echo "> Installing ledger-live-desktop dependencies..."
pushd ledger-live-desktop
yarn --ignore-engines # --ignore-engines is for Node 10.*
popd
else
echo "> ledger-live-desktop dependencies already here, skipping"
fi
echo ""
echo "> Finished"
}
# Helpers
function cloneIfNeeded {
fullName=$1
branchToCheckout=$2
dirName=$(echo $fullName | sed 's/.*\///')
if [ ! -e $dirName ]; then
echo "> Cloning $dirName..."
git clone git@github.com:$fullName.git
pushd $dirName >/dev/null
git checkout $branchToCheckout
popd >/dev/null
else
echo "> [$dirName] already exists, skipping"
fi
}
function createIfNeeded {
dirName=$1
if [ ! -e $dirName ]; then
mkdir $dirName
echo "> [$dirName] directory created"
else
echo "> [$dirName] already exists, skipping"
fi
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment