example_usage.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/env python3
  2. """
  3. Example usage of autusm library without CLI.
  4. """
  5. import sys
  6. import tempfile
  7. from pathlib import Path
  8. # Add the src directory to the path so we can import autusm
  9. sys.path.insert(0, str(Path(__file__).parent / "src"))
  10. from autusm.models import PackageInfo, BuildSystem, BuildSystemType
  11. from autusm.generator import ScriptGenerator
  12. from autusm.manifest import ManifestGenerator
  13. def main():
  14. """Demonstrate autusm usage."""
  15. print("Autusm Library Usage Example")
  16. print("=" * 40)
  17. # Create a sample package info
  18. package_info = PackageInfo(
  19. name="example-package",
  20. version="1.0.0",
  21. summary="An example package for demonstration",
  22. description="This is an example package to demonstrate autusm functionality",
  23. url="https://github.com/example/example-package",
  24. authors=["Example Author"],
  25. runtime_dependencies=["python3", "libexample"],
  26. build_dependencies=["gcc", "make"]
  27. )
  28. # Create a sample build system
  29. build_system = BuildSystem(
  30. type=BuildSystemType.CMAKE,
  31. config_files=["CMakeLists.txt"],
  32. build_files=["CMakeLists.txt"],
  33. detected_commands=["cmake -DCMAKE_INSTALL_PREFIX=/usr .", "make", "make install"],
  34. custom_args={"BUILD_TESTING": "ON"}
  35. )
  36. print(f"Package: {package_info.name} v{package_info.version}")
  37. print(f"Summary: {package_info.summary}")
  38. print(f"Build System: {build_system.type.value}")
  39. # Generate scripts
  40. with tempfile.TemporaryDirectory() as temp_dir:
  41. scripts_dir = Path(temp_dir) / "scripts"
  42. generator = ScriptGenerator()
  43. generator.generate_scripts(package_info, build_system, scripts_dir)
  44. print("\nGenerated Scripts:")
  45. for script_file in ["acquire", "build", "install"]:
  46. script_path = scripts_dir / script_file
  47. if script_path.exists():
  48. print(f" - {script_path}")
  49. # Show first few lines of each script
  50. with open(script_path, 'r') as f:
  51. lines = f.readlines()[:5]
  52. print(" First 5 lines:")
  53. for i, line in enumerate(lines, 1):
  54. print(f" {i}: {line.rstrip()}")
  55. print(" ...")
  56. # Generate manifest
  57. manifest_generator = ManifestGenerator()
  58. manifest = manifest_generator.generate(package_info, build_system)
  59. print("\nGenerated Manifest (JSON):")
  60. print(manifest.to_json())
  61. print("\nExample completed successfully!")
  62. if __name__ == "__main__":
  63. main()