| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/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()
|