library 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #!/bin/zsh -f
  2. LIBRARYFILE=~/.library/library.rec
  3. LIBRARYDIRECTORY=~/.library
  4. GIT=true
  5. if [[ $# -eq 0 ]] ; then
  6. echo "library [ help | query query-expressions | add | emacs | git [ other-args ] | bulk-add number | report [ name | list | new name ] ]"
  7. exit
  8. fi
  9. function run-query {
  10. recsel -t Book $@ ${LIBRARYFILE}
  11. }
  12. function add-single {
  13. echo -n "Title: "
  14. read TITLE
  15. echo -n "Author: "
  16. read AUTHOR
  17. echo -n "LCCN: "
  18. read LCCN
  19. echo -n "Copyright: "
  20. read COPYRIGHT
  21. echo -n "Publisher: "
  22. read PUBLISHER
  23. echo -n "ISBN: "
  24. read ISBN
  25. echo -n "Location: "
  26. read LOCATION
  27. recins -t Book \
  28. -f Title -v "${TITLE}" \
  29. -f Author -v "${AUTHOR}" \
  30. -f LCCN -v "${LCCN}" \
  31. -f Copyright -v "${COPYRIGHT}" \
  32. -f Publisher -v "${PUBLISHER}" \
  33. -f ISBN -v "${ISBN}" \
  34. -f Location -v "${LOCATION}" \
  35. ${LIBRARYFILE}
  36. if [[ $GIT == "true" ]] ; then
  37. OLD=`pwd`
  38. cd ${LIBRARYDIRECTORY}
  39. git add `basename ${LIBRARYFILE}`
  40. git commit -m "Added record for \"${TITLE}\""
  41. cd ${OLD}
  42. fi
  43. }
  44. function bulk-add {
  45. GITOLD=${GIT}
  46. GIT=FALSE
  47. for i in {1..$1} ; do
  48. echo "Adding book number ${i}"
  49. add-single
  50. done
  51. GIT=${GITOLD}
  52. if [[ $GIT == "true" ]] ; then
  53. OLD=`pwd`
  54. cd ${LIBRARYDIRECTORY}
  55. git add `basename ${LIBRARYFILE}`
  56. git commit -m "Added ${1} records"
  57. cd ${OLD}
  58. fi
  59. }
  60. function do-report {
  61. NAME=$1
  62. shift
  63. case ${NAME} in
  64. list)
  65. for report in ${LIBRARYDIRECTORY}/*.report ;
  66. do
  67. echo " - $(basename -- ${report} .report)"
  68. done
  69. ;;
  70. new)
  71. REPORT=$1
  72. shift
  73. echo "# -*- mode: shell-script -*-" > ${LIBRARYDIRECTORY}/${REPORT}.report
  74. emacsclient --alternate-editor="" -n ${LIBRARYDIRECTORY}/${REPORT}.report
  75. ;;
  76. *)
  77. if [[ -e ${LIBRARYDIRECTORY}/${NAME}.report ]] ; then
  78. sh ${LIBRARYDIRECTORY}/${NAME}.report $@
  79. fi
  80. esac
  81. }
  82. function do-git {
  83. OLD=`pwd`
  84. cd ${LIBRARYDIRECTORY}
  85. git $@
  86. cd ${OLD}
  87. }
  88. function display-help {
  89. cat <<EOF
  90. library [ help | query query-expressions | add | emacs | git [ other-args ] | bulk-add number | report [ name | list | new name ] ]
  91. help: Display this help message.
  92. query: Query Library Database.
  93. add: Add a singular book record.
  94. emacs: View records in emacs.
  95. git: Run a git command.
  96. report: Run a report.
  97. bulk-add: Add a specified number of records.
  98. EOF
  99. }
  100. COMMAND=$1
  101. shift
  102. case ${COMMAND} in
  103. help)
  104. display-help
  105. exit
  106. ;;
  107. query)
  108. run-query $@
  109. exit
  110. ;;
  111. add)
  112. add-single
  113. exit
  114. ;;
  115. git)
  116. do-git $@
  117. exit
  118. ;;
  119. bulk-add)
  120. bulk-add $@
  121. exit
  122. ;;
  123. report)
  124. do-report $@
  125. exit
  126. ;;
  127. emacs)
  128. emacsclient --alternate-editor="" -n ${LIBRARYFILE}
  129. exit
  130. ;;
  131. *)
  132. display-help
  133. exit
  134. esac