// *** 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.azure.datafactory.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;


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

    public static final FactoryGithubConfigurationArgs Empty = new FactoryGithubConfigurationArgs();

    /**
     * Specifies the GitHub account name.
     * 
     */
    @Import(name="accountName", required=true)
    private Output<String> accountName;

    /**
     * @return Specifies the GitHub account name.
     * 
     */
    public Output<String> accountName() {
        return this.accountName;
    }

    /**
     * Specifies the branch of the repository to get code from.
     * 
     */
    @Import(name="branchName", required=true)
    private Output<String> branchName;

    /**
     * @return Specifies the branch of the repository to get code from.
     * 
     */
    public Output<String> branchName() {
        return this.branchName;
    }

    /**
     * Specifies the GitHub Enterprise host name. For example: &lt;https://github.mydomain.com&gt;. Use &lt;https://github.com&gt; for open source repositories.
     * 
     */
    @Import(name="gitUrl", required=true)
    private Output<String> gitUrl;

    /**
     * @return Specifies the GitHub Enterprise host name. For example: &lt;https://github.mydomain.com&gt;. Use &lt;https://github.com&gt; for open source repositories.
     * 
     */
    public Output<String> gitUrl() {
        return this.gitUrl;
    }

    /**
     * Specifies the name of the git repository.
     * 
     */
    @Import(name="repositoryName", required=true)
    private Output<String> repositoryName;

    /**
     * @return Specifies the name of the git repository.
     * 
     */
    public Output<String> repositoryName() {
        return this.repositoryName;
    }

    /**
     * Specifies the root folder within the repository. Set to `/` for the top level.
     * 
     * &gt; **Note:** You must log in to the Data Factory management UI to complete the authentication to the GitHub repository.
     * 
     */
    @Import(name="rootFolder", required=true)
    private Output<String> rootFolder;

    /**
     * @return Specifies the root folder within the repository. Set to `/` for the top level.
     * 
     * &gt; **Note:** You must log in to the Data Factory management UI to complete the authentication to the GitHub repository.
     * 
     */
    public Output<String> rootFolder() {
        return this.rootFolder;
    }

    private FactoryGithubConfigurationArgs() {}

    private FactoryGithubConfigurationArgs(FactoryGithubConfigurationArgs $) {
        this.accountName = $.accountName;
        this.branchName = $.branchName;
        this.gitUrl = $.gitUrl;
        this.repositoryName = $.repositoryName;
        this.rootFolder = $.rootFolder;
    }

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

    public static final class Builder {
        private FactoryGithubConfigurationArgs $;

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

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

        /**
         * @param accountName Specifies the GitHub account name.
         * 
         * @return builder
         * 
         */
        public Builder accountName(Output<String> accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName Specifies the GitHub account name.
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param branchName Specifies the branch of the repository to get code from.
         * 
         * @return builder
         * 
         */
        public Builder branchName(Output<String> branchName) {
            $.branchName = branchName;
            return this;
        }

        /**
         * @param branchName Specifies the branch of the repository to get code from.
         * 
         * @return builder
         * 
         */
        public Builder branchName(String branchName) {
            return branchName(Output.of(branchName));
        }

        /**
         * @param gitUrl Specifies the GitHub Enterprise host name. For example: &lt;https://github.mydomain.com&gt;. Use &lt;https://github.com&gt; for open source repositories.
         * 
         * @return builder
         * 
         */
        public Builder gitUrl(Output<String> gitUrl) {
            $.gitUrl = gitUrl;
            return this;
        }

        /**
         * @param gitUrl Specifies the GitHub Enterprise host name. For example: &lt;https://github.mydomain.com&gt;. Use &lt;https://github.com&gt; for open source repositories.
         * 
         * @return builder
         * 
         */
        public Builder gitUrl(String gitUrl) {
            return gitUrl(Output.of(gitUrl));
        }

        /**
         * @param repositoryName Specifies the name of the git repository.
         * 
         * @return builder
         * 
         */
        public Builder repositoryName(Output<String> repositoryName) {
            $.repositoryName = repositoryName;
            return this;
        }

        /**
         * @param repositoryName Specifies the name of the git repository.
         * 
         * @return builder
         * 
         */
        public Builder repositoryName(String repositoryName) {
            return repositoryName(Output.of(repositoryName));
        }

        /**
         * @param rootFolder Specifies the root folder within the repository. Set to `/` for the top level.
         * 
         * &gt; **Note:** You must log in to the Data Factory management UI to complete the authentication to the GitHub repository.
         * 
         * @return builder
         * 
         */
        public Builder rootFolder(Output<String> rootFolder) {
            $.rootFolder = rootFolder;
            return this;
        }

        /**
         * @param rootFolder Specifies the root folder within the repository. Set to `/` for the top level.
         * 
         * &gt; **Note:** You must log in to the Data Factory management UI to complete the authentication to the GitHub repository.
         * 
         * @return builder
         * 
         */
        public Builder rootFolder(String rootFolder) {
            return rootFolder(Output.of(rootFolder));
        }

        public FactoryGithubConfigurationArgs build() {
            $.accountName = Objects.requireNonNull($.accountName, "expected parameter 'accountName' to be non-null");
            $.branchName = Objects.requireNonNull($.branchName, "expected parameter 'branchName' to be non-null");
            $.gitUrl = Objects.requireNonNull($.gitUrl, "expected parameter 'gitUrl' to be non-null");
            $.repositoryName = Objects.requireNonNull($.repositoryName, "expected parameter 'repositoryName' to be non-null");
            $.rootFolder = Objects.requireNonNull($.rootFolder, "expected parameter 'rootFolder' to be non-null");
            return $;
        }
    }

}
