package com.atlassian.bitbucket.mesh.git.builder.packobjects;

import com.atlassian.bitbucket.mesh.git.builder.GitProcessBuilderSupport;

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

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

    @Nonnull
    GitPackObjectsBuilder all(boolean value);

    @Nonnull
    GitPackObjectsBuilder baseName(@Nullable String value);

    @Nonnull
    GitPackObjectsBuilder deltaBaseOffset(boolean value);

    @Nonnull
    GitPackObjectsBuilder incremental(boolean value);

    @Nonnull
    GitPackObjectsBuilder local(boolean value);

    @Nonnull
    GitPackObjectsBuilder nonEmpty(boolean value);

    @Nonnull
    GitPackObjectsBuilder reuseDelta(boolean b);

    @Nonnull
    GitPackObjectsBuilder revs(boolean value);

    @Nonnull
    GitPackObjectsBuilder thin(boolean value);

    @Nonnull
    GitPackObjectsBuilder unpacked(boolean value);
}
