#!/usr/bin/env python3 """ Example usage of autusm library without CLI. """ import sys import tempfile from pathlib import Path # Add the src directory to the path so we can import autusm sys.path.insert(0, str(Path(__file__).parent / "src")) from autusm.models import PackageInfo, BuildSystem, BuildSystemType from autusm.generator import ScriptGenerator from autusm.manifest import ManifestGenerator def main(): """Demonstrate autusm usage.""" print("Autusm Library Usage Example") print("=" * 40) # Create a sample package info package_info = PackageInfo( name="example-package", version="1.0.0", summary="An example package for demonstration", description="This is an example package to demonstrate autusm functionality", url="https://github.com/example/example-package", authors=["Example Author"], runtime_dependencies=["python3", "libexample"], build_dependencies=["gcc", "make"] ) # Create a sample build system build_system = BuildSystem( type=BuildSystemType.CMAKE, config_files=["CMakeLists.txt"], build_files=["CMakeLists.txt"], detected_commands=["cmake -DCMAKE_INSTALL_PREFIX=/usr .", "make", "make install"], custom_args={"BUILD_TESTING": "ON"} ) print(f"Package: {package_info.name} v{package_info.version}") print(f"Summary: {package_info.summary}") print(f"Build System: {build_system.type.value}") # Generate scripts with tempfile.TemporaryDirectory() as temp_dir: scripts_dir = Path(temp_dir) / "scripts" generator = ScriptGenerator() generator.generate_scripts(package_info, build_system, scripts_dir) print("\nGenerated Scripts:") for script_file in ["acquire", "build", "install"]: script_path = scripts_dir / script_file if script_path.exists(): print(f" - {script_path}") # Show first few lines of each script with open(script_path, 'r') as f: lines = f.readlines()[:5] print(" First 5 lines:") for i, line in enumerate(lines, 1): print(f" {i}: {line.rstrip()}") print(" ...") # Generate manifest manifest_generator = ManifestGenerator() manifest = manifest_generator.generate(package_info, build_system) print("\nGenerated Manifest (JSON):") print(manifest.to_json()) print("\nExample completed successfully!") if __name__ == "__main__": main()