#!/usr/bin/env python3 """ DSS-CLI - A command-line interface for the DSS Engine This script provides a direct, scriptable interface to the core functionalities of the DSS analysis and context engine. It is designed for use in CI/CD pipelines and other automated workflows. """ import argparse import json import os import sys from pathlib import Path # Ensure the script can find the 'dss' module # This adds the parent directory of 'dss-mvp1' to the Python path # Assuming the script is run from the project root, this will allow `from dss...` imports sys.path.insert(0, str(Path(__file__).parent.parent)) try: from dss.analyze.project_analyzer import run_project_analysis, export_project_context except ImportError as e: print(f"Error: Could not import DSS modules. Make sure dss-mvp1 is in the PYTHONPATH.", file=sys.stderr) print(f"Import error: {e}", file=sys.stderr) sys.exit(1) def main(): """Main function to parse arguments and dispatch commands.""" parser = argparse.ArgumentParser( description="DSS Command Line Interface for project analysis and context management." ) subparsers = parser.add_subparsers(dest="command", required=True, help="Available commands") # ========================================================================= # 'analyze' command # ========================================================================= analyze_parser = subparsers.add_parser( "analyze", help="Run a deep analysis of a project and save the results to .dss/analysis_graph.json" ) analyze_parser.add_argument( "--project-path", required=True, help="The root path to the project directory to be analyzed." ) # ========================================================================= # 'export-context' command # ========================================================================= export_parser = subparsers.add_parser( "export-context", help="Export the comprehensive project context as a JSON object to stdout." ) export_parser.add_argument( "--project-path", required=True, help="The path to the project directory." ) args = parser.parse_args() # --- Command Dispatch --- project_path = Path(args.project_path).resolve() if not project_path.is_dir(): print(f"Error: Provided project path is not a valid directory: {project_path}", file=sys.stderr) sys.exit(1) try: if args.command == "analyze": result = run_project_analysis(str(project_path)) print(f"Analysis complete. Graph saved to {project_path / '.dss' / 'analysis_graph.json'}") # Optionally print a summary to stdout summary = { "status": "success", "nodes_created": len(result.get("nodes", [])), "links_created": len(result.get("links", [])), } print(json.dumps(summary, indent=2)) elif args.command == "export-context": result = export_project_context(str(project_path)) # Print the full context to stdout print(json.dumps(result, indent=2)) except Exception as e: print(json.dumps({"success": False, "error": str(e)}), file=sys.stderr) sys.exit(1) if __name__ == "__main__": main()