#!/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 = os.path.join(sk_path, filename) fp = mkstemp(fp) else: fp = os.path.join(sk_path, filename) if fp != None: os.execvp(editor, [editor,fp]) def main(): home_path = os.getenv("HOME") sk_path = os.path.join(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( "-o", help="open file", action="store") parser.add_argument( "-v", help="visual editor", action="store_true") args = parser.parse_args() filename = "skratch-XXXXXX" editor = get_editor(args.v) if 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()