Re: Re: rad

From NAT, 6 Years ago, written in Bash, viewed 830 times. This paste is a reply to Re: rad from NAT - view diff
URL https://code.nat.moe/view/26991f43 Embed
Download Paste or View Raw
  1. #!/bin/bash
  2. FILE=./db.pl
  3. RDB=./rdb.pl
  4. function h {
  5.         echo "\
  6. ========================= Command Help =========================
  7. Usage: a <rel> <tar1> <tar2> [non-dw]
  8.       rel: Relationships(f/l/pl/k/h/ph)
  9.       tar1: Target 1
  10.       tar2: Target 2
  11.       non-dw: Set any value to this if the relationship is not
  12.               double way
  13. Usage: c <tar1> <tar2> [tar3] [tar4] ... [tarN]
  14.       Enter any names (at least 2) to create a compound relati
  15.       -onship. ONLY give names as parameters, script will prom
  16.       -t you to input relationship.
  17. Usage: f <file>
  18.       Change file to write (Default ./db.pl)"
  19.  
  20. }
  21. function f {
  22.         if [[ -z $1 ]]
  23.         then
  24.                 echo "Error: missing parameter"
  25.                 return 1
  26.         else
  27.                 echo "Writng to $1"
  28.                 FILE=$1
  29.         fi
  30. }
  31. function get_rel {
  32.         case $1 in
  33.                 f|friend)
  34.                         R="friend"
  35.                 ;;
  36.                 l|love)
  37.                         R="love"
  38.                 ;;
  39.                 pl|possiblelove)
  40.                         R="possiblelove"
  41.                 ;;
  42.                 k|know)
  43.                         R="definedknow"
  44.                 ;;
  45.                 h|hate)
  46.                         R="hate"
  47.                 ;;
  48.                 ph|possiblehate)
  49.                         R="possiblehate"
  50.                 ;;
  51.                 ld|loved)
  52.                         R="loved"
  53.                 ;;
  54.                 *)
  55.                         return 1;
  56.                 ;;
  57.         esac
  58.         echo $R
  59. }
  60. function a {
  61.         if [[ -z $1 || -z $2 || -z $3 ]]
  62.         then
  63.                 echo "Error: missing operator"
  64.                 return 1;
  65.         fi
  66.         R=$(get_rel $1)
  67.         echo "$R($2,$3)." >> $FILE.tmp
  68.         if [[ -z $4 ]]
  69.         then
  70.                 echo "$R($3,$2)." >> $FILE.tmp
  71.         fi
  72.         cat $FILE.tmp
  73.         cfm_write
  74. }
  75. function c {
  76.         if [[ -z $1 || -z $2 || -z $3 ]]
  77.         then
  78.                 echo "Error: missing operator"
  79.                 return 1;
  80.         fi
  81.         echo -n "Relationship: "; read rel;
  82.         R=$(get_rel $rel)
  83.         for tar1 in $*
  84.         do
  85.                 for tar2 in $*
  86.                 do
  87.                         if [[ $tar1 != $tar2 ]]
  88.                         then
  89.                                 echo "$R($tar1,$tar2)." >> $FILE.tmp
  90.                         fi
  91.                 done
  92.         done
  93.         cfm_write
  94. }
  95. function cfm_write {
  96.         cat $FILE.tmp
  97.         echo -n "Write to $FILE? [Y/n] "; read yn;
  98.         if [[ -z $yn ]]
  99.         then
  100.                 yn="Y"
  101.         fi
  102.         case $yn in
  103.                 y|yes|Y|Yes)
  104.                         echo -n "Writing file... "
  105.                         cat $FILE.tmp >> $FILE
  106.                         echo "OK"
  107.                 ;;
  108.                 *)
  109.                         echo "Give up writing."
  110.                 ;;
  111.         esac
  112.         rm $FILE.tmp
  113. }
  114. function s {
  115.         cat $FILE
  116. }
  117. function rs {
  118.         echo -n "Sorting and deleting dulipicated relationships... "
  119.         sort $FILE | uniq > $FILE.tmp
  120.         cat $FILE.tmp > $FILE
  121.         rm $FILE.tmp
  122.         echo "OK"
  123. }
  124. function chkrel {
  125.         [[ -z $1 ]] && echo -n "Checking for relationship... "
  126.         for tars in $(cat $FILE)
  127.         do
  128.                 [[ ! -z $1 ]] && echo -n "Checking for relationship: $tars... "
  129.                 rel=$(echo $tars | awk -F"(" '{print $1}')
  130.                 if [[ $rel != "friend" && $rel != "definedknow" && $rel != "hate" && $rel != "love" && $rel != "possiblelove" && $rel != "possiblehate" && $rel != "loved"  ]]
  131.                 then
  132.                         [[ ! -z $1 ]] && echo -n "While processing $tars, found error: Unknow relationship $rel... " || echo -n "FOUND ERROR... "
  133.                         echo "Unknow relationship: $tars" >> err-chk.log
  134.                         ERR2=true
  135.                 fi
  136.                 [[ ! -z $1 ]] && echo "END"
  137.         done
  138.         [[ -z $1 && -z $ERR2 ]] && echo -n "OK"
  139. }
  140. function chkrdef {
  141.         [[ -z $1 ]] && echo -ne "\nChecking for redefine... "
  142.         for defs in $(cat $RDB | awk -F"(" '{print $1}' | uniq)
  143.         do
  144.                 [[ ! -z $1 ]] && echo -n "Checking redefine of $defs... "
  145.                 for tars in $(cat $FILE | awk -F"(" '{print $1}' | uniq)
  146.                 do
  147.                         if [[ $defs == $tars ]]
  148.                         then
  149.                                 [[ ! -z $1 ]] && echo -n "While processing $tars, found error: Redefined in $FILE... " || echo -n "FOUND ERROR... "
  150.                                 echo "Redefine relationships: $tars" >> err-chk.log
  151.                                 ERR3=true
  152.                         fi
  153.                 done
  154.                 [[ ! -z $1 ]] && echo "END"
  155.         done   
  156.         [[ -z $1 && -z $ERR3 ]] && echo -n "OK"
  157. }
  158. function chksyn {
  159.         [[ -z $1 ]] && echo -ne "\nChecking syntax... "
  160.         for syn in $(cat $FILE)
  161.         do
  162.                 [[ ! -z $1 ]] && echo -n "Checking syntax of $syn... "
  163.                 if [[ ! $syn =~ .*(.*\,.*)\.$ ]]
  164.                 then
  165.                         [[ ! -z $1 ]] && echo -n "While processing $syn, found error: Syntax error... " || echo -n "FOUND ERROR... "
  166.                         echo "Syntax error: $syn" >> err-chk.log
  167.                         ERR4=true
  168.                 fi
  169.                 [[ ! -z $1 ]] && echo "END"
  170.         done
  171.         [[ -z $1 && -z $ERR4 ]] && echo "OK"
  172. }
  173. function chk {
  174.         rs
  175.         touch err-chk.log
  176.         chkrel $1; chkrdef $1; chksyn $1;
  177.         if [[ -z $ERR2 && -z $ERR3 && -z $ERR4 ]]
  178.         then
  179.                 echo "Check complete. No error was found."
  180.         else
  181.                 echo -e "\n=============================================\nThe following error(s) was found: "
  182.                 cat err-chk.log
  183.         fi
  184.         rm err-chk.log
  185. }
  186. function interactive {
  187. echo "rad - Relationship Addition "
  188. echo "\
  189. Available Commands: a - add, c - add complex relationship,
  190. s - show relationship, rs - resort relationship, h - help,
  191. chk - Check possible error"
  192. echo "Default file: ./db.pl"
  193. while true
  194. do
  195.         echo -n "rad> "; read cmd;
  196.         $cmd;
  197. done
  198. }
  199. if [[ -z $* ]]
  200. then
  201.         interactive
  202. else
  203.         $*
  204. fi
  205. exit

Reply to "Re: Re: rad"

Here you can reply to the paste above

captcha