feat(services): load service plugins from git repos

Allow directories.services entries to be git repo specs (URL/owner-repo/ @branch) alongside local paths: clone + TTL-pull as cache, list-order priority with a duplicate-ignored summary, a refresh-services command that force-syncs and reports the per-service diff, and a dirty-clone guard that protects local edits on the automated path. Adds binaries.Git and a redact_paths config toggle.
This commit is contained in:
imSp4rky
2026-06-24 08:59:03 -06:00
parent 6294566823
commit 66638ead6b
11 changed files with 704 additions and 12 deletions
+13
View File
@@ -261,6 +261,19 @@ def test_redact_path_leaves_relative_paths_untouched():
assert redact_path("temp/Audio.mp4") == "temp/Audio.mp4"
def test_redact_path_disabled_by_config(monkeypatch):
# config.redact_paths: false shows full paths verbatim
from unshackle.core.config import config
from unshackle.core.utils import redact as redact_mod
root = str(Path(redact_mod.__file__).resolve().parents[3])
full = f"{root}/temp/Audio.mp4"
monkeypatch.setattr(config, "redact_paths", False, raising=False)
assert redact_path(full) == full
monkeypatch.setattr(config, "redact_paths", True, raising=False)
assert redact_path(full) == "<unshackle>/temp/Audio.mp4"
# ---------- redact_all + output_dir integration ----------