using System;

namespace StellaOps.Scanner.Sbomer.BuildXPlugin.Cas;

/// <summary>
/// Configuration for the on-disk content-addressable store used during CI.
/// </summary>
public sealed record LocalCasOptions
{
    private string rootDirectory = string.Empty;
    private string algorithm = "sha256";

    public string RootDirectory
    {
        get => rootDirectory;
        init
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                throw new ArgumentException("Root directory must be provided.", nameof(value));
            }

            rootDirectory = value;
        }
    }

    public string Algorithm
    {
        get => algorithm;
        init
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                throw new ArgumentException("Algorithm must be provided.", nameof(value));
            }

            algorithm = value;
        }
    }
}
