Skip to content

Commit

Permalink
Fix packaging in the build script
Browse files Browse the repository at this point in the history
  • Loading branch information
snikolayev committed Apr 30, 2017
1 parent ade6898 commit 118968c
Show file tree
Hide file tree
Showing 9 changed files with 129 additions and 30 deletions.
1 change: 0 additions & 1 deletion Common.props
Expand Up @@ -2,7 +2,6 @@

<PropertyGroup>
<VersionPrefix>1.0.0</VersionPrefix>
<DebugType>embedded</DebugType>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
Expand Down
17 changes: 9 additions & 8 deletions build.ps1
Expand Up @@ -39,10 +39,12 @@ $components = @{
}
}
package = @{
nuget = @{
id = 'NRules'
include = @('NRules.*')
}
nuget = @(
'NRules.RuleModel',
'NRules.Fluent',
'NRules.Runtime',
'NRules'
)
}
help = 'NRules.shfbproj'
};
Expand Down Expand Up @@ -81,10 +83,9 @@ $components = @{
}
}
package = @{
nuget = @{
id = 'NRules.Integration.Autofac'
include = @('NRules.Integration.Autofac.*')
}
nuget = @(
'NRules.Integration.Autofac'
)
}
};
'NRules.Integration' = @{
Expand Down
26 changes: 7 additions & 19 deletions default.ps1
Expand Up @@ -100,38 +100,26 @@ task Build -depends Compile, Test, ResetVersion -precondition { return $componen
}

task PackageNuGet -depends Build -precondition { return $component.ContainsKey('package') -and $component.package.ContainsKey('nuget') } {
$nuget = $component.package.nuget

Create-Directory $pkg_out_dir
Create-Directory $pkg_out_dir\$($nuget.id)\lib\net40

Copy-Item $packages_dir\$($nuget.id).dll.nuspec $pkg_out_dir\$($nuget.id)\$($nuget.id).nuspec -Force
Get-ChildItem "$binaries_dir\**" -Include $nuget.include -Exclude $nuget.exclude | Copy-Item -Destination $pkg_out_dir\$($nuget.id)\lib\net40 -Force

# Set the package version
$package = "$pkg_out_dir\$($nuget.id)\$($nuget.id).nuspec"
$nuspec = [xml](Get-Content $package)
$nuspec.package.metadata.version = $version
$nuspec | Select-Xml '//dependency' |% {
$_.Node.Version = $_.Node.Version -replace '\$version\$', "$version"
foreach ($package in $component.package.nuget) {
$nuspec = "$packages_dir\$($package).nuspec"
exec { nuget pack $nuspec -Version $version -OutputDirectory $pkg_out_dir }
}
$nuspec.Save($package);
exec { &$script:nuget_exec pack $package -OutputDirectory $pkg_out_dir }
}

task Package -depends Build, PackageNuGet {
}

task PublishNuGet -precondition { return $component.ContainsKey('package') -and $component.package.ContainsKey('nuget') } {
$nuget = $component.package.nuget
# Upload packages
$accessKeyFile = "$base_dir\..\Nuget-Access-Key.txt"
if ( (Test-Path $accessKeyFile) ) {
$accessKey = Get-Content $accessKeyFile
$accessKey = $accessKey.Trim()

# Push to nuget repository
exec { &$script:nuget_exec push "$pkg_out_dir\$($nuget.id).$version.nupkg" $accessKey }
foreach ($package in $component.package.nuget) {
$nupkg = "$pkg_out_dir\$($package).$($version).nupkg"
exec { nuget push $nupkg $accessKey }
}
} else {
Write-Host "Nuget-Access-Key.txt does not exist. Cannot publish the nuget package." -ForegroundColor Yellow
}
Expand Down
34 changes: 34 additions & 0 deletions packages/NRules.Fluent.nuspec
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>NRules.Fluent</id>
<version>$version$</version>
<title>NRules, Rules Engine for .NET</title>
<authors>Sergiy Nikolayev</authors>
<owners>Sergiy Nikolayev</owners>
<licenseUrl>https://github.com/NRules/NRules/blob/master/LICENSE.txt</licenseUrl>
<projectUrl>http://nrules.net</projectUrl>
<iconUrl>https://raw.githubusercontent.com/NRules/NRules/master/content/NRules_Logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NRules is an open source rules engine for .NET that is based on the Rete matching algorithm. NRules is an inference engine that, among other features, supports forward chaining, negative, existential and universal quantifiers. Rules are authored in C# using internal DSL.</description>
<copyright>Copyright 2012-2017 Sergiy Nikolayev. All rights reserved.</copyright>
<tags>rules engine inference rete business dsl</tags>
<dependencies>
<group targetFramework="net45">
<dependency id="NRules.RuleModel" version="$version$" />
</group>
<group targetFramework="netstandard1.0">
<dependency id="NETStandard.Library" version="1.6.0" />
<dependency id="NRules.RuleModel" version="$version$" />
</group>
</dependencies>
</metadata>
<files>
<file src="..\binaries\NRules\net45\NRules.Fluent.dll" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.Fluent.xml" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.Fluent.pdb" target="lib\net45" />
<file src="..\binaries\NRules\netstandard1.0\NRules.Fluent.dll" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.Fluent.xml" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.Fluent.pdb" target="lib\netstandard1.0" />
</files>
</package>
Expand Up @@ -14,8 +14,13 @@
<copyright>Copyright 2012-2017 Sergiy Nikolayev. All rights reserved.</copyright>
<tags>nrules autofac</tags>
<dependencies>
<dependency id="NRules" version="[$version$]" />
<dependency id="Autofac" version="[3.2.0, 4.0.0)" />
<dependency id="NRules.Runtime" version="$version$" />
<dependency id="Autofac" version="[3.2.0, 4.5.0)" />
</dependencies>
</metadata>
<files>
<file src="..\binaries\NRules.Integration.Autofac\net45\NRules.RuleModel.dll" target="lib\net45" />
<file src="..\binaries\NRules.Integration.Autofac\net45\NRules.RuleModel.xml" target="lib\net45" />
<file src="..\binaries\NRules.Integration.Autofac\net45\NRules.RuleModel.pdb" target="lib\net45" />
</files>
</package>
32 changes: 32 additions & 0 deletions packages/NRules.RuleModel.nuspec
@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>NRules.RuleModel</id>
<version>$version$</version>
<title>NRules, Rules Engine for .NET</title>
<authors>Sergiy Nikolayev</authors>
<owners>Sergiy Nikolayev</owners>
<licenseUrl>https://github.com/NRules/NRules/blob/master/LICENSE.txt</licenseUrl>
<projectUrl>http://nrules.net</projectUrl>
<iconUrl>https://raw.githubusercontent.com/NRules/NRules/master/content/NRules_Logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NRules is an open source rules engine for .NET that is based on the Rete matching algorithm. NRules is an inference engine that, among other features, supports forward chaining, negative, existential and universal quantifiers. Rules are authored in C# using internal DSL.</description>
<copyright>Copyright 2012-2017 Sergiy Nikolayev. All rights reserved.</copyright>
<tags>rules engine inference rete business dsl</tags>
<dependencies>
<group targetFramework="net45">
</group>
<group targetFramework="netstandard1.0">
<dependency id="NETStandard.Library" version="1.6.0" />
</group>
</dependencies>
</metadata>
<files>
<file src="..\binaries\NRules\net45\NRules.RuleModel.dll" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.RuleModel.xml" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.RuleModel.pdb" target="lib\net45" />
<file src="..\binaries\NRules\netstandard1.0\NRules.RuleModel.dll" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.RuleModel.xml" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.RuleModel.pdb" target="lib\netstandard1.0" />
</files>
</package>
35 changes: 35 additions & 0 deletions packages/NRules.Runtime.nuspec
@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>NRules.Runtime</id>
<version>$version$</version>
<title>NRules, Rules Engine for .NET</title>
<authors>Sergiy Nikolayev</authors>
<owners>Sergiy Nikolayev</owners>
<licenseUrl>https://github.com/NRules/NRules/blob/master/LICENSE.txt</licenseUrl>
<projectUrl>http://nrules.net</projectUrl>
<iconUrl>https://raw.githubusercontent.com/NRules/NRules/master/content/NRules_Logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NRules is an open source rules engine for .NET that is based on the Rete matching algorithm. NRules is an inference engine that, among other features, supports forward chaining, negative, existential and universal quantifiers. Rules are authored in C# using internal DSL.</description>
<copyright>Copyright 2012-2017 Sergiy Nikolayev. All rights reserved.</copyright>
<tags>rules engine inference rete business dsl</tags>
<dependencies>
<group targetFramework="net45">
<dependency id="NRules.RuleModel" version="$version$" />
</group>
<group targetFramework="netstandard1.0">
<dependency id="NETStandard.Library" version="1.6.0" />
<dependency id="NRules.RuleModel" version="$version$" />
<dependency id="System.Linq.Queryable" version="4.3.0" />
</group>
</dependencies>
</metadata>
<files>
<file src="..\binaries\NRules\net45\NRules.dll" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.xml" target="lib\net45" />
<file src="..\binaries\NRules\net45\NRules.pdb" target="lib\net45" />
<file src="..\binaries\NRules\netstandard1.0\NRules.dll" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.xml" target="lib\netstandard1.0" />
<file src="..\binaries\NRules\netstandard1.0\NRules.pdb" target="lib\netstandard1.0" />
</files>
</package>
4 changes: 4 additions & 0 deletions packages/NRules.dll.nuspec → packages/NRules.nuspec
Expand Up @@ -13,5 +13,9 @@
<description>NRules is an open source rules engine for .NET that is based on the Rete matching algorithm. NRules is an inference engine that, among other features, supports forward chaining, negative, existential and universal quantifiers. Rules are authored in C# using internal DSL.</description>
<copyright>Copyright 2012-2017 Sergiy Nikolayev. All rights reserved.</copyright>
<tags>rules engine inference rete business dsl</tags>
<dependencies>
<dependency id="NRules.Runtime" version="$version$" />
<dependency id="NRules.Fluent" version="$version$" />
</dependencies>
</metadata>
</package>
1 change: 1 addition & 0 deletions tools/build/buildutils.ps1
Expand Up @@ -105,6 +105,7 @@ function Install-DotNetCli([string] $location, [string] $version = "Latest") {
Write-Host "Installing .NET Core SDK"
& $location\dotnet-install.ps1 -InstallDir "$installDir" -Version $version
$env:PATH = "$installDir;$env:PATH"
$env:DOTNET_CLI_TELEMETRY_OPTOUT = "1"
}

function Install-NuGet([string] $location, [string] $version = "latest") {
Expand Down

0 comments on commit 118968c

Please sign in to comment.