string[] GetFilesToSubstitute(IVariables variables)
        {
            var isEnableNoMatchWarningSet   = variables.IsSet(PackageVariables.EnableNoMatchWarning);
            var additionalFileSubstitutions = GetAdditionalFileSubstitutions(variables);

            if (!isEnableNoMatchWarningSet)
            {
                var hasAdditionalSubstitutions = !string.IsNullOrEmpty(additionalFileSubstitutions);
                variables.AddFlag(PackageVariables.EnableNoMatchWarning, hasAdditionalSubstitutions);
            }

            var result = new List <string>();

            var runAutomaticFileSubstitution = variables.GetFlag(TerraformSpecialVariables.Action.Terraform.RunAutomaticFileSubstitution, true);

            if (runAutomaticFileSubstitution)
            {
                result.AddRange(new[] { "**/*.tf", "**/*.tf.json", "**/*.tfvars", "**/*.tfvars.json" });
            }

            var additionalFileSubstitution = additionalFileSubstitutions;

            if (!string.IsNullOrWhiteSpace(additionalFileSubstitution))
            {
                result.AddRange(additionalFileSubstitution.Split(new[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries));
            }

            return(result.ToArray());
        }
예제 #2
0
        public int Execute(string[] args)
        {
            var pathToPrimaryPackage = variables.GetPathToPrimaryPackage(fileSystem, false);

            var isEnableNoMatchWarningSet = variables.IsSet(PackageVariables.EnableNoMatchWarning);

            if (!isEnableNoMatchWarningSet)
            {
                var hasAdditionalSubstitutions = !string.IsNullOrEmpty(GetAdditionalFileSubstitutions());
                variables.AddFlag(PackageVariables.EnableNoMatchWarning, hasAdditionalSubstitutions);
            }

            var runningDeployment = new RunningDeployment(pathToPrimaryPackage, variables);

            if (pathToPrimaryPackage != null)
            {
                extractPackage.ExtractToStagingDirectory(pathToPrimaryPackage);
            }

            var filesToSubstitute = GetFilesToSubstitute();

            substituteInFiles.Substitute(runningDeployment, filesToSubstitute);

            InstallAsync(runningDeployment).GetAwaiter().GetResult();

            return(0);
        }