using System.ComponentModel;

namespace Evos.Api.Samples
{
    [Localizable(false)]
    public static class Program
    {
        public static int Main()
        {
            var samples = new (string Name, Action Run)[]
            {
                // Низкоуровневое API — репозиторий Evos напрямую.
                (nameof(RepositoryLifecycleSample), RepositoryLifecycleSample.Run),
                (nameof(RepositoryEditSample), RepositoryEditSample.Run),
                (nameof(VcsSample), VcsSample.Run),
                (nameof(RepeaterSample), RepeaterSample.Run),

                // Высокоуровневое API — обменная модель.
                (nameof(BuildExchangeModelSample), BuildExchangeModelSample.Run),
                (nameof(GraphicsSample), GraphicsSample.Run),
                (nameof(CustomFamilySample), CustomFamilySample.Run),
                (nameof(ValidationErrorsSample), ValidationErrorsSample.Run),
                (nameof(SerializeExchangeModelSample), SerializeExchangeModelSample.Run),
                (nameof(PublishToRepositorySample), PublishToRepositorySample.Run),
                (nameof(SystemsAndLevelsSample), SystemsAndLevelsSample.Run)
            };

            foreach (var sample in samples)
            {
                Console.WriteLine($"=== {sample.Name}");
                try
                {
                    sample.Run();
                }
                catch (Exception exception)
                {
                    Console.Error.WriteLine($"{sample.Name} упал: {exception}");
                    return 1;
                }
            }

            Console.WriteLine("Все сэмплы отработали.");
            return 0;
        }
    }
}
