diff options
Diffstat (limited to '')
-rw-r--r-- | .editorconfig | 2 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | src/later/cli.py | 14 | ||||
-rw-r--r-- | src/later/main.py | 2 |
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 @@ -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) |