From 97beedd5efc463467c3191142db579b068699e54 Mon Sep 17 00:00:00 2001 From: Kuoi Date: Tue, 9 May 2023 00:28:25 +0800 Subject: [PATCH] add: readme, script --- README.md | 70 +++++++++++++++++++++++++ biojunest.sh | 145 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 172 insertions(+), 43 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ec22ed5 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# BioArchLinux on junest + +## Introduction + +[junest](https://github.com/fsquillace/junest) can let users manage the software via pacman under any Linux distributions. Non-root users can use it to install pkgs from BioArchLinux. + +## Install + +### Requirements + +- bash + +- coreutils + +- git/unzip + +- curl/wget + +### Install + +``` +curl -O https://raw.githubusercontent.com/BioArchLinux/junest-img/main/biojunest.sh +``` + +or + +``` +wget https://raw.githubusercontent.com/BioArchLinux/junest-img/main/biojunest.sh +``` + +then + +``` +chmod +x biojunest.sh && ./biojunest +``` + +### Advanced + +You can also configure mirror, for example + +``` +./biojunest -m="https://mirrors.njupt.edu.cn/mirrors/bioarchlinux" +``` + +## Usage + +You should `source` your `~/.zshrc` or `~/.bashrc` files firstly, for example + +``` +source ~/.bashrc +``` + +To enter junest, you can choose one of the following commands + +``` +junest -f +junest proot -f +``` + +Then you can enjoy pacman + +You can also use `sudoj` to replace `sudo` for using root privilege in host machine, for example + +``` +sudoj pacman -Syu +``` + +## Further information + +See [here](https://github.com/fsquillace/junest) diff --git a/biojunest.sh b/biojunest.sh index daaa428..dd6d8ed 100755 --- a/biojunest.sh +++ b/biojunest.sh @@ -2,54 +2,113 @@ # This script downloads and installs junest with optional mirror and help options # Define the default mirror url -MIRROR="https://repo.bioarchlinux.org" +procarg () { + MIRROR="https://repo.bioarchlinux.org" + + for arg in "$@"; do + case $arg in + -h) + echo "Usage: biojunest [-arguments]" + echo "Options:" + echo " -h, show this help message and exit" + echo " -m, set the mirror value" + echo " example: -m=\"https://repo.bioarchlinux.org\"" + break + return + ;; + -m=*) + MIRROR="${arg#*=}" + ;; + *) + echo "Invalid option: -$OPTARG" >&2 + break + return + ;; + esac + done + echo "$MIRROR" +} -# Parse the options using getopts -while getopts "m:h" opt; do - case $opt in - m) # Set the mirror url to the argument of -m option - MIRROR="$OPTARG" - ;; - h) # Print the help message and exit - echo "Usage: ./install [-m MIRROR] [-h]" - echo " -m MIRROR Specify a mirror url to download junest from" - echo " -h Show this help message and exit" - exit 0 - ;; - \?) # Print an error message for invalid options and exit - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - esac -done -# Check if curl and zip are available -if command -v curl &> /dev/null && command -v zip &> /dev/null; then - # Use curl to download the repository as a zip file and extract it - curl -L https://github.com/fsquillace/junest/archive/refs/heads/master.zip -o ~/junest.zip - unzip junest.zip -d ~/.local/share/junest +get_command (){ + local cmdtype="" + if command -v unzip &> /dev/null; then + if command -v curl &> /dev/null; then + cmdtype="zipcurl" + elif command -v wget &> /dev/null; then + cmdtype="zipwget" + else + echo "Error: curl or wget can\'t be found" + return 1 + fi + elif command -v git &> /dev/null; then + if command -v curl &> /dev/null; then + cmdtype="gitcurl" + elif command -v wget &> /dev/null; then + cmdtype="gitwget" + else + echo "Error: curl or wget can\'t be found" + return 1 + fi + else + echo "Error: unzip or git can\'t be found" + return 1 + fi + echo "$cmdtype" +} + + +proc_junest (){ +if [ "$1" = "zipcurl" ] || [ "$1" = "zipwget" ] ; then + if "$1" = "zipcurl"; then + curl -L https://github.com/fsquillace/junest/archive/refs/heads/master.zip -o ~/junest.zip + elif "$1" = "zipwget"; then + wget https://github.com/fsquillace/junest/archive/refs/heads/master.zip -O ~/junest.zip + else + return 1 + fi + unzip ~/junest.zip -d ~/.local/share/junest rm ~/junest.zip - curl -L "$MIRROR"/junest/bioarchlinux-junest.tar.gz -o ~/bioarchlinux-junest.tar.gz - export PATH=~/.local/share/junest/bin:$PATH - junest s -i ~/bioarchlinux-junest.tar.gz - echo "Please add `export PATH=~/.local/share/junest/bin:$PATH` to your .zshrc or .bashrc" - exit 0 +elif [ "$1" = "gitcurl" ] || [ "$1" = "gitwget" ]; then + git clone https://github.com/fsquillace/junest.git ~/.local/share/junest +else + echo "Error: Download junest!" + return 1 fi +} -# Check if wget and zip are available -if command -v wget &> /dev/null && command -v zip &> /dev/null; then - # Use wget to download the repository as a zip file and extract it - wget https://github.com/fsquillace/junest/archive/refs/heads/master.zip -O junest.zip - unzip junest.zip -d ~/.local/share/junest - rm junest.zip - wget "$MIRROR"/junest/bioarchlinux-junest.tar.gz -O ~/bioarchlinux-junest.tar.gz - export PATH=~/.local/share/junest/bin:$PATH - junest s -i ~/bioarchlinux-junest.tar.gz - echo "Please add `export PATH=~/.local/share/junest/bin:$PATH` to your .zshrc or .bashrc" - exit 0 +proc_img(){ +if [ "$1" = "gitcurl" ] || [ "$1" = "zipcurl" ] +then + curl -L "$2"/junest/bioarchlinux-junest.tar.gz -o ~/bioarchlinux-junest.tar.gz +elif [ "$1" = "gitwget" ] || [ "$1" = "zipwget" ] +then + wget "$2"/junest/bioarchlinux-junest.tar.gz -O ~/bioarchlinux-junest.tar.gz +else + echo "Error:Download bioarchlinux img" + return 1 fi + export PATH=~/.local/share/junest/bin:$PATH + junest s -i ~/bioarchlinux-junest.tar.gz + rm ~/bioarchlinux-junest.tar.gz +} -# If none of the commands are available, print an error message and exit with non-zero code -echo "Error: curl/wget or zip are not available on this system." -exit 1 +set_env () { + + lines="PATH=\"\$PATH:~/.local/share/junest/bin:~/.junest/usr/bin_wrappers\" +JUNEST_ARGS=\"ns\"" +if [ -z "$JUNEST_ARGS" ]; then + if [ -f "$1" ]; then + echo "$lines" >> "$1" + source "$1" + fi +fi +} + +MIRROR=$(procarg "$@") +cmdtype=$(get_command) +proc_junest "$cmdtype" +proc_img "$cmdtype" "$MIRROR" +set_env ~/.bashrc +set_env ~/.zshrc