Skip to content

Commit

Permalink
Merged PR 380: migrate library to .net standard, add package output a…
Browse files Browse the repository at this point in the history
…s nuget

+semver: minor

Related work items: #906
  • Loading branch information
knoxi committed Sep 29, 2020
1 parent 88b9f80 commit 0c32d35
Show file tree
Hide file tree
Showing 43 changed files with 739 additions and 368 deletions.
9 changes: 6 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -286,12 +286,15 @@ __pycache__/
*.btm.cs
*.odx.cs
*.xsd.cs
/SSDTDataMigrationPrototype/Scripts/RunPreScriptsGenerated.sql
/SSDTDataMigrationPrototype/Scripts/RunPostScriptsGenerated.sql
/SSDTDataMigrationPrototype/Scripts/RunReferenceDataScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample/Scripts/RunReferenceDataScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample/Scripts/RunPreScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample/Scripts/RunPostScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample.Build/Scripts/RunReferenceDataScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample.Build/Scripts/RunPreScriptsGenerated.sql
/Samples/CustomSSDTMigrationScripts.Sample.Build/Scripts/RunPostScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests/Scripts/RunReferenceDataScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests/Scripts/RunPreScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests/Scripts/RunPostScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests.Build/Scripts/RunReferenceDataScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests.Build/Scripts/RunPreScriptsGenerated.sql
/Tests/CustomSSDTMigrationScripts.Integration.Tests.Build/Scripts/RunPostScriptsGenerated.sql
107 changes: 41 additions & 66 deletions CustomSSDTMigrationScripts/CustomSSDTMigrationScripts.csproj
Original file line number Diff line number Diff line change
@@ -1,77 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0032D2D5-1950-4A66-8C07-0CD222EA5968}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CustomSSDTMigrationScripts</RootNamespace>
<AssemblyName>CustomSSDTMigrationScripts</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFramework>netstandard2.0</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PublishSingleFile>true</PublishSingleFile>
<AssemblyVersion>0.0.1.0</AssemblyVersion>
<FileVersion>0.0.1.0</FileVersion>
<Version>0.0.1.0</Version>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>

<PropertyGroup>
<Authors>4tecture GmbH</Authors>
<Company>4tecture GmbH</Company>
<Copyright>Copyright 2020 (c) 4tecture GmbH. All rights reserved.</Copyright>
<PackageId>4tecture.CustomSSDTMigrationScripts</PackageId>
<PackageProjectUrl>https://github.com/4tecture/SSDTDataMigration</PackageProjectUrl>
<RepositoryUrl>https://github.com/4tecture/SSDTDataMigration.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<Description>Custom SSDT Migration Scripts Extension</Description>
<Product>Custom SSDT Migration Scripts</Product>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>

<PropertyGroup>
<developmentDependency>true</developmentDependency>
</PropertyGroup>

<ItemGroup>
<Reference Include="Microsoft.Build.Tasks.v4.0" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<None Update="CustomSSDTMigrationScripts.props" Pack="true" PackagePath="\build\4tecture.CustomSSDTMigrationScripts.props">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

<ItemGroup>
<Compile Include="Constants\ScriptTypes.cs" />
<Compile Include="Constants\ScriptExecutionFilterMode.cs" />
<Compile Include="Constants\SqlSnippets.cs" />
<Compile Include="Helper\Logger.cs" />
<Compile Include="Provider\ISettingsProvider.cs" />
<Compile Include="Provider\JsonSettingsProvider.cs" />
<Compile Include="Settings\ScriptSettings.cs" />
<Compile Include="Settings\Settings.cs" />
<Compile Include="Tasks\ReferenceDataScriptTask.cs" />
<Compile Include="Tasks\PrePostScriptTaskBase.cs" />
<Compile Include="Tasks\PostScriptTask.cs" />
<Compile Include="Tasks\ScriptBaseTask.cs" />
<Compile Include="Tasks\PreScriptTask.cs" />
<Compile Include="Helper\TSqlHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Helper\Script.cs" />
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="16.6.0" />
<PackageReference Include="System.Text.Json" Version="4.7.2" />
</ItemGroup>

<ItemGroup>
<None Include="CustomSSDTMigrationScripts.props">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<None Include="$(OutputPath)\*.dll" Exclude="$(OutputPath)\*analyser*.dll;$(OutputPath)\*analysis*.dll">
<Pack>true</Pack>
<PackagePath>tools</PackagePath>
<IncludeInPackage>true</IncludeInPackage>
</None>
<None Include="$(OutputPath)\*.runtimeconfig.json">
<Pack>true</Pack>
<PackagePath>tools</PackagePath>
<IncludeInPackage>true</IncludeInPackage>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>11.0.2</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

</Project>
11 changes: 5 additions & 6 deletions CustomSSDTMigrationScripts/CustomSSDTMigrationScripts.props
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Tasks -->
<UsingTask TaskName="PreScriptTask" AssemblyFile="CustomSSDTMigrationScripts.dll"/>
<UsingTask TaskName="PostScriptTask" AssemblyFile="CustomSSDTMigrationScripts.dll"/>
<UsingTask TaskName="ReferenceDataScriptTask" AssemblyFile="CustomSSDTMigrationScripts.dll"/>
<UsingTask TaskName="PreScriptTask" AssemblyFile="..\tools\CustomSSDTMigrationScripts.dll" />
<UsingTask TaskName="PostScriptTask" AssemblyFile="..\tools\CustomSSDTMigrationScripts.dll" />
<UsingTask TaskName="ReferenceDataScriptTask" AssemblyFile="..\tools\CustomSSDTMigrationScripts.dll" />

<Target Name="AddCustomSSDTPreAndPostScripts" AfterTargets="BeforeBuild">
<PreScriptTask ProjectRootDirectory="$(MSBuildProjectDirectory)" />
<PostScriptTask ProjectRootDirectory="$(MSBuildProjectDirectory)" />
<ReferenceDataScriptTask ProjectRootDirectory="$(MSBuildProjectDirectory)" />
</Target>

</Project>
4 changes: 2 additions & 2 deletions CustomSSDTMigrationScripts/Helper/Logger.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Microsoft.Build.Utilities;
using System.Text;
using System.Text;
using Microsoft.Build.Utilities;

namespace CustomSSDTMigrationScripts
{
Expand Down
35 changes: 0 additions & 35 deletions CustomSSDTMigrationScripts/Properties/AssemblyInfo.cs

This file was deleted.

11 changes: 5 additions & 6 deletions CustomSSDTMigrationScripts/Provider/JsonSettingsProvider.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Newtonsoft.Json;
using System;
using System;
using System.IO;
using System.Linq;
using System.Text.Json;

namespace CustomSSDTMigrationScripts
{
Expand All @@ -27,19 +27,18 @@ public Settings GetSettings(string directory)
}
else if (settingFiles.Count() > 1)
{
var error = @"JsonSettingsProvider: Multiple settting files ssdt.migration.scripts.json found under the directory {directory} (recursively)";
var error = $"JsonSettingsProvider: Multiple setting files ssdt.migration.scripts.json found under the directory {directory} (recursively)";
throw new InvalidOperationException(error);
}
else
{
Logger.LogMessage($"JsonSettingsProvider: Found settings file {settingFiles.First()}");
var settingsContent = File.ReadAllText(settingFiles.First());
settings = JsonConvert.DeserializeObject<Settings>(settingsContent);
settings = JsonSerializer.Deserialize<Settings>(settingsContent);
Logger.LogMessage($"JsonSettingsProvider: Settings successfully deserialized.{Environment.NewLine}{settingsContent}");
}


return settings;
}
}
}
}
20 changes: 10 additions & 10 deletions CustomSSDTMigrationScripts/Settings/ScriptSettings.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace CustomSSDTMigrationScripts
{
public class ScriptSettings
{
[JsonProperty("ScriptBaseDirectory")]
[JsonPropertyName("ScriptBaseDirectory")]
public string ScriptBaseDirectory { get; set; }

[JsonProperty("ScriptNamePattern")]
[JsonPropertyName("ScriptNamePattern")]
public string ScriptNamePattern { get; set; }

[JsonProperty("ScriptRecursiveSearch")]
[JsonPropertyName("ScriptRecursiveSearch")]
public bool? ScriptRecursiveSearch { get; set; }

[JsonProperty("GeneratedScriptPath")]
[JsonPropertyName("GeneratedScriptPath")]
public string GeneratedScriptPath { get; set; }

[JsonProperty("ExecutionFilterMode")]
[JsonPropertyName("ExecutionFilterMode")]
public string ExecutionFilterMode { get; set; }

[JsonProperty("ExecutionFilterValue")]
[JsonPropertyName("ExecutionFilterValue")]
public string ExecutionFilterValue { get; set; }

[JsonProperty("TreatScriptNamePatternMismatchAsError")]
[JsonPropertyName("TreatScriptNamePatternMismatchAsError")]
public bool? TreatScriptNamePatternMismatchAsError { get; set; }

[JsonProperty("TreatHashMismatchAsError")]
[JsonPropertyName("TreatHashMismatchAsError")]
public bool? TreatHashMismatchAsError { get; set; }
}
}
}
12 changes: 7 additions & 5 deletions CustomSSDTMigrationScripts/Settings/Settings.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using System.Text.Json.Serialization;

namespace CustomSSDTMigrationScripts
{
Expand All @@ -11,11 +11,13 @@ public Settings()
ReferenceDataScripts = new ScriptSettings();
}

[JsonProperty("PreScripts")]
[JsonPropertyName("PreScripts")]
public ScriptSettings PreScripts { get; set; }
[JsonProperty("PostScripts")]

[JsonPropertyName("PostScripts")]
public ScriptSettings PostScripts { get; set; }
[JsonProperty("ReferenceDataScripts")]

[JsonPropertyName("ReferenceDataScripts")]
public ScriptSettings ReferenceDataScripts { get; set; }
}
}
}
14 changes: 11 additions & 3 deletions CustomSSDTMigrationScripts/Tasks/ScriptBaseTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace CustomSSDTMigrationScripts
public abstract class ScriptBaseTask : Microsoft.Build.Utilities.Task
{
private const string SQL_SCRIPT_EXTENSION = "sql";
private ISettingsProvider settingsProvider = new JsonSettingsProvider();
private readonly ISettingsProvider settingsProvider = new JsonSettingsProvider();
protected Settings settings;

public ScriptBaseTask()
Expand Down Expand Up @@ -89,12 +89,20 @@ private List<Script> FilterScriptsByExecutionMode(List<Script> scripts)
{
case ScriptExecutionFilterMode.FILTER_BY_COUNT:
var filterCount = int.Parse(CurrentScriptSettings.ExecutionFilterValue);
if (filterCount < 0) throw new ArgumentException($"Invalid execution filter value (count): {filterCount}");
if (filterCount < 0)
{
throw new ArgumentException($"Invalid execution filter value (count): {filterCount}");
}

scripts = scripts.OrderByDescending(s => s.OrderCriteria).Take(filterCount).ToList();
break;
case ScriptExecutionFilterMode.FILTER_BY_DAYS:
var filterDays = double.Parse(CurrentScriptSettings.ExecutionFilterValue);
if (filterDays < 0) throw new ArgumentException($"Invalid execution filter value (days): {filterDays}");
if (filterDays < 0)
{
throw new ArgumentException($"Invalid execution filter value (days): {filterDays}");
}

scripts = scripts.Where(s => DateTime.ParseExact(s.OrderCriteria, "yyyyMMddHHmmss", CultureInfo.InvariantCulture) >= DateTime.Now.AddDays(-filterDays).Date).ToList();
break;
case ScriptExecutionFilterMode.FILTER_BY_DATE:
Expand Down
1 change: 1 addition & 0 deletions GitVersion.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mode: Mainline
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
<Compile Include="ToolComponents.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="4tecture.ico" />
Expand All @@ -38,7 +39,7 @@
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUIExtension">
<HintPath>..\..\..\..\..\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll</HintPath>
<HintPath>C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
</ItemGroup>
Expand All @@ -48,11 +49,11 @@
<Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
</Target>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
Loading

0 comments on commit 0c32d35

Please sign in to comment.