using LibGit2Sharp.Core;
using LibGit2Sharp.Handlers;
namespace LibGit2Sharp
{
///
/// Collection of parameters controlling Checkout behavior.
///
public sealed class CheckoutOptions : IConvertableToGitCheckoutOpts
{
///
/// Options controlling checkout behavior.
///
public CheckoutModifiers CheckoutModifiers { get; set; }
///
/// The flags specifying what conditions are
/// reported through the OnCheckoutNotify delegate.
///
public CheckoutNotifyFlags CheckoutNotifyFlags { get; set; }
///
/// Delegate to be called during checkout for files that match
/// desired filter specified with the NotifyFlags property.
///
public CheckoutNotifyHandler OnCheckoutNotify { get; set; }
/// Delegate through which checkout will notify callers of
/// certain conditions. The conditions that are reported is
/// controlled with the CheckoutNotifyFlags property.
public CheckoutProgressHandler OnCheckoutProgress { get; set; }
CheckoutStrategy IConvertableToGitCheckoutOpts.CheckoutStrategy
{
get
{
return CheckoutModifiers.HasFlag(CheckoutModifiers.Force) ?
CheckoutStrategy.GIT_CHECKOUT_FORCE : CheckoutStrategy.GIT_CHECKOUT_SAFE;
}
}
///
/// Generate a object with the delegates
/// hooked up to the native callbacks.
///
///
CheckoutCallbacks IConvertableToGitCheckoutOpts.GenerateCallbacks()
{
return CheckoutCallbacks.From(OnCheckoutProgress, OnCheckoutNotify);
}
}
}