Skip to content

Commit

Permalink
Merge pull request #43 from cake-contrib/develop
Browse files Browse the repository at this point in the history
v0.10.0
  • Loading branch information
Erik van Brakel authored Aug 13, 2018
2 parents 461f730 + e3f2217 commit af4f7ef
Show file tree
Hide file tree
Showing 10 changed files with 162 additions and 15 deletions.
117 changes: 117 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#!/usr/bin/env bash

##########################################################################
# This is the Cake bootstrapper script for Linux and OS X.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################

# Define directories.
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
TOOLS_DIR=$SCRIPT_DIR/tools
ADDINS_DIR=$TOOLS_DIR/Addins
MODULES_DIR=$TOOLS_DIR/Modules
NUGET_EXE=$TOOLS_DIR/nuget.exe
CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe
PACKAGES_CONFIG=$TOOLS_DIR/packages.config
PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum
ADDINS_PACKAGES_CONFIG=$ADDINS_DIR/packages.config
MODULES_PACKAGES_CONFIG=$MODULES_DIR/packages.config

# Define md5sum or md5 depending on Linux/OSX
MD5_EXE=
if [[ "$(uname -s)" == "Darwin" ]]; then
MD5_EXE="md5 -r"
else
MD5_EXE="md5sum"
fi

# Define default arguments.
SCRIPT="setup.cake"
CAKE_ARGUMENTS=()

# Parse arguments.
for i in "$@"; do
case $1 in
-s|--script) SCRIPT="$2"; shift ;;
--) shift; CAKE_ARGUMENTS+=("$@"); break ;;
*) CAKE_ARGUMENTS+=("$1") ;;
esac
shift
done

# Make sure the tools folder exist.
if [ ! -d "$TOOLS_DIR" ]; then
mkdir "$TOOLS_DIR"
fi

# Make sure that packages.config exist.
if [ ! -f "$TOOLS_DIR/packages.config" ]; then
echo "Downloading packages.config..."
curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages
if [ $? -ne 0 ]; then
echo "An error occurred while downloading packages.config."
exit 1
fi
fi

# Download NuGet if it does not exist.
if [ ! -f "$NUGET_EXE" ]; then
echo "Downloading NuGet..."
curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
if [ $? -ne 0 ]; then
echo "An error occurred while downloading nuget.exe."
exit 1
fi
fi

# Restore tools from NuGet.
pushd "$TOOLS_DIR" >/dev/null
if [ ! -f "$PACKAGES_CONFIG_MD5" ] || [ "$( cat "$PACKAGES_CONFIG_MD5" | sed 's/\r$//' )" != "$( $MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' )" ]; then
find . -type d ! -name . ! -name 'Cake.Bakery' | xargs rm -rf
fi

mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet tools."
exit 1
fi

$MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' >| "$PACKAGES_CONFIG_MD5"

popd >/dev/null

# Restore addins from NuGet.
if [ -f "$ADDINS_PACKAGES_CONFIG" ]; then
pushd "$ADDINS_DIR" >/dev/null

mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet addins."
exit 1
fi

popd >/dev/null
fi

# Restore modules from NuGet.
if [ -f "$MODULES_PACKAGES_CONFIG" ]; then
pushd "$MODULES_DIR" >/dev/null

mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet modules."
exit 1
fi

popd >/dev/null
fi

# Make sure that Cake has been installed.
if [ ! -f "$CAKE_EXE" ]; then
echo "Could not find Cake.exe at '$CAKE_EXE'."
exit 1
fi

# Start Cake
exec mono "$CAKE_EXE" $SCRIPT "${CAKE_ARGUMENTS[@]}"
4 changes: 2 additions & 2 deletions nuspec/nuget/Cake.Terraform.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
<tags>Cake, Script, Build, Terraform, Hashicorp</tags>
</metadata>
<files>
<file src="net45\Cake.Terraform.dll" target="lib\net45" />
<file src="net45\Cake.Terraform.pdb" target="lib\net45" />
<file src="net461\Cake.Terraform.dll" target="lib\net461" />
<file src="net461\Cake.Terraform.pdb" target="lib\net461" />
<file src="netstandard1.6\Cake.Terraform.dll" target="lib\netstandard1.6" />
<file src="netstandard1.6\Cake.Terraform.pdb" target="lib\netstandard1.6" />
</files>
Expand Down
2 changes: 1 addition & 1 deletion setup.cake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#load nuget:https://www.myget.org/F/cake-contrib/api/v2?package=Cake.Recipe&prerelease
#load nuget:https://www.myget.org/F/cake-contrib/api/v2?package=Cake.Recipe&version=0.3.0-unstable0371

Environment.SetVariableNames();

Expand Down
6 changes: 3 additions & 3 deletions src/Cake.Terraform.Tests/Cake.Terraform.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net45</TargetFrameworks>
<TargetFrameworks>net461</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Cake.Core" Version="0.19.3" />
<PackageReference Include="Cake.Testing" Version="0.19.3" />
<PackageReference Include="Cake.Core" Version="0.22.0" />
<PackageReference Include="Cake.Testing" Version="0.22.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
Expand Down
16 changes: 15 additions & 1 deletion src/Cake.Terraform.Tests/TerraformApplyTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public void Should_throw_if_process_has_a_non_zero_exit_code()
[Fact]
public void Should_find_linux_executable()
{
var fixture = new TerraformPlanFixture(PlatformFamily.Linux);
var fixture = new TerraformApplyFixture(PlatformFamily.Linux);
fixture.Environment.Platform.Family = PlatformFamily.Linux;


Expand Down Expand Up @@ -115,6 +115,20 @@ public void Should_set_input_variables_file()

Assert.Contains("-var-file \"./aws-creds.json\" -var \"access_key=foo\" -var \"secret_key=bar\"", result.Args);
}

[Fact]
public void Should_Append_Auto_Approve_When_AutoApprove_Is_True()
{
var fixture = new TerraformApplyFixture {
Settings = new TerraformApplySettings {
AutoApprove = true
}
};

var result = fixture.Run();

Assert.Contains("-auto-approve", result.Args);
}
}
}
}
4 changes: 2 additions & 2 deletions src/Cake.Terraform/Cake.Terraform.csproj
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net45;netstandard1.6</TargetFrameworks>
<TargetFrameworks>net461;netstandard1.6</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Cake.Core">
<Version>0.19.3</Version>
<Version>0.22.0</Version>
</PackageReference>
</ItemGroup>

Expand Down
15 changes: 14 additions & 1 deletion src/Cake.Terraform/TerraformApplyRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,20 @@ public TerraformApplyRunner(IFileSystem fileSystem, ICakeEnvironment environment

public void Run(TerraformApplySettings settings)
{
var builder = new ProcessArgumentBuilder().Append("apply");
var builder = new ProcessArgumentBuilder()
.Append("apply");

// Order of AutoApprove and Plan are important.
if (settings.AutoApprove)
{
builder.Append("-auto-approve");
}

// Use Plan if it exists.
if (settings.Plan != null)
{
builder.Append(settings.Plan.FullPath);
}

if (!string.IsNullOrEmpty(settings.InputVariablesFile))
{
Expand Down
6 changes: 6 additions & 0 deletions src/Cake.Terraform/TerraformApplySettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,11 @@ public class TerraformApplySettings : TerraformSettings
/// https://www.terraform.io/docs/configuration/variables.html#variable-files
/// </summary>
public string InputVariablesFile { get; set; }

/// <summary>
/// Skip interactive approval of plan before applying.
/// https://www.terraform.io/docs/commands/apply.html#auto-approve
/// </summary>
public bool AutoApprove { get; set; }
}
}
5 changes: 1 addition & 4 deletions src/Cake.Terraform/TerraformRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@ protected override string GetToolName()

protected override IEnumerable<string> GetToolExecutableNames()
{

return new [] { _platform.IsUnix() ? "terraform" : "terraform.exe" };
return new[] { _platform.IsUnix() ? "terraform" : "terraform.exe" };
}


}
}
2 changes: 1 addition & 1 deletion tools/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Cake" version="0.18.0" />
<package id="Cake" version="0.23.0" />
</packages>

0 comments on commit af4f7ef

Please sign in to comment.