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

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

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

/**
 * A type-safe builder for using the {@code git pack-objects} command.
 */
public interface GitPackObjectsBuilder extends GitCommandBuilderSupport<GitPackObjectsBuilder> {

    @Nonnull
    GitPackObjectsBuilder all(boolean value);

    @Nonnull
    GitPackObjectsBuilder baseName(@Nullable String value);

    @Nonnull
    GitPackObjectsBuilder incremental(boolean value);

    @Nonnull
    GitPackObjectsBuilder inputHandler(@Nullable CommandInputHandler inputHandler);

    @Nonnull
    GitPackObjectsBuilder local(boolean value);

    @Nonnull
    GitPackObjectsBuilder nonEmpty(boolean value);

    @Nonnull
    GitPackObjectsBuilder revs(boolean value);

    @Nonnull
    GitPackObjectsBuilder unpacked(boolean value);
}
