diff --git a/README.md b/README.md index 76169e5..bd65b8b 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ sudo yunohost app install https://github.com/duniter/duniter_ynh The package is **in progress**. Currently, it: -* Install Duniter 0.14.2 and it's dependencies: node, npm +* Install Duniter 0.20.0aXX and it's dependencies: node, npm * Configure * Synchronize * Start diff --git a/sources/install.sh b/sources/install.sh deleted file mode 100644 index 9663503..0000000 --- a/sources/install.sh +++ /dev/null @@ -1,353 +0,0 @@ -#!/bin/bash - -{ # this ensures the entire script is downloaded # - -ucoin_has() { - type "$1" > /dev/null 2>&1 -} - -if [ -z "$UCOIN_DIR" ]; then - UCOIN_DIR="$HOME/.ucoin" -fi - -ucoin_latest_version() { - echo "v0.14.2" -} - -ucoin_repo_url() { - echo "https://github.com/ucoin-io/ucoin.git" -} - -ucoin_download() { - if ucoin_has "curl"; then - curl -qkL $* - elif ucoin_has "wget"; then - # Emulate curl with wget - ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \ - -e 's/-L //' \ - -e 's/-I /--server-response /' \ - -e 's/-s /-q /' \ - -e 's/-o /-O /' \ - -e 's/-C - /-c /') - wget $ARGS - fi -} - -ucoin_is_ubuntu_install() { - local distribution - distribution=`cat /etc/*-release file 2>/dev/null | grep "Ubuntu"` - if [[ "$distribution" = *Ubuntu* ]]; then - return 0 - else - return 1 - fi -} - -ucoin_is_debian_install() { - local distribution - distribution=`cat /etc/*-release file 2>/dev/null | grep "Debian"` - if [[ "$distribution" = *Debian* ]]; then - return 0 - else - return 1 - fi -} - -ucoin_is_fedora_install() { - local distribution - distribution=`cat /etc/*-release file 2>/dev/null | grep "Fedora"` - if [[ "$distribution" = *Fedora* ]]; then - return 0 - else - return 1 - fi -} - -install_ucoin_from_git() { - - if ! ucoin_has "make"; then - if ucoin_is_ubuntu_install; then - echo "=> make is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation." - exit 1 - fi - if ucoin_is_debian_install; then - echo "=> make is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation." - exit 1 - fi - fi - if ! ucoin_has "g++"; then - if ucoin_is_ubuntu_install; then - echo "=> g++ is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation." - exit 1 - elif ucoin_is_debian_install; then - echo "=> g++ is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation." - exit 1 - else - echo "=> g++ is not available" - fi - return 11 - fi - if ! ucoin_has "python"; then - if ucoin_is_ubuntu_install; then - echo "=> python is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation." - exit 1 - elif ucoin_is_debian_install; then - echo "=> python is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation." - exit 1 - else - echo "=> python is not available" - fi - return 11 - fi - - local PREVIOUS_PATH - PREVIOUS_PATH=$PATH - if ucoin_has "git"; then - # Git is here: clone repository - if [ -d "$UCOIN_DIR/.git" ]; then - echo "=> ucoin is already installed in $UCOIN_DIR, trying to update using git" - printf "\r=> " - cd "$UCOIN_DIR" && (command git fetch 2> /dev/null || { - echo >&2 "Failed to update ucoin, run 'git fetch' in $UCOIN_DIR yourself." && exit 1 - }) - else - # Cloning to $UCOIN_DIR - echo "=> Downloading ucoin from git to '$UCOIN_DIR'" - printf "\r=> " - mkdir -p "$UCOIN_DIR" - command git clone "$(ucoin_repo_url)" "$UCOIN_DIR" - fi - cd "$UCOIN_DIR" && command git checkout --quiet $(ucoin_latest_version) - if [ ! -z "$(cd "$UCOIN_DIR" && git show-ref refs/heads/master)" ]; then - if git branch --quiet 2>/dev/null; then - cd "$UCOIN_DIR" && command git branch --quiet -D master >/dev/null 2>&1 - else - echo >&2 "Your version of git is out of date. Please update it!" - cd "$UCOIN_DIR" && command git branch -D master >/dev/null 2>&1 - fi - fi - else - # Fallback: git is not available, we download sources tarball - local UCOIN_SRC_TARBALL=https://github.com/ucoin-io/ucoin/archive/$(ucoin_latest_version).tar.gz - local UCOIN_SRC_ARCHIVE=$UCOIN_DIR/ucoin_$(ucoin_latest_version).tar.gz - local UCOIN_SRC_FOLDER=$UCOIN_DIR/ucoin-$(ucoin_latest_version | sed -e s/^v//) - echo "=> Downloading '$UCOIN_SRC_TARBALL' to '$UCOIN_SRC_ARCHIVE'" - mkdir -p "$UCOIN_DIR" - ucoin_download "$UCOIN_SRC_TARBALL" -o "$UCOIN_SRC_ARCHIVE" || { - echo >&2 "Failed to download '$UCOIN_SRC_TARBALL'" - return 7 - } - echo "=> Extracting..." - cd "$UCOIN_DIR" && tar xzf $UCOIN_SRC_ARCHIVE || { - echo >&2 "Failed to extract '$UCOIN_SRC_ARCHIVE'" - return 8 - } - echo "=> Moving..." - mv $UCOIN_SRC_FOLDER/* $UCOIN_DIR || { - echo >&2 "Failed to move files from '$UCOIN_SRC_FOLDER'" - return 9 - } - echo "=> Cleaning ucoin sources..." - rm -Rf $UCOIN_ARCHIVE $UCOIN_SRC_ARCHIVE $UCOIN_SRC_FOLDER || { - echo >&2 "Failed to clean ucoin sources" - return 10 - } - fi - - # Download Nodejs - local NVER="4.2.0"; - local ARCH="86" - local X64=`uname -a | grep "x86_64"` - if [ ! -z "$X64" ]; then - ARCH="64" - fi - local NODEJS_FILENAME=node-v${NVER}-linux-x${ARCH} - local NODEJS_TARBALL=http://nodejs.org/dist/v${NVER}/${NODEJS_FILENAME}.tar.gz - local NODEJS_ARCHIVE=$UCOIN_DIR/node.tar.gz - local NODEJS_EXTRACTED=$UCOIN_DIR/$NODEJS_FILENAME - if [ ! -d "$UCOIN_DIR/node" ]; then - echo "=> Downloading '$NODEJS_TARBALL' to '$NODEJS_ARCHIVE'" - ucoin_download "$NODEJS_TARBALL" -o "$NODEJS_ARCHIVE" || { - echo >&2 "Failed to download '$NODEJS_TARBALL'" - return 4 - } - tar xzf $NODEJS_ARCHIVE || { - echo >&2 "Failed to extract '$NODEJS_ARCHIVE'" - return 5 - } - mv $NODEJS_FILENAME "node" || { - echo >&2 "Failed to extract '$NODEJS_ARCHIVE'" - return 6 - } - fi - - # Install uCoin dependencies (NPM modules) - export PATH=$PATH:$UCOIN_DIR/node/bin/ - npm install - export PATH=$PREVIOUS_PATH - return -} - -install_ucoin_as_script() { - local ARCH="32" - local X64=`uname -a | grep "x86_64"` - if [ ! -z "$X64" ]; then - ARCH="64" - fi - local UCOIN_SOURCE_LOCAL - UCOIN_SOURCE_LOCAL=https://github.com/ucoin-io/ucoin/releases/download/$(ucoin_latest_version)/ucoin-x${ARCH}.tar.gz - local UCOIN_ARCHIVE - UCOIN_ARCHIVE=$UCOIN_DIR/ucoin.tar.gz - - # Downloading to $UCOIN_DIR - mkdir -p "$UCOIN_DIR" - if [ -d "$UCOIN_DIR/ucoin" ]; then - echo "=> ucoin is already installed in $UCOIN_DIR, trying to update" - else - echo "=> Downloading ucoin binary to '$UCOIN_DIR'" - fi - ucoin_download "$UCOIN_SOURCE_LOCAL" -o "$UCOIN_ARCHIVE" || { - echo >&2 "Failed to download '$UCOIN_SOURCE_LOCAL'" - return 1 - } - echo "=> Extracting ucoin sources..." - tar xzf $UCOIN_ARCHIVE -C $UCOIN_DIR || { - echo >&2 "Failed to extract $UCOIN_ARCHIVE to $UCOIN_DIR" - return 2 - } - echo "=> Cleaning..." - rm $UCOIN_ARCHIVE || { - echo >&2 "Failed to remove $UCOIN_ARCHIVE" - return 2 - } -} - -# -# Detect profile file if not specified as environment variable -# (eg: PROFILE=~/.myprofile) -# The echo'ed path is guaranteed to be an existing file -# Otherwise, an empty string is returned -# -ucoin_detect_profile() { - - local DETECTED_PROFILE - DETECTED_PROFILE='' - local SHELLTYPE - SHELLTYPE="$(basename /$SHELL)" - - if [ $SHELLTYPE = "bash" ]; then - if [ -f "$HOME/.bashrc" ]; then - DETECTED_PROFILE="$HOME/.bashrc" - elif [ -f "$HOME/.bash_profile" ]; then - DETECTED_PROFILE="$HOME/.bash_profile" - fi - elif [ $SHELLTYPE = "zsh" ]; then - DETECTED_PROFILE="$HOME/.zshrc" - fi - - if [ -z $DETECTED_PROFILE ]; then - if [ -f "$PROFILE" ]; then - DETECTED_PROFILE="$PROFILE" - elif [ -f "$HOME/.profile" ]; then - DETECTED_PROFILE="$HOME/.profile" - elif [ -f "$HOME/.bashrc" ]; then - DETECTED_PROFILE="$HOME/.bashrc" - elif [ -f "$HOME/.bash_profile" ]; then - DETECTED_PROFILE="$HOME/.bash_profile" - elif [ -f "$HOME/.zshrc" ]; then - DETECTED_PROFILE="$HOME/.zshrc" - fi - fi - - if [ ! -z $DETECTED_PROFILE ]; then - echo "$DETECTED_PROFILE" - fi -} - -ucoin_is_available_for_distribution() { - local distribution - local distribution_deb - local distribution_fedora - - distribution=`cat /etc/*-release file 2>/dev/null | grep "Ubuntu"` - distribution_deb=`cat /etc/*-release file 2>/dev/null | grep "Debian"` - distribution_fedora=`cat /etc/*-release file 2>/dev/null | grep "Fedora"` - - if [[ "$distribution" = *Ubuntu\ 14* ]] || [[ "$distribution" = *Ubuntu\ 15* ]] || [[ "$distribution_deb" = *Debian*8*jessie* ]] || [[ "$distribution_fedora" = *Fedora\ 23* ]]; then - local X64=`uname -a | grep "x86_64"` - if [ ! -z "$X64" ]; then - return 0 - fi - echo "=> 32-bit OS, requires to build" - return 1 - else - echo "=> No binary for this system, requires to build" - return 1 - fi -} - -ucoin_do_install() { - - # Autodetect install method - - if [ "_$1" == "_git" ]; then - install_ucoin_from_git - elif ucoin_is_available_for_distribution; then - install_ucoin_as_script - elif ucoin_has "git"; then - install_ucoin_from_git - elif ucoin_has "curl"; then - install_ucoin_from_git - elif ucoin_has "wget"; then - install_ucoin_from_git - else - echo >&2 "You need git, curl, or wget to install ucoin" - exit 1 - fi - - echo - - local UCOIN_PROFILE - UCOIN_PROFILE=$(ucoin_detect_profile) - - SOURCE_STR="\nexport UCOIN_DIR=\"$UCOIN_DIR\"\n[ -s \"\$UCOIN_DIR/ucoin.sh\" ] && . \"\$UCOIN_DIR/ucoin.sh\" # This loads ucoin.sh" - - if [ -z "$UCOIN_PROFILE" ] ; then - echo "=> Profile not found. Tried $UCOIN_PROFILE (as defined in \$PROFILE), ~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile." - echo "=> Create one of them and run this script again" - echo "=> Create it (touch $UCOIN_PROFILE) and run this script again" - echo " OR" - echo "=> Append the following lines to the correct file yourself:" - printf "$SOURCE_STR" - echo - else - if ! command grep -qc '/ucoin.sh' "$UCOIN_PROFILE"; then - echo "=> Appending source string to $UCOIN_PROFILE" - printf "$SOURCE_STR\n" >> "$UCOIN_PROFILE" - else - echo "=> Source string already in $UCOIN_PROFILE" - fi - fi - - echo "=> ------------------------------------------------------" - echo "=> ! !" - echo "=> ! CLOSE and REOPEN YOUR TERMINAL to start using ucoin !" - echo "=> ! !" - echo "=> ------------------------------------------------------" - ucoin_reset -} - -# -# Unsets the various functions defined -# during the execution of the install script -# -ucoin_reset() { - unset -f ucoin_reset ucoin_has ucoin_latest_version \ - ucoin_download install_ucoin_as_script install_ucoin_from_git \ - ucoin_detect_profile ucoin_do_install \ - ucoin_is_available_for_distribution -} - -[ "_$UCOIN_ENV" = "_testing" ] || ucoin_do_install $1 - -} # this ensures the entire script is downloaded #