#+TITLE: Cadmus ToDo List

* Main Executable
** TODO [#B] Add support for different configs
Basically I would like to be able to change the note directory to manage seperate knowledge bases, for example:

+ Personal Wiki
+ Static Site
+ Wiki for Project
+ School Project public knowledge base
  etc.

This should be fed in as a ~-c~ option.

[[file:bin/cadmus::NOTES_DIR="~/Notes/MD" ## TODO Global Variables are bad][Refer to this line here]]
** Main Help
*** TODO [#C] Move Emojis
I should move the emojis to the end so that they don't interfere when using tty

*** TODO [#B] Should interactive elements of scripts be preserved and use the clipboard
As opposed to having no feedback and just operating on STDIN and STDOUT.
Could a similar effect be acheived using /tmp or /dev/shm?
*** TODO [#A] Should subscripts be exptected to be relative or absolute?
*** TODO [#A] Should the Notes directory be a global variable or an argument
**** TODO Should we set the Notes directory in a TOML?
see [[https://github.com/freshautomations/stoml][the stoml package]].
*** TODO Why do I keep getting Argument has no definition?

** Aliases
*** [#B] Readme
Add Recommended Aliases to the [[file:README.md::Recommended Aliases][readme]] as well as fish functions.
* SubFunctions
** TODO Restructure
should I restructure the subfunctions to accept only 1 argument either help or directory and fail in the absence of any given argument?

*** Pros
+ Much Simpler to implement and maintain

*** Cons
+ Less clean to pass in functions
+ Less Extensible

* HOLD [#A] NoteFind.sh
** KeyBindings
*** TODO [#B] Should Implement keybindings for Exports
[[file:NoteFind.sh::ramtmp="$(mktemp -p /dev/shm/)"][In the SkimAndGrep]] function there should be export options for HTML mathml [fn:1] as well as odt[fn:2]
*** TODO [#C] Should call emacsclient not emacs
I should change the [[file:NoteFind.sh::--bind 'alt-v:execute-silent(code {}),alt-e:execute-silent(emacs {}),ctrl-o:execute-silent(xdg-open {})' \\][emacs call]] to open ~emacsclient~ instead of ~emacs~

** DONE ~cadmus find~ Should print help when no arguments
Completed this by calling help and exiting if the arguments are empty in cadmus.

[[file:bin/cadmus::function NoteFind() {][See here]]
* TODO [#A] Search
* TODO [#A] tags
* TODO [#A] tools
* TODO [#A] export
* TODO [#A] convert
* TODO [#A] misc
* TODO [#A] publish
* TODO [#A] preview

* Packaging
** TODO Make a Package
Use [[https://fpm.readthedocs.io/en/latest/source/dir.html][FPM]] to make multiple packages bundling everything together.

Consider also just using ~install --help~ and doing something [[https://www.reddit.com/r/archlinux/comments/4gsg9i/how_would_i_package_a_simple_bash_script/][like this]] or [[https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=split2flac-git][like this]].
* Exit Codes

| Number | Description           |
|      3 | File not found        |
|      4 | directory not found   |
|      5 | unrecognized option   |
|      6 | Missing Dependency    |

#+begin_quote
Exit Code Number ∉ {1, 2, 126, 127, 128, 130, 255}
#+end_quote
* Footnotes

[fn:2] This could so something like ~pandoc -o /tmp/myfile.odt; xdg-open /tmp/myfile.odt~

[fn:1] Think for using *Thunderbird*
