package com.atlassian.bitbucket.scm.git.command.clone;

import com.atlassian.bitbucket.scm.Command;
import com.atlassian.bitbucket.scm.git.command.GitCommandBuilderSupport;

import javax.annotation.Nonnull;
import java.io.File;

public interface GitCloneBuilder extends GitCommandBuilderSupport<GitCloneBuilder> {

    @Nonnull
    Command<?> build();

    /**
     * The optional name of a branch to checkout the cloned repository on.
     * <p>
     * NOTE: This <i>must</i> be a branch, Git clone does not accept qualified refs.
     *
     * @param value branch name
     * @return {@code this}
     */
    @Nonnull
    GitCloneBuilder branch(String value);

    @Nonnull
    GitCloneBuilder checkout(boolean value);

    @Nonnull
    GitCloneBuilder directory(File value);

    @Nonnull
    GitCloneBuilder directory(String value);

    @Nonnull
    GitCloneBuilder origin(File value);

    @Nonnull
    GitCloneBuilder origin(String origin);

    @Nonnull
    GitCloneBuilder quiet(boolean value);

    @Nonnull
    GitCloneBuilder shared(boolean value);
}
