neomutt: Rename neomutt-adjacent scripts
Renamed `mutt2task` to `neomutt-2task`, and renamed `sync-mail` to `neomutt-syncmail`. Changed key maps accordingly. Also systemd service even though I don't think I'll use it again.
This commit is contained in:
parent
1a6b929e24
commit
93394129c0
5 changed files with 5 additions and 5 deletions
|
|
@ -1,100 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
"""
|
||||
Creates a new task with corresponding description and tags.
|
||||
|
||||
Description and tags can be supplied via commandline through `-d` and `-t` options,
|
||||
or interactively by using the options without supplying a string for them. E.g.:
|
||||
|
||||
`mutt2task` => task: Reply to <subject> from <sender>
|
||||
`mutt2task -d "hello" -t one two` => task: hello +one +two
|
||||
`mutt2task -d -t` => asks you interactively for description and tags
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import email
|
||||
import sys
|
||||
import re
|
||||
|
||||
from tasklib import TaskWarrior, Task
|
||||
|
||||
|
||||
def get_args():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Creates a task with given message and annotates the task with message id"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-d",
|
||||
"--description",
|
||||
nargs="?",
|
||||
const=True,
|
||||
default=None,
|
||||
help="Supply a description for the task. Use the option as a flag to supply description interactively.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-t",
|
||||
"--tags",
|
||||
nargs="*",
|
||||
help="Supply any number of tags for the task. Use the option as a flag to supply tags interactively.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-c",
|
||||
"--clean",
|
||||
action="store_true",
|
||||
help="Remove subject annoyances like RE FWD on a best-effort basis.",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
args = get_args()
|
||||
|
||||
def clean_subject(subject):
|
||||
to_remove = ["fwd", "re", "fw", "aw", "wg", "sv", "vs", "ref", "tr"]
|
||||
for abbrev in to_remove:
|
||||
patt = re.compile(r"^{}(?: |:)\s*".format(abbrev), re.IGNORECASE)
|
||||
subject = patt.sub("", subject)
|
||||
return subject
|
||||
|
||||
|
||||
def get_task_description(message):
|
||||
subject = clean_subject(message["subject"]) if args.clean else message["subject"]
|
||||
description = 'Reply to "{}" from {}'.format(
|
||||
subject, message["from"].split(" <")[0]
|
||||
)
|
||||
# automatically set description if one provided
|
||||
if args.description and isinstance(args.description, str):
|
||||
description = args.description
|
||||
# otherwise let user enter one if option has been passed
|
||||
elif args.description:
|
||||
inp = input("Enter task description or press enter for default: ")
|
||||
description = inp if inp else description
|
||||
return description
|
||||
|
||||
|
||||
def get_task_tags():
|
||||
tags = ["mail"]
|
||||
if args.tags and len(args.tags) > 0:
|
||||
tags = sum([tag.split(" ") for tag in args.tags], [])
|
||||
elif args.tags is not None and len(args.tags) == 0:
|
||||
inp = input("Enter task tags or press enter for default: ")
|
||||
tags = inp.split(" ") if inp else tags
|
||||
return tags
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
message = email.message_from_file(sys.stdin)
|
||||
if not message:
|
||||
print("Something went wrong, cannot parse mail.")
|
||||
sys.exit(1)
|
||||
tw = TaskWarrior("~/.local/share/task", create=False)
|
||||
sys.stdin = open("/dev/tty") # make user able to add input again
|
||||
task = Task(tw, description=get_task_description(message), tags=get_task_tags())
|
||||
task.save()
|
||||
task.add_annotation(message['message-id'])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue