Skip to content

Commit

Permalink
- Added more test to PaketPack.
Browse files Browse the repository at this point in the history
- Added PaketPush unit tests.
- Added comments to fix SA warnings.
- Cleaned up code to fix resharper warnings.
- Fixed buildconfig and templatefile PaketPack bugs.
  • Loading branch information
larzw committed Nov 29, 2016
1 parent 39fa6e0 commit a231efd
Show file tree
Hide file tree
Showing 11 changed files with 604 additions and 43 deletions.
43 changes: 40 additions & 3 deletions Source/Cake.Paket.Addin/Pack/PaketPackSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,73 @@ namespace Cake.Paket.Addin.Pack
{
/// <summary>
/// Contains settings used by <see cref="PaketPacker"/>.
/// See <see href="https://fsprojects.github.io/Paket/paket-pack.html">Paket Pack</see> for more details.
/// </summary>
public sealed class PaketPackSettings : ToolSettings
{
/// <summary>
/// Gets or sets version of the package.
/// Gets or sets buildconfig.
/// </summary>
public string Version { get; set; }

public string BuildConfig { get; set; }

/// <summary>
/// Gets or sets buildplatform.
/// </summary>
public string BuildPlatform { get; set; }

/// <summary>
/// Gets or sets version.
/// </summary>
public string Version { get; set; }

/// <summary>
/// Gets or sets templatefile.
/// </summary>
public string TemplateFile { get; set; }

/// <summary>
/// Gets or sets exclude.
/// </summary>
public string Exclude { get; set; }

/// <summary>
/// Gets or sets specific-version.
/// </summary>
public string SpecificVersion { get; set; }

/// <summary>
/// Gets or sets releaseNotes.
/// </summary>
public string ReleaseNotes { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to enable lock-dependencies.
/// </summary>
public bool LockDependencies { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to enable minimum-from-lock-file.
/// </summary>
public bool MinimumFromLockFile { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to enable pin-project-references.
/// </summary>
public bool PinProjectReferences { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to enable symbols.
/// </summary>
public bool Symbols { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to enable include-referenced-projects.
/// </summary>
public bool IncludeReferencedProjects { get; set; }

/// <summary>
/// Gets or sets project-url.
/// </summary>
public string ProjectUrl { get; set; }
}
}
35 changes: 21 additions & 14 deletions Source/Cake.Paket.Addin/Pack/PaketPacker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,36 +52,43 @@ private ProcessArgumentBuilder GetArguments(DirectoryPath output, PaketPackSetti
var builder = new ProcessArgumentBuilder();
builder.Append("pack");

// Output directory
// output
builder.Append("output");
var outputDirectory = output.MakeAbsolute(Environment).FullPath;
if (!string.IsNullOrWhiteSpace(outputDirectory))
{
builder.AppendQuoted(output.MakeAbsolute(Environment).FullPath);
}

// Version
if (!string.IsNullOrWhiteSpace(settings.Version))
{
builder.Append("version");
builder.AppendQuoted(settings.Version);
}

// BuildConfig
// buildconfig
if (!string.IsNullOrWhiteSpace(settings.BuildConfig))
{
builder.Append("buildConfig");
builder.Append("buildconfig");
builder.AppendQuoted(settings.BuildConfig);
}

// BuildPlatform
// buildplatform
if (!string.IsNullOrWhiteSpace(settings.BuildPlatform))
{
builder.Append("buildplatform");
builder.AppendQuoted(settings.BuildPlatform);
}

// Exclude
// templatefile
if (!string.IsNullOrWhiteSpace(settings.TemplateFile))
{
builder.Append("templatefile");
builder.AppendQuoted(settings.TemplateFile);
}

// version
if (!string.IsNullOrWhiteSpace(settings.Version))
{
builder.Append("version");
builder.AppendQuoted(settings.Version);
}

// exclude
if (!string.IsNullOrWhiteSpace(settings.Exclude))
{
builder.Append("exclude");
Expand All @@ -102,7 +109,7 @@ private ProcessArgumentBuilder GetArguments(DirectoryPath output, PaketPackSetti
builder.AppendQuoted(settings.ReleaseNotes);
}

// LockDependencies
// lock-dependencies
if (settings.LockDependencies)
{
builder.Append("lock-dependencies");
Expand Down Expand Up @@ -132,7 +139,7 @@ private ProcessArgumentBuilder GetArguments(DirectoryPath output, PaketPackSetti
builder.Append("include-referenced-projects");
}

// ProjectUrl
// project-url
if (!string.IsNullOrWhiteSpace(settings.ProjectUrl))
{
builder.Append("project-url");
Expand Down
24 changes: 12 additions & 12 deletions Source/Cake.Paket.Addin/PaketAliases.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,7 @@ public static class PaketAliases
[CakeNamespaceImport("Cake.Paket.Addin.Pack")]
public static void PaketPack(this ICakeContext context, DirectoryPath output, PaketPackSettings settings)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}

var resolver = new PaketToolResolver(context.FileSystem, context.Environment, context.Tools, context.ProcessRunner, context.Arguments, context.Log);
var resolver = GetPaketToolResolver(context);
var packer = new PaketPacker(context.FileSystem, context.Environment, context.Tools, context.ProcessRunner, resolver);
packer.Pack(output, settings);
}
Expand Down Expand Up @@ -80,18 +75,23 @@ public static void PaketPush(this ICakeContext context, FilePath filePath, Paket
[CakeNamespaceImport("Cake.Paket.Addin.Push")]
public static void PaketPush(this ICakeContext context, IEnumerable<FilePath> filePaths, PaketPushSettings settings)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}

var resolver = new PaketToolResolver(context.FileSystem, context.Environment, context.Tools, context.ProcessRunner, context.Arguments, context.Log);
var resolver = GetPaketToolResolver(context);
var packer = new PaketPusher(context.FileSystem, context.Environment, context.Tools, context.ProcessRunner, resolver);

foreach (var filePath in filePaths)
{
packer.Push(filePath, settings);
}
}

private static PaketToolResolver GetPaketToolResolver(ICakeContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}

return new PaketToolResolver(context.FileSystem, context.Environment, context.Tools, context.ProcessRunner, context.Arguments, context.Log);
}
}
}
13 changes: 13 additions & 0 deletions Source/Cake.Paket.Addin/Push/PaketPushSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,25 @@

namespace Cake.Paket.Addin.Push
{
/// <summary>
/// Contains settings used by <see cref="PaketPusher"/>.
/// See <see href="https://fsprojects.github.io/Paket/paket-push.html">Paket Push</see> for more details.
/// </summary>
public sealed class PaketPushSettings : ToolSettings
{
/// <summary>
/// Gets or sets url.
/// </summary>
public string Url { get; set; }

/// <summary>
/// Gets or sets apikey.
/// </summary>
public string ApiKey { get; set; }

/// <summary>
/// Gets or sets endpoint.
/// </summary>
public string EndPoint { get; set; }
}
}
13 changes: 12 additions & 1 deletion Source/Cake.Paket.Addin/Push/PaketPusher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,19 @@

namespace Cake.Paket.Addin.Push
{
/// <summary>
/// The paket pusher.
/// </summary>
internal sealed class PaketPusher : PaketTool<PaketPushSettings>
{
/// <summary>
/// Initializes a new instance of the <see cref="PaketPusher"/> class.
/// </summary>
/// <param name="fileSystem">The file system.</param>
/// <param name="environment">The enviornment.</param>
/// <param name="tools">The tool locator.</param>
/// <param name="processRunner">The process runner.</param>
/// <param name="resolver">The paket tool resolver.</param>
public PaketPusher(IFileSystem fileSystem, ICakeEnvironment environment, IToolLocator tools, IProcessRunner processRunner, IPaketToolResolver resolver)
: base(fileSystem, environment, processRunner, tools, resolver)
{
Expand All @@ -19,7 +30,7 @@ public PaketPusher(IFileSystem fileSystem, ICakeEnvironment environment, IToolLo
/// <summary>
/// Pushes NuGet package defined by the file path for the given settings.
/// </summary>
/// <param name="filePath">The NuGet package file path</param>
/// <param name="filePath">The NuGet package file path.</param>
/// <param name="settings">The settings.</param>
internal void Push(FilePath filePath, PaketPushSettings settings)
{
Expand Down

0 comments on commit a231efd

Please sign in to comment.