diff --git a/.appveyor.yml b/.appveyor.yml
index 2b5f541..0d21fc4 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -27,4 +27,4 @@ branches:
# Build Cache #
#---------------------------------#
cache:
-- tools -> setup.cake
\ No newline at end of file
+- tools -> recipe.cake
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..d657fb3
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,3 @@
+# These owners will be the default owners for everything in the repo and
+# will be requested for review when someone opens a pull request.
+* @cake-contrib/team-bbt @jokay
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index ba4e60c..fe6aca3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-# Project specific
+# Project specific
BuildArtifacts/
@@ -304,4 +304,6 @@ __pycache__/
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
-# End of https://www.gitignore.io/api/cake,visualstudio
\ No newline at end of file
+# End of https://www.gitignore.io/api/cake,visualstudio
+
+.dotnet
diff --git a/README.md b/README.md
index 982a302..8cabdad 100644
--- a/README.md
+++ b/README.md
@@ -28,11 +28,11 @@ This addin for the Cake Build Automation System allows you to run [markdownlint]
- [Documentation](https://cake-contrib.github.io/Cake.Markdownlint)
-## Chat Room
+## Discussion
-Come join in the conversation about this addin in our Gitter Chat Room.
+For questions and to discuss ideas & feature requests, use the [GitHub discussions on the Cake GitHub repository](https://github.com/cake-build/cake/discussions), under the [Extension Q&A](https://github.com/cake-build/cake/discussions/categories/extension-q-a) category.
-[![Join the chat at https://gitter.im/cake-contrib/Lobby](https://badges.gitter.im/cake-contrib/Lobby.svg)](https://gitter.im/cake-contrib/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Join in the discussion on the Cake repository](https://img.shields.io/badge/GitHub-Discussions-green?logo=github)](https://github.com/cake-build/cake/discussions)
## Contributing
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 30c891c..29d11b3 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -6,6 +6,8 @@ trigger:
pr:
- develop
+- release/*
+- hotfix/*
jobs:
- job: Windows
@@ -34,5 +36,17 @@ jobs:
vmImage: 'ubuntu-16.04'
steps:
- bash: |
- ./build.sh --verbosity Diagnostic
- displayName: 'Cake Build'
\ No newline at end of file
+ mono --version
+ displayName: 'Show Mono version'
+ # Use Mono 6.6.0 until Cake.Recipe is compatible with Cake 0.37.0 which fixes this issue
+ - bash: |
+ sudo apt-get remove mono-complete mono-devel mono-gac mono-runtime-common monodoc-manual \
+ && sudo apt-get autoremove \
+ && echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial/snapshots/6.6.0.161 main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list \
+ && sudo apt-get update \
+ && sudo apt-get install -y --no-install-recommends mono-complete \
+ && mono --version
+ displayName: 'Downgrade Mono to 6.6.0'
+ - bash: |
+ ./build.sh --verbosity diagnostic
+ displayName: 'Cake Build'
\ No newline at end of file
diff --git a/build.ps1 b/build.ps1
index 22319ee..8a28de1 100644
--- a/build.ps1
+++ b/build.ps1
@@ -5,11 +5,14 @@
##########################################################################
<#
+
.SYNOPSIS
This is a Powershell script to bootstrap a Cake build.
+
.DESCRIPTION
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
and execute your Cake build script with the parameters you provide.
+
.PARAMETER Script
The build script to execute.
.PARAMETER Target
@@ -18,32 +21,36 @@ The build script target to run.
The build configuration to use.
.PARAMETER Verbosity
Specifies the amount of information to be displayed.
+.PARAMETER ShowDescription
+Shows description about tasks.
+.PARAMETER DryRun
+Performs a dry run.
.PARAMETER Experimental
-Tells Cake to use the latest Roslyn release.
-.PARAMETER WhatIf
-Performs a dry run of the build script.
-No tasks will be executed.
+Uses the nightly builds of the Roslyn script engine.
.PARAMETER Mono
-Tells Cake to use the Mono scripting engine.
+Uses the Mono compiler rather than the Roslyn script engine.
.PARAMETER SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
+
.LINK
https://cakebuild.net
+
#>
[CmdletBinding()]
Param(
- [string]$Script = "setup.cake",
+ [string]$Script = "recipe.cake",
[string]$Target = "Default",
[ValidateSet("Release", "Debug")]
[string]$Configuration = "Release",
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity = "Verbose",
+ [switch]$ShowDescription,
+ [Alias("WhatIf", "Noop")]
+ [switch]$DryRun,
[switch]$Experimental,
- [Alias("DryRun","Noop")]
- [switch]$WhatIf,
[switch]$Mono,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
@@ -75,6 +82,15 @@ function MD5HashFile([string] $filePath)
}
}
+function GetProxyEnabledWebClient
+{
+ $wc = New-Object System.Net.WebClient
+ $proxy = [System.Net.WebRequest]::GetSystemWebProxy()
+ $proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
+ $wc.Proxy = $proxy
+ return $wc
+}
+
Write-Host "Preparing to run build script..."
if(!$PSScriptRoot){
@@ -82,31 +98,15 @@ if(!$PSScriptRoot){
}
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
+$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins"
+$MODULES_DIR = Join-Path $TOOLS_DIR "Modules"
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
-
-# Should we use mono?
-$UseMono = "";
-if($Mono.IsPresent) {
- Write-Verbose -Message "Using the Mono based scripting engine."
- $UseMono = "-mono"
-}
-
-# Should we use the new Roslyn?
-$UseExperimental = "";
-if($Experimental.IsPresent -and !($Mono.IsPresent)) {
- Write-Verbose -Message "Using experimental version of Roslyn."
- $UseExperimental = "-experimental"
-}
-
-# Is this a dry run?
-$UseDryRun = "";
-if($WhatIf.IsPresent) {
- $UseDryRun = "-dryrun"
-}
+$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config"
+$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config"
# Make sure tools folder exists
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
@@ -116,8 +116,10 @@ if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
- Write-Verbose -Message "Downloading packages.config..."
- try { (New-Object System.Net.WebClient).DownloadFile("http://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
+ Write-Verbose -Message "Downloading packages.config..."
+ try {
+ $wc = GetProxyEnabledWebClient
+ $wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
Throw "Could not download packages.config."
}
}
@@ -125,7 +127,7 @@ if (!(Test-Path $PACKAGES_CONFIG)) {
# Try find NuGet.exe in path if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
- $existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }
+ $existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
@@ -137,7 +139,8 @@ if (!(Test-Path $NUGET_EXE)) {
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
- (New-Object System.Net.WebClient).DownloadFile($NUGET_URL, $NUGET_EXE)
+ $wc = GetProxyEnabledWebClient
+ $wc.DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
@@ -160,16 +163,51 @@ if(-Not $SkipToolPackageRestore.IsPresent) {
}
Write-Verbose -Message "Restoring tools from NuGet..."
- $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -PreRelease -OutputDirectory `"$TOOLS_DIR`" -Source https://www.myget.org/F/cake/api/v3/index.json"
+ $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
- Throw "An error occured while restoring NuGet tools."
+ Throw "An error occurred while restoring NuGet tools."
}
else
{
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
}
Write-Verbose -Message ($NuGetOutput | out-string)
+
+ Pop-Location
+}
+
+# Restore addins from NuGet
+if (Test-Path $ADDINS_PACKAGES_CONFIG) {
+ Push-Location
+ Set-Location $ADDINS_DIR
+
+ Write-Verbose -Message "Restoring addins from NuGet..."
+ $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`""
+
+ if ($LASTEXITCODE -ne 0) {
+ Throw "An error occurred while restoring NuGet addins."
+ }
+
+ Write-Verbose -Message ($NuGetOutput | out-string)
+
+ Pop-Location
+}
+
+# Restore modules from NuGet
+if (Test-Path $MODULES_PACKAGES_CONFIG) {
+ Push-Location
+ Set-Location $MODULES_DIR
+
+ Write-Verbose -Message "Restoring modules from NuGet..."
+ $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`""
+
+ if ($LASTEXITCODE -ne 0) {
+ Throw "An error occurred while restoring NuGet modules."
+ }
+
+ Write-Verbose -Message ($NuGetOutput | out-string)
+
Pop-Location
}
@@ -178,7 +216,20 @@ if (!(Test-Path $CAKE_EXE)) {
Throw "Could not find Cake.exe at $CAKE_EXE"
}
+
+
+# Build Cake arguments
+$cakeArguments = @("$Script");
+if ($Target) { $cakeArguments += "-target=$Target" }
+if ($Configuration) { $cakeArguments += "-configuration=$Configuration" }
+if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" }
+if ($ShowDescription) { $cakeArguments += "-showdescription" }
+if ($DryRun) { $cakeArguments += "-dryrun" }
+if ($Experimental) { $cakeArguments += "-experimental" }
+if ($Mono) { $cakeArguments += "-mono" }
+$cakeArguments += $ScriptArgs
+
# Start Cake
Write-Host "Running build script..."
-Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs"
+&$CAKE_EXE $cakeArguments
exit $LASTEXITCODE
\ No newline at end of file
diff --git a/build.sh b/build.sh
index 0cab5b8..4b690aa 100755
--- a/build.sh
+++ b/build.sh
@@ -17,6 +17,7 @@ CAKE_EXE=$TOOLS_DIR/Cake.$CAKE_VERSION/Cake.exe
export CAKE_SETTINGS_SKIPVERIFICATION='true'
# Define default arguments.
+SCRIPT="recipe.cake"
TARGET="Default"
CONFIGURATION="Release"
VERBOSITY="verbose"
@@ -99,4 +100,4 @@ fi
###########################################################################
# Start Cake
-exec mono "$CAKE_EXE" setup.cake --verbosity=$VERBOSITY --configuration=$CONFIGURATION --target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}"
+exec mono "$CAKE_EXE" $SCRIPT --verbosity=$VERBOSITY --configuration=$CONFIGURATION --target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}"
diff --git a/nuspec/nuget/Cake.Markdownlint.nuspec b/nuspec/nuget/Cake.Markdownlint.nuspec
index 326106f..806edac 100644
--- a/nuspec/nuget/Cake.Markdownlint.nuspec
+++ b/nuspec/nuget/Cake.Markdownlint.nuspec
@@ -11,13 +11,13 @@
This addin for Cake allows you to lint Markdown files using markdownlint.
MIT
- http://cake-contrib.github.io/Cake.Markdownlint/
+ https://cakebuild.net/extensions/cake-markdownlint/
https://cdn.jsdelivr.net/gh/cake-contrib/graphics@a5cf0f881c390650144b2243ae551d5b9f836196/png/cake-contrib-medium.png
false
Copyright © BBT Software AG and contributors
Cake Script Linting Markdown Markdownlint
- https://github.com/cake-contrib/Cake.Markdownlint/releases/tag/0.3.0
+ https://github.com/cake-contrib/Cake.Markdownlint/releases/tag/1.0.0
diff --git a/setup.cake b/recipe.cake
similarity index 90%
rename from setup.cake
rename to recipe.cake
index 7fd69a6..d518be6 100644
--- a/setup.cake
+++ b/recipe.cake
@@ -3,7 +3,7 @@
Environment.SetVariableNames();
BuildParameters.SetParameters(
- context: Context,
+ context: Context,
buildSystem: BuildSystem,
sourceDirectoryPath: "./src",
title: "Cake.Markdownlint",
@@ -18,7 +18,7 @@ BuildParameters.PrintParameters(Context);
ToolSettings.SetToolSettings(
context: Context,
dupFinderExcludePattern: new string[] { BuildParameters.RootDirectoryPath + "/src/Cake.Markdownlint.Tests/*.cs" },
- testCoverageFilter: "+[*]* -[xunit.*]* -[Cake.Core]* -[Cake.Testing]* -[*.Tests]* -[Shouldly]*",
+ testCoverageFilter: "+[*]* -[xunit.*]* -[Cake.Core]* -[Cake.Testing]* -[*.Tests]* -[Shouldly]* -[DiffEngine]* -[EmptyFiles]*",
testCoverageExcludeByAttribute: "*.ExcludeFromCodeCoverage*",
testCoverageExcludeByFile: "*/*Designer.cs;*/*.g.cs;*/*.g.i.cs");
diff --git a/src/Cake.Markdownlint.Tests/Cake.Markdownlint.Tests.csproj b/src/Cake.Markdownlint.Tests/Cake.Markdownlint.Tests.csproj
index ad4b31f..ef9b779 100644
--- a/src/Cake.Markdownlint.Tests/Cake.Markdownlint.Tests.csproj
+++ b/src/Cake.Markdownlint.Tests/Cake.Markdownlint.Tests.csproj
@@ -1,7 +1,7 @@
- netcoreapp2.0
+ netcoreapp2.1
false
Cake.Markdownlint
Copyright © BBT Software AG and contributors
@@ -15,13 +15,13 @@
-
-
-
-
+
+
+
+
-
+
diff --git a/src/Cake.Markdownlint/Cake.Markdownlint.csproj b/src/Cake.Markdownlint/Cake.Markdownlint.csproj
index 97c885c..55a6b25 100644
--- a/src/Cake.Markdownlint/Cake.Markdownlint.csproj
+++ b/src/Cake.Markdownlint/Cake.Markdownlint.csproj
@@ -23,10 +23,10 @@
-
+
all
-
+
all