nmine 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/sh
  2. [ ! -d "$HOME/.cache/nmine" ] && mkdir -p "$HOME/.cache/nmine"
  3. [ ! -f "$HOME/.cache/nmine/current-miner" ] && touch "$HOME/.cache/nmine/current-miner"
  4. cat "$HOME/.cache/nmine/current-miner" > /dev/null || { echo "Error: no access to cache file"; exit 1; }
  5. [ ! -d "$HOME/.config/nmine" ] && mkdir -p "$HOME/.config/nmine"
  6. [ ! -f "$HOME/.config/nmine/config" ] && touch "$HOME/.config/nmine/config"
  7. cat "$HOME/.config/nmine/config" > /dev/null || { echo "Error: no access to config file"; exit 1; }
  8. [ -z "$(cat "$HOME/.config/nmine/config")" ] && echo "Error: config file is empty" && exit 1
  9. helpMessage="Usage: nmine [option]
  10. Options:
  11. \tstart\t\tstart mining
  12. \tstop\t\tstop mining
  13. \tlist\t\tlist configured miners
  14. \tchange [miner]\tchange mining software / coin
  15. \thelp\t\tprint this help message"
  16. getMiners() {
  17. grep "^miner" "$HOME/.config/nmine/config" | sed 's/^miner=//'
  18. }
  19. checkMinerConfig() {
  20. getMiners | grep -q "^$miner\$" || { printf "Error: miner '%s' not found
  21. Exiting ...\n" "$miner"; exit 1; }
  22. }
  23. initCache () {
  24. miner="$(cat "$HOME/.cache/nmine/current-miner")"
  25. [ -z "$miner" ] && printf "Error: no miner selected, please run 'nmine change [miner]'\nExiting ...\n" && exit 1
  26. }
  27. [ -z "$1" ] && printf "Error: No Arguments given\n\n" && echo "$helpMessage" && exit 1
  28. case "$1" in
  29. start)
  30. echo "Start mining ..."
  31. initCache
  32. checkMinerConfig
  33. cmd="$(grep -a1 "$miner" "$HOME/.config/nmine/config" | tail -n 1 | sed 's/^start=//')"
  34. eval "$cmd";;
  35. stop)
  36. echo "Stop mining ..."
  37. initCache
  38. checkMinerConfig
  39. processName="$(grep -a2 "$miner" "$HOME/.config/nmine/config" | tail -n 1 | sed 's/^stop=//')"
  40. echo "$processName"
  41. processID="$(pgrep -f "$processName")"
  42. echo "$processID"
  43. kill "$processID";;
  44. list)
  45. printf "Configured miners:\n"
  46. miner="$(cat "$HOME/.cache/nmine/current-miner")"
  47. [ -z "$miner" ] && getMiners && exit
  48. getMiners | sed "s/$miner/$miner (current)/";;
  49. change)
  50. echo "Changing miner ..."
  51. [ -z "$2" ] && printf "Error: Invalid Sytax\nExiting...\n" && exit
  52. miner="$2"
  53. checkMinerConfig
  54. echo "$miner" > "$HOME/.cache/nmine/current-miner"
  55. echo "Done";;
  56. help)
  57. echo "$helpMessage";;
  58. *)
  59. [ -z "$2" ] && printf "Error: Invalid Argument given:'%s'\n\n" "$1" &&
  60. echo "$helpMessage" && exit 1
  61. printf "Error: Invalid Arguments given:'%s'\n\n" "$@" &&
  62. echo "$helpMessage" && exit 1
  63. esac