diff --git a/cheatsheet.md b/cheatsheet.md deleted file mode 100644 index d6df26d..0000000 --- a/cheatsheet.md +++ /dev/null @@ -1,25 +0,0 @@ -# Cheatsheet - -Here is a collection of shortcuts you are trying to learn. - -## Emacs - -- `**ctrl-c e**`: Does something fancy. -- **m-x c e l p**: Exports .org file to .pdf. - -## Custom Global Shortcuts - -`num-4`: Opens Emacs at tasks.org. - -`num-5`: Pushes published files to abbether. - -`num-6`: Opens this cheatsheet. - -## Block code - -```python -from rich.console import Console - -console = Console() -``` - diff --git a/main.py b/main.py deleted file mode 100644 index a474233..0000000 --- a/main.py +++ /dev/null @@ -1,41 +0,0 @@ -import argparse -from rich.console import Console -from rich.markdown import Markdown -from rich.table import Column, Table - - -def parse_arguments(): - parser = argparse.ArgumentParser( - "Displays a nicely formatted cheatsheet of") - parser.add_argument("-a", "--append", - help="Append a shortcut to your collection using Markdown.") - args = parser.parse_args() - return args - - -def display_file(): - with open("cheatsheet.md") as cheats: - markdown = Markdown(cheats.read()) - console = Console() - console.print(markdown) - - -def append_to_file(data): - # This is not implemented. - x = 0 - - -def main(): - args = parse_arguments() - a = args.append - # print(args) - if a is None: - display_file() - else: - print("Appending to file...") - append_to_file(args.append) - x = 4 - - -if __name__ == "__main__": - main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..147f90f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +altgraph==0.17 +colorama==0.4.3 +commonmark==0.9.1 +pkg-resources==0.0.0 +pprintpp==0.4.0 +Pygments==2.6.1 +PyInstaller==3.6 +rich==1.0.0 +typing-extensions==3.7.4.2 diff --git a/scl.py b/scl.py new file mode 100755 index 0000000..6b562cf --- /dev/null +++ b/scl.py @@ -0,0 +1,110 @@ +#!/usr/bin/python3 + +from sys import stdin +import argparse +import logging +from pathlib import Path +from rich import print +from rich.console import Console +from rich.markdown import Markdown +from rich.logging import RichHandler +from rich.traceback import install + +# Global Variables (Making things easy for myself) +# ==================================================================== +logging.basicConfig(level="NOTSET", format="%(message)s", + datefmt="[%X] ", handlers=[RichHandler()]) +log = logging.getLogger("rich") +# install() +console = Console() +data_location = Path.joinpath(Path.home(), "shortcut-learner.md") + +# ==================================================================== + + +def parse_arguments(): + parser = argparse.ArgumentParser( + "Displays a nicely formatted cheatsheet in the console.") + parser.add_argument("-a", "--append", + help="Append a shortcut to your collection using Markdown.") + parser.add_argument("-d", "--delete", action="store_true", + help="Deletes file storing your shortcuts list.") + args = parser.parse_args() + return args + + +def create_new_file(): + print("Create new file [b](Y/n)[/b]? ", end="") + create = stdin.readline(1).strip() + if create == "y" or not create: + log.info(f"Creating new data file at: {data_location}") + try: + with open(f"{data_location}", "w+") as new_file: + new_file.write("# Shortcuts \n\n") + new_file.write( + "The shortcuts I intend to learn are as follows:\n\n") + except IOError: + log.critical("Data file could not be created.") + console.print_exception() + except Exception as e: + log.critical("Unrecoverable system error.") + console.print_exception() + elif create == "n": + log.info("No data file created. Exiting program.") + else: + log.error("Invalid argument. Please enter 'y' or 'n'. Exiting program.") + + +def load_file(): + try: + with open(data_location) as data_file: + markdown = Markdown(data_file.read()) + console.print(markdown) + except IOError: + log.warning("Data file cannot be found.") + create_new_file() + except Exception as e: + log.critical("Unrecoverable system error.") + console.print_exception() + + +def append_to_file(data): + log.info(f"\"{data}\" added to file.") + log.info("Opening data file...") + try: + with open(data_location, "a") as data_file: + data_file.write(f"{data}\n\n") + except IOError: + log.warning("Data file cannot be found.") + create_new_file() + except Exception as e: + log.critical("Unrecoverable system error.") + console.print_exception() + + +def delete_file(): + try: + log.warning(f"Deleting file {data_location}...") + Path.unlink(data_location) + log.info("File deleted.") + except IOError: + log.info("No file was found. Nothing deleted.") + except Exception as e: + log.critical("Unrecoverable system error.") + console.print_exception() + + +def main(): + args = parse_arguments() + if args.delete is False: + if args.append is None: + load_file() + else: + append_to_file(args.append) + load_file() + else: + delete_file() + + +if __name__ == "__main__": + main()