#!/bin/sh [ ! -d "$HOME/.cache/nmine" ] && mkdir -p "$HOME/.cache/nmine" [ ! -f "$HOME/.cache/nmine/current-miner" ] && touch "$HOME/.cache/nmine/current-miner" cat "$HOME/.cache/nmine/current-miner" > /dev/null || { echo "Error: no access to cache file"; exit 1; } [ ! -d "$HOME/.config/nmine" ] && mkdir -p "$HOME/.config/nmine" [ ! -f "$HOME/.config/nmine/config" ] && touch "$HOME/.config/nmine/config" cat "$HOME/.config/nmine/config" > /dev/null || { echo "Error: no access to config file"; exit 1; } [ -z "$(cat "$HOME/.config/nmine/config")" ] && echo "Error: config file is empty" && exit 1 helpMessage="Usage: nmine [option] Options: \tstart\t\tstart mining \tstop\t\tstop mining \tlist\t\tlist configured miners \tchange [miner]\tchange mining software / coin \thelp\t\tprint this help message" getMiners() { grep "^miner" "$HOME/.config/nmine/config" | sed 's/^miner=//' } checkMinerConfig() { getMiners | grep -q "^$miner\$" || { printf "Error: miner '%s' not found Exiting ...\n" "$miner"; exit 1; } } initCache () { miner="$(cat "$HOME/.cache/nmine/current-miner")" [ -z "$miner" ] && printf "Error: no miner selected, please run 'nmine change [miner]'\nExiting ...\n" && exit 1 } [ -z "$1" ] && printf "Error: No Arguments given\n\n" && echo "$helpMessage" && exit 1 case "$1" in start) echo "Start mining ..." initCache checkMinerConfig cmd="$(grep -a1 "$miner" "$HOME/.config/nmine/config" | tail -n 1 | sed 's/^start=//')" eval "$cmd";; stop) echo "Stop mining ..." initCache checkMinerConfig processName="$(grep -a2 "$miner" "$HOME/.config/nmine/config" | tail -n 1 | sed 's/^stop=//')" echo "$processName" processID="$(pgrep -f "$processName")" echo "$processID" kill "$processID";; list) printf "Configured miners:\n" miner="$(cat "$HOME/.cache/nmine/current-miner")" [ -z "$miner" ] && getMiners && exit getMiners | sed "s/$miner/$miner (current)/";; change) echo "Changing miner ..." [ -z "$2" ] && printf "Error: Invalid Sytax\nExiting...\n" && exit miner="$2" checkMinerConfig echo "$miner" > "$HOME/.cache/nmine/current-miner" echo "Done";; help) echo "$helpMessage";; *) [ -z "$2" ] && printf "Error: Invalid Argument given:'%s'\n\n" "$1" && echo "$helpMessage" && exit 1 printf "Error: Invalid Arguments given:'%s'\n\n" "$@" && echo "$helpMessage" && exit 1 esac