Example #1
0
        public EvaluatedPackage Apply(LicensedPackage package)
        {
            if (this.packagePolicies.IgnorePackage(package.Id))
            {
                Log.Warning($"Package {package.Id} is ignored but is still evaluated for license.");
                return(new EvaluatedPackage(package, Evaluation.Ignored));
            }

            if (this.packagePolicies.AllowLicense(package.Id))
            {
                return(new EvaluatedPackage(package, Evaluation.Ok, "Package license explicitly allowed"));
            }

            LicensePolicy policy = this.policies.FirstOrDefault(r => r.IsMatch(package.License));

            if (policy == null)
            {
                return(new EvaluatedPackage(package, Evaluation.Violation, "No policy found"));
            }

            if (policy.License.Equals(License.UnknownLicenseStr) && !policy.Allow)
            {
                return(new EvaluatedPackage(package, Evaluation.Violation, "Could not find license"));
            }

            if (policy.AllowInternal && this.projects.Contains(package.OriginProject))
            {
                return(new EvaluatedPackage(package, Evaluation.Ok));
            }

            return(new EvaluatedPackage(package, policy.Allow ? Evaluation.Ok : Evaluation.Violation));
        }
        public PrefixLicensePolicy(LicensePolicy policy)
        {
            if (!policy.License.EndsWith("*"))
            {
                throw new ArgumentException("Expected the license id to end with an asterix '*'");
            }

            License = policy.License.TrimEnd(new[] { '*' });
            Allow   = policy.Allow;
        }