This commit is contained in:
98
.cli_memory/commands/export.py
Normal file
98
.cli_memory/commands/export.py
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
import yaml
|
||||||
|
import click
|
||||||
|
from rich import print as rprint
|
||||||
|
from rich.panel import Panel
|
||||||
|
from rich.table import Table
|
||||||
|
|
||||||
|
from ..config import Config
|
||||||
|
from ..database import Database
|
||||||
|
from ..history import HistoryManager
|
||||||
|
|
||||||
|
|
||||||
|
@click.group()
|
||||||
|
def export():
|
||||||
|
"""Export data."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@export.command()
|
||||||
|
@click.option("--output", "-o", default="commands.json", help="Output file")
|
||||||
|
def commands(output):
|
||||||
|
"""Export commands to file."""
|
||||||
|
db = Database()
|
||||||
|
history = HistoryManager(db=db)
|
||||||
|
|
||||||
|
commands = db.get_commands(limit=10000)
|
||||||
|
data = [c.to_dict() for c in commands]
|
||||||
|
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
if output.endswith(".json"):
|
||||||
|
with open(output, "w") as f:
|
||||||
|
json.dump(data, f, indent=2, default=str)
|
||||||
|
else:
|
||||||
|
with open(output, "w") as f:
|
||||||
|
yaml.dump(data, f)
|
||||||
|
|
||||||
|
rprint(f"[green]Exported {len(commands)} commands to {output}[/green]")
|
||||||
|
|
||||||
|
|
||||||
|
@export.command()
|
||||||
|
@click.option("--output", "-o", default="workflows.yaml", help="Output file")
|
||||||
|
def workflows(output):
|
||||||
|
"""Export workflows to file."""
|
||||||
|
db = Database()
|
||||||
|
workflows = db.get_all_workflows()
|
||||||
|
data = [w.to_dict() for w in workflows]
|
||||||
|
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
if output.endswith(".json"):
|
||||||
|
with open(output, "w") as f:
|
||||||
|
json.dump(data, f, indent=2, default=str)
|
||||||
|
else:
|
||||||
|
with open(output, "w") as f:
|
||||||
|
yaml.dump(data, f)
|
||||||
|
|
||||||
|
rprint(f"[green]Exported {len(workflows)} workflows to {output}[/green]")
|
||||||
|
|
||||||
|
|
||||||
|
@export.command()
|
||||||
|
@click.option("--output", "-o", default="backup.json", help="Output file")
|
||||||
|
def all(output):
|
||||||
|
"""Export all data."""
|
||||||
|
db = Database()
|
||||||
|
history = HistoryManager(db=db)
|
||||||
|
|
||||||
|
data_str = history.export_history(format="json" if output.endswith(".json") else "yaml")
|
||||||
|
|
||||||
|
with open(output, "w") as f:
|
||||||
|
f.write(data_str)
|
||||||
|
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
rprint(f"[green]Exported all data to {output}[/green]")
|
||||||
|
|
||||||
|
|
||||||
|
@export.command()
|
||||||
|
def scripts():
|
||||||
|
"""List generated scripts."""
|
||||||
|
from ..generator import ScriptGenerator
|
||||||
|
|
||||||
|
generator = ScriptGenerator()
|
||||||
|
scripts = generator.list_generated_scripts()
|
||||||
|
|
||||||
|
if not scripts:
|
||||||
|
rprint("[yellow]No generated scripts found[/yellow]")
|
||||||
|
return
|
||||||
|
|
||||||
|
table = Table(title="Generated Scripts")
|
||||||
|
table.add_column("Name", style="cyan")
|
||||||
|
table.add_column("Path", style="magenta")
|
||||||
|
|
||||||
|
for s in scripts:
|
||||||
|
table.add_row(s["name"], s["path"])
|
||||||
|
|
||||||
|
rprint(Panel(table, title=f"{len(scripts)} Scripts"))
|
||||||
Reference in New Issue
Block a user