"""
Custom Formula Hook
Auto-generated by Atomizer Phase 2.9

Calculate safety factor

Formula: safety_factor = yield_strength / max_stress
Inputs: max_stress, yield_strength
"""

import sys
import json
from pathlib import Path


def calculate_safety_factor(max_stress, yield_strength):
    """
    Calculate custom metric using formula.

    Args:
        max_stress: float
        yield_strength: float

    Returns:
        float: safety_factor
    """
    safety_factor = yield_strength / max_stress
    return safety_factor


def main():
    """Main entry point for hook execution."""
    if len(sys.argv) < 2:
        print("Usage: python {} <input_file.json>".format(sys.argv[0]))
        sys.exit(1)

    input_file = Path(sys.argv[1])

    # Read inputs
    with open(input_file, 'r') as f:
        inputs = json.load(f)

    # Extract required inputs
    max_stress = inputs.get("max_stress")
    if max_stress is None:
        print(f"Error: Required input 'max_stress' not found")
        sys.exit(1)
    yield_strength = inputs.get("yield_strength")
    if yield_strength is None:
        print(f"Error: Required input 'yield_strength' not found")
        sys.exit(1)

    # Calculate result
    result = calculate_safety_factor(max_stress, yield_strength)

    # Write output
    output_file = input_file.parent / "safety_factor_result.json"
    output = {
        "safety_factor": result,
        "formula": "yield_strength / max_stress",
        "inputs_used": {"max_stress": max_stress, "yield_strength": yield_strength}
    }

    with open(output_file, 'w') as f:
        json.dump(output, f, indent=2)

    print(f"safety_factor = {result:.6f}")
    print(f"Result saved to: {output_file}")

    return result


if __name__ == '__main__':
    main()
