From 42954d8a2d03dab5e04be5b26eb0259b2f8764f2 Mon Sep 17 00:00:00 2001 From: phixxy Date: Wed, 4 Mar 2026 23:09:49 -0800 Subject: [PATCH] init --- skratch.py | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100755 skratch.py diff --git a/skratch.py b/skratch.py new file mode 100755 index 0000000..2c436b7 --- /dev/null +++ b/skratch.py @@ -0,0 +1,111 @@ +#!/usr/bin/python3 + +import sys +import os +import random +import string +import argparse + +def make_dir(d): + if not os.path.exists(d): + os.mkdir(d) + +def delete_all(d): + if not os.path.exists(d): + print("Nothing to delete") + else: + for file in os.listdir(d): + os.remove(d+file) + print(f"removing: {d+file}") + print("Done") + +def list_all(d): + if not os.path.exists(d): + print("Nothing to list") + else: + for file in os.listdir(d): + print(file) + +def get_editor(use_v): + v = os.getenv("VISUAL") + e = os.getenv("EDITOR") + if (not v and not e): + e = "nano" + if use_v and v: + return v + return e + +def mkstemp(fp): + if fp[-6:] == "XXXXXX": + for x in range(0,1000): + r = ''.join(random.choices(string.ascii_letters, k=6)) + fp = fp[:-6] + r + if not os.path.exists(fp): + return fp + print("Error: Could not create new file, try running skratch -c and try again") + return None + else: + print(f'Error: mkstemp got filepath: {fp}') + return None + +def run(editor, sk_path, filename=None): + if not filename: + filename = "skratch-XXXXXX" + fp = sk_path + filename + fp = mkstemp(fp) + else: + fp = sk_path + filename + if fp != None: + os.execvp(editor, [editor,fp]) + +def main(): + home_path = os.getenv("HOME") + sk_path = home_path + "/.skratch/" + make_dir(sk_path) + + parser = argparse.ArgumentParser( + prog='skratch', + description='Creates a temp file and opens it in an editor', + epilog='Text at the bottom of help') + group = parser.add_mutually_exclusive_group() + group.add_argument( + "-c", + help="delete all files", + action="store_true") + + group.add_argument( + "-l", + help="list files", + action="store_true") + + group.add_argument( + "-n", + help="new file", + action="store_const") + + group.add_argument( + "-o", + help="open file", + action="store") + + parser.add_argument( + "-v", + help="visual editor", + action="store_true") + + args = parser.parse_args() + + filename = "skratch-XXXXXX" + home_path = os.getenv("HOME") + sk_path = home_path + "/.skratch/" + + editor = get_editor(args.v) + if args.n: run(editor,sk_path,args.n) + elif args.o: run(editor,sk_path,args.o) + elif args.c: delete_all(sk_path) + elif args.l: list_all(sk_path) + else: + run(editor,sk_path) + +main() +