add neworgday.py

master
r3dwall 2023-11-04 20:40:03 -03:00
parent 48f4d2ab3b
commit a318eef3ad
Signed by: r3dwall
GPG Key ID: E1095FF1C2F6A76A
2 changed files with 97 additions and 2 deletions

View File

@ -1,3 +1,7 @@
# newday
# Simple tool to generate a `today.org` file based on the unfinished TODO's of another orgfile
Tool to create a new day in orgmode
I use emacs' orgmode to manage my tasks. Everyday I needed to create another orgfile for the next day. With this tool I can automatically create the file and remove the already done tasks.
Use `./neworgday.py -h` for help.
License: GPL3.0

91
neworgday.py Executable file
View File

@ -0,0 +1,91 @@
#!/usr/bin/python
# GPL3.0 licensed
# Developed by r3dwall
# http://git.qwik.i2p/r3dwall/newday
import sys
import os
# Input file
t = 0
# Get command line options
opts = {"help":0, "override":0, "output":0}
for i, o in enumerate(sys.argv):
if i == 1:
t = o
elif o == "-o":
opts["output"] = sys.argv[i+1]
elif o == "-y":
opts["override"] = 1
elif o == "-h" or o == "--help":
opts["help"] = 1
else:
pass
# Help message
if opts["help"] or not t:
print("Usage: ./newday_emacs.py <input_file> <options>")
print("Simple util developed in python to take a daily emacs org file and transform it into another one with the name 'today.org' with only things that were left undone for the day")
print("-y | overwrite output file")
print("-o | output file")
print("-h | this help")
sys.exit()
# Locate file
try:
f1 = open(t, "r")
except:
print("File {} does not exist. For help type ./newday_emacs.py -h".format(t))
sys.exit()
# Read file
read = f1.readlines()
f1.close()
d = []
# Save lines with only undone tasks ([]), todos and metainfo from the beginning of the file
for l in read:
if "TODO" in l:
d.append(l)
elif "[ ]" in l:
d.append(l)
elif "#+" in l:
d.append(l)
else:
pass
# Write everything to today.org
t = opts["output"] if opts["output"] != 0 else "today.org"
if opts["override"]:
pass
elif t in os.listdir():
print("File exists. Use -y to overwrite.")
sys.exit()
# Transform d into string
c = ""
for e in d:
if "TODO" in e or "#!" in e:
c += "\n{}".format(e)
else:
c += e
del d
f2 = open(t, "w+")
f2.write(c)
f2.close()