Update analysis and plan files to enhance duplicate handling and reporting
- Updated `analysis.json` with a new generation timestamp. - Modified `plan.json` to include a new plan ID and created timestamp, and changed operation types from "no-op" to "quarantine" for specific files needing manual review. - Enhanced the README.md to document the new `--analysis` option for generating execution plans, which now includes a human-readable summary and duplicate handling strategies. - Introduced a new `duplicate_resolve.py` module to manage duplicate file resolution strategies. - Improved the execution engine to support quarantine operations and added rollback functionality for quarantined files. These changes improve the functionality of the Video Library Manager by providing better duplicate management and clearer reporting capabilities.
This commit is contained in:
@@ -1,20 +1,24 @@
|
||||
"""Plan command implementation."""
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import click
|
||||
|
||||
from vlm.context import CLIContext
|
||||
from vlm.io import identities_to_plan_input, load_identities_json
|
||||
from vlm.io import identities_to_plan_input, load_identities_json, load_analysis_json
|
||||
from vlm.planner import generate_plan, save_plan
|
||||
|
||||
|
||||
def plan_cmd(ctx: CLIContext, input: Path, output: Path) -> None:
|
||||
"""Generate execution plan from identities."""
|
||||
def plan_cmd(ctx: CLIContext, input: Path, output: Path, analysis: Optional[Path] = None) -> None:
|
||||
"""Generate execution plan from identities; optionally use analysis for duplicate handling."""
|
||||
config = ctx.config
|
||||
logger = ctx.logger
|
||||
|
||||
click.echo(f"Generating execution plan from: {input}")
|
||||
if analysis:
|
||||
click.echo(f"Using analysis: {analysis}")
|
||||
click.echo()
|
||||
|
||||
identities_data = load_identities_json(input)
|
||||
@@ -31,8 +35,21 @@ def plan_cmd(ctx: CLIContext, input: Path, output: Path) -> None:
|
||||
|
||||
identities_list = identities_to_plan_input(identities_data)
|
||||
|
||||
analysis_data = None
|
||||
if analysis:
|
||||
if not analysis.exists():
|
||||
click.echo(f"Error: Analysis file not found: {analysis}", err=True)
|
||||
click.echo("Run 'vlm analyze' first to generate analysis.json.", err=True)
|
||||
raise FileNotFoundError(analysis)
|
||||
try:
|
||||
analysis_data = load_analysis_json(analysis)
|
||||
except (json.JSONDecodeError, KeyError) as e:
|
||||
click.echo(f"Error: Invalid or incomplete analysis file: {e}", err=True)
|
||||
click.echo("Run 'vlm analyze' to regenerate analysis.json.", err=True)
|
||||
raise
|
||||
|
||||
click.echo("Generating execution plan...")
|
||||
execution_plan = generate_plan(identities_list, config)
|
||||
execution_plan = generate_plan(identities_list, config, analysis_data=analysis_data)
|
||||
|
||||
click.echo()
|
||||
click.echo("Plan generation complete!")
|
||||
|
||||
Reference in New Issue
Block a user