public SpecFlowSettings(NuGetVersion version, SpecFlowProjectTraits traits, string generatorFolder, string configFilePath)
 {
     Version         = version;
     Traits          = traits;
     GeneratorFolder = generatorFolder;
     ConfigFilePath  = configFilePath;
 }
 public ProjectSettings(DeveroomProjectKind kind, string outputAssemblyPath, string targetFrameworkMoniker, string defaultNamespace,
                        NuGetPackageReference specFlowPackage, string specFlowConfigFilePath, SpecFlowProjectTraits specFlowProjectTraits)
 {
     Kind = kind;
     TargetFrameworkMoniker = targetFrameworkMoniker;
     OutputAssemblyPath     = outputAssemblyPath;
     DefaultNamespace       = defaultNamespace;
     SpecFlowPackage        = specFlowPackage;
     SpecFlowConfigFilePath = specFlowConfigFilePath;
     SpecFlowProjectTraits  = specFlowProjectTraits;
 }
 public ProjectSettings(DeveroomProjectKind kind, string outputAssemblyPath, string targetFrameworkMoniker, string defaultNamespace,
                        NuGetVersion specFlowVersion, string specFlowGeneratorFolder, string specFlowConfigFilePath, SpecFlowProjectTraits specFlowProjectTraits)
 {
     Kind = kind;
     TargetFrameworkMoniker  = targetFrameworkMoniker;
     OutputAssemblyPath      = outputAssemblyPath;
     DefaultNamespace        = defaultNamespace;
     SpecFlowVersion         = specFlowVersion;
     SpecFlowGeneratorFolder = specFlowGeneratorFolder;
     SpecFlowConfigFilePath  = specFlowConfigFilePath;
     SpecFlowProjectTraits   = specFlowProjectTraits;
 }
        private SpecFlowSettings CreateSpecFlowSettings(
            NuGetVersion specFlowVersion, SpecFlowProjectTraits specFlowProjectTraits,
            string specFlowGeneratorFolder, string specFlowConfigFilePath)
        {
            if (specFlowVersion.Version < new Version(3, 0) &&
                !specFlowProjectTraits.HasFlag(SpecFlowProjectTraits.MsBuildGeneration) &&
                !specFlowProjectTraits.HasFlag(SpecFlowProjectTraits.XUnitAdapter) &&
                specFlowGeneratorFolder != null)
            {
                specFlowProjectTraits |= SpecFlowProjectTraits.DesignTimeFeatureFileGeneration;
            }

            return(new SpecFlowSettings(specFlowVersion, specFlowProjectTraits, specFlowGeneratorFolder, specFlowConfigFilePath));
        }
        private NuGetPackageReference GetSpecFlowPackage(IProjectScope projectScope, IEnumerable <NuGetPackageReference> packageReferences, out SpecFlowProjectTraits specFlowProjectTraits)
        {
            specFlowProjectTraits = SpecFlowProjectTraits.None;
            if (packageReferences == null)
            {
                return(null);
            }
            var packageReferencesArray = packageReferences.ToArray();
            var detector        = new SpecFlowPackageDetector(projectScope.IdeScope.FileSystem);
            var specFlowPackage = detector.GetSpecFlowPackage(packageReferencesArray);

            if (specFlowPackage != null)
            {
                var specFlowVersion = specFlowPackage.Version.Version;
                if (detector.IsMsBuildGenerationEnabled(packageReferencesArray) ||
                    IsImplicitMsBuildGeneration(detector, specFlowVersion, packageReferencesArray))
                {
                    specFlowProjectTraits |= SpecFlowProjectTraits.MsBuildGeneration;
                }
                if (detector.IsXUnitAdapterEnabled(packageReferencesArray))
                {
                    specFlowProjectTraits |= SpecFlowProjectTraits.XUnitAdapter;
                }
                if (detector.IsCucumberExpressionPluginEnabled(packageReferencesArray))
                {
                    specFlowProjectTraits |= SpecFlowProjectTraits.CucumberExpression;
                }
            }

            return(specFlowPackage);
        }