using System;
using System.Collections.Generic;

namespace Microsoft.DotNet.Cli.Build.Framework
{
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
    public class BuildArchitecturesAttribute : TargetConditionAttribute
    {
        private IEnumerable<BuildArchitecture> _buildArchitectures;

        public BuildArchitecturesAttribute(params BuildArchitecture[] architectures)
        {
            if (architectures == null)
            {
                throw new ArgumentNullException("architectures");
            }

            _buildArchitectures = architectures;
        }

        public override bool EvaluateCondition()
        {
            var currentArchitecture = CurrentArchitecture.Current;

            if (currentArchitecture == default(BuildArchitecture))
            {
                throw new Exception("Unrecognized Architecture");
            }

            foreach (var architecture in _buildArchitectures)
            {
                if (architecture == currentArchitecture)
                {
                    return true;
                }
            }

            return false;
        }
    }
}