vflow-cli 0.1.3__tar.gz → 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/PKG-INFO +1 -1
  2. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/pyproject.toml +1 -1
  3. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/config.py +4 -0
  4. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/main.py +50 -0
  5. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/PKG-INFO +1 -1
  6. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/README.md +0 -0
  7. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/setup.cfg +0 -0
  8. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/__init__.py +0 -0
  9. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/actions.py +0 -0
  10. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/backup_service.py +0 -0
  11. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/core/__init__.py +0 -0
  12. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/core/date_utils.py +0 -0
  13. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/core/fs_ops.py +0 -0
  14. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/core/media_ops.py +0 -0
  15. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/core/patterns.py +0 -0
  16. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/delivery_service.py +0 -0
  17. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/ingest_service.py +0 -0
  18. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow/utils_date.py +0 -0
  19. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/SOURCES.txt +0 -0
  20. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/dependency_links.txt +0 -0
  21. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/entry_points.txt +0 -0
  22. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/requires.txt +0 -0
  23. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/src/vflow_cli.egg-info/top_level.txt +0 -0
  24. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_braw_and_prores_extensions.py +0 -0
  25. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_backup_and_verify.py +0 -0
  26. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_ingest_and_pull_filters.py +0 -0
  27. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_ingest_report.py +0 -0
  28. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_list_backups.py +0 -0
  29. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_restore_folder.py +0 -0
  30. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_cli_verify_backup_mirror.py +0 -0
  31. {vflow_cli-0.1.3 → vflow_cli-0.1.4}/tests/test_patterns_and_duplicates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vflow-cli
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: The v-flow CLI and Claude skills bundle for automating media backup and processing workflows for videographers.
5
5
  Author-email: Kaung <kaungzinye@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vflow-cli"
3
- version = "0.1.3"
3
+ version = "0.1.4"
4
4
  description = "The v-flow CLI and Claude skills bundle for automating media backup and processing workflows for videographers."
5
5
  authors = [{ name = "Kaung", email = "kaungzinye@gmail.com" }]
6
6
  readme = "README.md"
@@ -42,3 +42,7 @@ def get_location(config: dict, name: str) -> Path:
42
42
  def get_setting(config: dict, key: str, default: any = None) -> any:
43
43
  """Gets a setting from the config, returning default if not found."""
44
44
  return config.get("settings", {}).get(key, default)
45
+
46
+ def save_config(config: dict) -> None:
47
+ with open(CONFIG_PATH, "w") as f:
48
+ yaml.dump(config, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
@@ -394,6 +394,56 @@ def copy_meta(
394
394
 
395
395
 
396
396
 
397
+ LOCATION_KEYS = {"laptop", "work_ssd", "archive_hdd"}
398
+
399
+ @app.command()
400
+ def locations():
401
+ """Show configured v-flow paths and whether they are currently mounted."""
402
+ app_config = config.load_config()
403
+ locs = app_config.get("locations", {})
404
+ settings = app_config.get("settings", {})
405
+ typer.echo("Locations:")
406
+ for key, path in locs.items():
407
+ mounted = "✓" if Path(path).exists() else "✗ not mounted"
408
+ typer.echo(f" {key}: {path} [{mounted}]")
409
+ if settings:
410
+ typer.echo("Settings:")
411
+ for key, val in settings.items():
412
+ typer.echo(f" {key}: {val}")
413
+
414
+
415
+ @app.command("set")
416
+ def set_config(
417
+ key: str = typer.Argument(help="Config key to update. Location keys: laptop, work_ssd, archive_hdd. Settings: settings.<key> (e.g. settings.default_split_gap)."),
418
+ value: str = typer.Argument(help="New value for the key."),
419
+ ):
420
+ """Update a single config value without re-running setup.
421
+
422
+ Examples:
423
+ v-flow set archive_hdd "/Volumes/Kaung HDD/MediaArchive"
424
+ v-flow set laptop "/Users/me/Desktop/Ingest"
425
+ v-flow set settings.default_split_gap 24
426
+ """
427
+ app_config = config.load_config()
428
+
429
+ if key in LOCATION_KEYS:
430
+ app_config.setdefault("locations", {})[key] = value
431
+ typer.echo(f"Set locations.{key} = {value}")
432
+ elif key.startswith("settings."):
433
+ setting_key = key[len("settings."):]
434
+ app_config.setdefault("settings", {})[setting_key] = value
435
+ typer.echo(f"Set settings.{setting_key} = {value}")
436
+ else:
437
+ typer.echo(
438
+ f"Unknown key '{key}'. Use one of: {', '.join(sorted(LOCATION_KEYS))}, or settings.<key>.",
439
+ err=True,
440
+ )
441
+ raise typer.Exit(code=1)
442
+
443
+ config.save_config(app_config)
444
+ typer.echo(f"Config saved to {config.CONFIG_PATH}")
445
+
446
+
397
447
  @app.command()
398
448
  def make_config():
399
449
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vflow-cli
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: The v-flow CLI and Claude skills bundle for automating media backup and processing workflows for videographers.
5
5
  Author-email: Kaung <kaungzinye@gmail.com>
6
6
  Requires-Python: >=3.8
File without changes
File without changes