// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gcp.osconfig.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs extends com.pulumi.resources.ResourceArgs {

    public static final OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs Empty = new OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs();

    /**
     * Optional arguments to pass to the source during
     * execution.
     * 
     */
    @Import(name="args")
    private @Nullable Output<List<String>> args;

    /**
     * @return Optional arguments to pass to the source during
     * execution.
     * 
     */
    public Optional<Output<List<String>>> args() {
        return Optional.ofNullable(this.args);
    }

    /**
     * A remote or local file. Structure is
     * documented below.
     * 
     */
    @Import(name="file")
    private @Nullable Output<OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs> file;

    /**
     * @return A remote or local file. Structure is
     * documented below.
     * 
     */
    public Optional<Output<OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs>> file() {
        return Optional.ofNullable(this.file);
    }

    /**
     * The script interpreter to use. Possible values
     * are: `INTERPRETER_UNSPECIFIED`, `NONE`, `SHELL`, `POWERSHELL`.
     * 
     */
    @Import(name="interpreter", required=true)
    private Output<String> interpreter;

    /**
     * @return The script interpreter to use. Possible values
     * are: `INTERPRETER_UNSPECIFIED`, `NONE`, `SHELL`, `POWERSHELL`.
     * 
     */
    public Output<String> interpreter() {
        return this.interpreter;
    }

    /**
     * Only recorded for enforce Exec. Path to an
     * output file (that is created by this Exec) whose content will be recorded in
     * OSPolicyResourceCompliance after a successful run. Absence or failure to
     * read this file will result in this ExecResource being non-compliant. Output
     * file size is limited to 100K bytes.
     * 
     */
    @Import(name="outputFilePath")
    private @Nullable Output<String> outputFilePath;

    /**
     * @return Only recorded for enforce Exec. Path to an
     * output file (that is created by this Exec) whose content will be recorded in
     * OSPolicyResourceCompliance after a successful run. Absence or failure to
     * read this file will result in this ExecResource being non-compliant. Output
     * file size is limited to 100K bytes.
     * 
     */
    public Optional<Output<String>> outputFilePath() {
        return Optional.ofNullable(this.outputFilePath);
    }

    /**
     * An inline script. The size of the script is limited to
     * 1024 characters.
     * 
     */
    @Import(name="script")
    private @Nullable Output<String> script;

    /**
     * @return An inline script. The size of the script is limited to
     * 1024 characters.
     * 
     */
    public Optional<Output<String>> script() {
        return Optional.ofNullable(this.script);
    }

    private OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs() {}

    private OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs $) {
        this.args = $.args;
        this.file = $.file;
        this.interpreter = $.interpreter;
        this.outputFilePath = $.outputFilePath;
        this.script = $.script;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs $;

        public Builder() {
            $ = new OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs();
        }

        public Builder(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs defaults) {
            $ = new OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param args Optional arguments to pass to the source during
         * execution.
         * 
         * @return builder
         * 
         */
        public Builder args(@Nullable Output<List<String>> args) {
            $.args = args;
            return this;
        }

        /**
         * @param args Optional arguments to pass to the source during
         * execution.
         * 
         * @return builder
         * 
         */
        public Builder args(List<String> args) {
            return args(Output.of(args));
        }

        /**
         * @param args Optional arguments to pass to the source during
         * execution.
         * 
         * @return builder
         * 
         */
        public Builder args(String... args) {
            return args(List.of(args));
        }

        /**
         * @param file A remote or local file. Structure is
         * documented below.
         * 
         * @return builder
         * 
         */
        public Builder file(@Nullable Output<OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs> file) {
            $.file = file;
            return this;
        }

        /**
         * @param file A remote or local file. Structure is
         * documented below.
         * 
         * @return builder
         * 
         */
        public Builder file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs file) {
            return file(Output.of(file));
        }

        /**
         * @param interpreter The script interpreter to use. Possible values
         * are: `INTERPRETER_UNSPECIFIED`, `NONE`, `SHELL`, `POWERSHELL`.
         * 
         * @return builder
         * 
         */
        public Builder interpreter(Output<String> interpreter) {
            $.interpreter = interpreter;
            return this;
        }

        /**
         * @param interpreter The script interpreter to use. Possible values
         * are: `INTERPRETER_UNSPECIFIED`, `NONE`, `SHELL`, `POWERSHELL`.
         * 
         * @return builder
         * 
         */
        public Builder interpreter(String interpreter) {
            return interpreter(Output.of(interpreter));
        }

        /**
         * @param outputFilePath Only recorded for enforce Exec. Path to an
         * output file (that is created by this Exec) whose content will be recorded in
         * OSPolicyResourceCompliance after a successful run. Absence or failure to
         * read this file will result in this ExecResource being non-compliant. Output
         * file size is limited to 100K bytes.
         * 
         * @return builder
         * 
         */
        public Builder outputFilePath(@Nullable Output<String> outputFilePath) {
            $.outputFilePath = outputFilePath;
            return this;
        }

        /**
         * @param outputFilePath Only recorded for enforce Exec. Path to an
         * output file (that is created by this Exec) whose content will be recorded in
         * OSPolicyResourceCompliance after a successful run. Absence or failure to
         * read this file will result in this ExecResource being non-compliant. Output
         * file size is limited to 100K bytes.
         * 
         * @return builder
         * 
         */
        public Builder outputFilePath(String outputFilePath) {
            return outputFilePath(Output.of(outputFilePath));
        }

        /**
         * @param script An inline script. The size of the script is limited to
         * 1024 characters.
         * 
         * @return builder
         * 
         */
        public Builder script(@Nullable Output<String> script) {
            $.script = script;
            return this;
        }

        /**
         * @param script An inline script. The size of the script is limited to
         * 1024 characters.
         * 
         * @return builder
         * 
         */
        public Builder script(String script) {
            return script(Output.of(script));
        }

        public OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs build() {
            $.interpreter = Objects.requireNonNull($.interpreter, "expected parameter 'interpreter' to be non-null");
            return $;
        }
    }

}
