aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.editorconfig2
-rw-r--r--Makefile8
-rw-r--r--src/later/cli.py14
-rw-r--r--src/later/main.py2
4 files changed, 19 insertions, 7 deletions
diff --git a/.editorconfig b/.editorconfig
index ba8334d..17c6ba2 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -4,7 +4,7 @@ root = true
insert_final_newline = true
trim_trailing_whitespace = true
-[later]
+[*.py]
indent_size = 4
indent_style = space
diff --git a/Makefile b/Makefile
index 2d947c2..89997db 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,14 @@
PREFIX ?= /usr/local
+SRC != find src -type f
+
+all: later.pyz
+
install: later.pyz later.1
install -D -m 755 later.pyz '${DESTDIR}${PREFIX}/bin/later'
install -D -m 644 -t '${DESTDIR}${PREFIX}/share/man/man1' later.1
-later.pyz:
+later.pyz: $(SRC)
python -m zipapp -p "/usr/bin/env python3" -o later.pyz src/
clean:
@@ -13,4 +17,4 @@ clean:
test:
pytest -q
-.PHONY: install clean test
+.PHONY: all install clean test
diff --git a/src/later/cli.py b/src/later/cli.py
index 809632f..6c369be 100644
--- a/src/later/cli.py
+++ b/src/later/cli.py
@@ -1,4 +1,5 @@
import getopt
+import os
import sys
from dataclasses import dataclass, field
from typing import Protocol
@@ -42,19 +43,26 @@ class Arguments:
def add_entries(args, entries):
for entry in args.rest:
+ # A watch_later entry for a file must be based on its absolute path.
+ if os.path.isfile(entry):
+ entry = os.path.abspath(entry)
entries.add(entry)
def delete_entries(args, entries):
for entry in args.rest:
entries.delete(entry)
+ # Also handle cases where we were given a local path.
+ # It's always safe to call this, since .delete() ignores non-existent
+ # entries.
+ entries.delete(os.path.abspath(entry))
def list_entries(args, entries):
entries.print()
-def parse_args(argv, default, default_args):
+def parse_args(argv):
commands = {
"add": Command("add", add_entries),
"del": Command("del", delete_entries),
@@ -66,7 +74,7 @@ def parse_args(argv, default, default_args):
except getopt.GetoptError as e:
usage(e)
- parsed_args = Arguments(command=commands[default])
+ parsed_args = Arguments(command=commands["list"])
for option in options:
match option:
@@ -77,7 +85,7 @@ def parse_args(argv, default, default_args):
if args[0] in commands:
parsed_args.command = commands[args.pop(0)]
else:
- parsed_args.command = commands[default_args]
+ parsed_args.command = commands["add"]
parsed_args.rest = args
diff --git a/src/later/main.py b/src/later/main.py
index 1d07cac..6bf2426 100644
--- a/src/later/main.py
+++ b/src/later/main.py
@@ -17,7 +17,7 @@ title_map_file = os.path.join(later_cache_dir, "titles.json")
def main():
- args = parse_args(sys.argv[1:], "list", "add")
+ args = parse_args(sys.argv[1:])
title_map = TitleMap(title_map_file, update=args.update_titles)
entries = EntryManager(watch_later_dir, title_map)