Commit 36f1d67e authored by Adam Leyshon's avatar Adam Leyshon
Browse files

Added Cake (C# Make) build file and removed nant files.

Version is now 1.0.1.1
parent 31b4dda7
......@@ -6,6 +6,7 @@
*.user
*.userosscache
*.sln.docstates
*.zip
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
......@@ -21,6 +22,7 @@
bld/
[Bb]in/
[Oo]bj/
[Mm]od_package
# Visual Studio 2015 cache/options directory
.vs/
......@@ -241,3 +243,4 @@ ModelManifest.xml
# FAKE - F# Make
.fake/
/Assemblies
/tools
......@@ -23,7 +23,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\Assemblies\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
......@@ -35,16 +35,15 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<HintPath>E:\Games\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp-firstpass">
<HintPath>..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
<HintPath>E:\Games\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RestSharp, Version=105.2.3.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\Code\RestSharp\RestSharp\bin\Debug\RestSharp.dll</HintPath>
<Reference Include="RestSharp">
<HintPath>F:\Code\C#\RestSharp\RestSharp\bin\Debug\RestSharp.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
......@@ -53,7 +52,7 @@
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
<HintPath>E:\Games\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
......
......@@ -40,5 +40,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyVersion("1.0.1.1")]
[assembly: AssemblyFileVersion("1.0.1.1")]
#addin nuget:?package=SharpZipLib
#addin nuget:?package=Cake.Compression
#addin "Cake.Incubator&version=3.0.0"
#tool "nuget:?package=GitVersion.CommandLine"
#addin "Cake.FileHelpers"
///////////////////////////////////////////////////////////////////////////////
// ARGUMENTS
///////////////////////////////////////////////////////////////////////////////
var target = Argument("target", "Make");
var configuration = Argument("configuration", "Release");
var modname = "GlitterWorldPrime";
var version = "R1";
var mod_base_path = "./mod_package";
var mod_path = $"./{mod_base_path}/{modname} [{version}]";
var git_hash = "";
var asm_version = "";
var steam_folder = @"E:\Games\Steam\steamapps\common\RimWorld\Mods";
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup(ctx =>
{
// Executed BEFORE the first task.
Information("Running tasks...");
});
Teardown(ctx =>
{
// Executed AFTER the last task.
Information("Finished running tasks.");
});
///////////////////////////////////////////////////////////////////////////////
// TASKS
///////////////////////////////////////////////////////////////////////////////
Task("CopyDataFolders")
.Does(() => {
CopyDirectory("./About", mod_path+"/About");
CopyDirectory("./Defs", mod_path+"/Defs");
CopyDirectory("./Languages", mod_path+"/Languages");
CopyDirectory("./Textures", mod_path+"/Textures");
});
Task("CopyDLLs")
.IsDependentOn("Compile")
.Does(() => {
CreateDirectory(mod_path+"/Assemblies");
CopyFiles("./Assemblies/*.dll", mod_path+"/Assemblies");
});
Task("GetGitVersion")
.Does(() => {
git_hash = GitVersion().Sha.Substring(0,8);
Information($"Git hash is: {git_hash}");
});
Task("GetAsmVersion")
.Does(() => {
var assemblyInfo = ParseAssemblyInfo("./GlitterWorld Prime/Properties/AssemblyInfo.cs");
asm_version = $"{assemblyInfo.AssemblyFileVersion}";
Information($"Assembly version is: {asm_version}");
});
Task("UpdateXML")
.IsDependentOn("GetGitVersion")
.IsDependentOn("GetAsmVersion")
.Does(() => {
ReplaceRegexInFiles($"{mod_path}/About/About.xml",
"@SHAHASH@",
git_hash);
ReplaceRegexInFiles($"{mod_path}/About/Version.xml",
"@Version@",
asm_version);
});
Task("Compile")
.Does(() => {
DeleteDirectory("./Assemblies", new DeleteDirectorySettings {
Recursive = true,
Force = true
});
MSBuild("./GlitterWorld Prime.sln", new MSBuildSettings {
Verbosity = Verbosity.Normal,
ToolVersion = MSBuildToolVersion.VS2015,
Configuration = configuration,
PlatformTarget = PlatformTarget.MSIL,
}.WithTarget("Build"));
});
Task("Make")
.IsDependentOn("CopyDataFolders")
.IsDependentOn("CopyDLLs")
.IsDependentOn("UpdateXML")
.Does(() => {
});
Task("MakeZIP")
.Does(() => {
Zip(mod_base_path, $"{modname} [{version}] - Build {git_hash}.zip");
});
Task("CopyToSteam")
.Does(() => {
DeleteDirectory($"{steam_folder}/{modname} [{version}]", new DeleteDirectorySettings {
Recursive = true,
Force = true
});
ZipUncompress($"{modname} [{version}] - Build {git_hash}.zip", steam_folder);
});
Task("Publish")
.IsDependentOn("Make")
.IsDependentOn("MakeZIP")
.IsDependentOn("CopyToSteam")
.Does(() => {});
RunTarget(target);
##########################################################################
# This is the Cake bootstrapper script for PowerShell.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
<#
.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
The build script target to run.
.PARAMETER Configuration
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 SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
.LINK
https://cakebuild.net
#>
[CmdletBinding()]
Param(
[string]$Script = "build.cake",
[string]$Target,
[string]$Configuration,
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity,
[switch]$ShowDescription,
[Alias("WhatIf", "Noop")]
[switch]$DryRun,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$ScriptArgs
)
# Attempt to set highest encryption available for SecurityProtocol.
# PowerShell will not set this by default (until maybe .NET 4.6.x). This
# will typically produce a message for PowerShell v2 (just an info
# message though)
try {
# Set TLS 1.2 (3072), then TLS 1.1 (768), then TLS 1.0 (192), finally SSL 3.0 (48)
# Use integers because the enumeration values for TLS 1.2 and TLS 1.1 won't
# exist in .NET 4.0, even though they are addressable if .NET 4.5+ is
# installed (.NET 4.5 is an in-place upgrade).
[System.Net.ServicePointManager]::SecurityProtocol = 3072 -bor 768 -bor 192 -bor 48
} catch {
Write-Output 'Unable to set PowerShell to use TLS 1.2 and TLS 1.1 due to old .NET Framework installed. If you see underlying connection closed or trust errors, you may need to upgrade to .NET Framework 4.5+ and PowerShell v3'
}
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
function MD5HashFile([string] $filePath)
{
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
{
return $null
}
[System.IO.Stream] $file = $null;
[System.Security.Cryptography.MD5] $md5 = $null;
try
{
$md5 = [System.Security.Cryptography.MD5]::Create()
$file = [System.IO.File]::OpenRead($filePath)
return [System.BitConverter]::ToString($md5.ComputeHash($file))
}
finally
{
if ($file -ne $null)
{
$file.Dispose()
}
}
}
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){
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$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"
$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)) {
Write-Verbose -Message "Creating tools directory..."
New-Item -Path $TOOLS_DIR -Type directory | out-null
}
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
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."
}
}
# 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 $_ -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)."
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
}
}
# Try download NuGet.exe if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
$wc = GetProxyEnabledWebClient
$wc.DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
}
# Save nuget.exe path to environment to be available to child processed
$ENV:NUGET_EXE = $NUGET_EXE
# Restore tools from NuGet?
if(-Not $SkipToolPackageRestore.IsPresent) {
Push-Location
Set-Location $TOOLS_DIR
# Check for changes in packages.config and remove installed tools if true.
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
Write-Verbose -Message "Missing or changed package.config hash..."
Get-ChildItem -Exclude packages.config,nuget.exe,Cake.Bakery |
Remove-Item -Recurse
}
Write-Verbose -Message "Restoring tools from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
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
}
# Make sure that Cake has been installed.
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" }
$cakeArguments += $ScriptArgs
# Start Cake
Write-Host "Running build script..."
&$CAKE_EXE $cakeArguments
exit $LASTEXITCODE
<?xml version="1.0"?>
<!-- Generated by NAntBuilder v2.0 -->
<project default="R1">
<property name="ModName" value="GlitterWorldPrime [R1]" />
<!-- Name: 'CWD' Value: '${directory::get-current-directory()}' -->
<property name="CWD" value="${directory::get-current-directory()}" />
<!-- Name: 'Build Type' Value: '${directory::get-current-directory()}' -->
<property name="Type" value="Release" />
<!-- Name: 'ModOutput' Value: 'C:\Users\aleyshon\Desktop\Mod\${ModName} Debug\' -->
<property name="ModOutput" value="C:\Users\aleyshon\Desktop\Mod\${ModName} ${Type}\" />
<!-- Name: 'ModBinary' Value: '${CWD}\Assemblies\GlitterWorld Prime.dll' -->
<property name="ModBinary" value="${CWD}\Assemblies\GlitterWorld Prime.dll" />
<property name="MSBuildPath" value="C:\Program Files (x86)\MSBuild\14.0\Bin\Msbuild.exe" />
<property name="SteamModFolder" value="E:\Games\Steam\steamapps\common\RimWorld\Mods" />
<target name="R1">
<echo message="Building default target " />
<!-- Build Debug -->
<exec program="${MSBuildPath}">
<arg value="${CWD}\Glitterworld Prime.sln" />
<arg value="/t:Clean,Build" />
<arg value="/p:Configuration=${Type}" />
</exec>
<!-- Set Git Output File -->
<property name="git.output.file" value="${path::get-temp-path()}\sha1.txt" />
<!-- Get Git SHA -->
<exec program="git.exe" commandline="rev-parse --short HEAD" workingdir="${CWD}" output="${git.output.file}" />
<!-- Get SHA from File -->
<loadfile file="${git.output.file}" property="git.output" />
<!-- Cleanup Git Output -->
<property name="ModSHA" value="${string::trim(git.output)}" />
<!-- Copy About Folder -->
<copy todir="${ModOutput}\About" overwrite="True">
<fileset basedir="${CWD}\About" />
</copy>
<!-- Load About.xml -->
<loadfile file="${ModOutput}\About\About.xml" property="ModAbout">
<filterchain>
<replacetokens>
<token key="SHAHASH" value="${ModSHA}" />
</replacetokens>
</filterchain>
</loadfile>
<!-- Save About.xml -->
<echo message="${ModAbout}" file="${ModOutput}\About\About.xml" />
<!-- Get Version Info -->
<property name="ModBinaryVersion" value="${assemblyname::get-version(assemblyname::get-assembly-name(ModBinary))}" />
<!-- Load Version.xml -->
<loadfile file="${ModOutput}\About\Version.xml" property="ModVersion">
<filterchain>
<replacetokens>
<token key="Version" value="${ModBinaryVersion}" />
</replacetokens>
</filterchain>
</loadfile>
<!-- Save Version.xml -->
<echo message="${ModVersion}" file="${ModOutput}\About\Version.xml" />
<!-- Copy Assemblies -->
<copy todir="${ModOutput}\Assemblies" overwrite="True">
<fileset basedir="${CWD}\Assemblies">
<include name="*.dll" />
</fileset>
</copy>
<!-- Copy Defs -->
<copy todir="${ModOutput}\Defs" overwrite="True">
<fileset basedir="${CWD}\Defs" />
</copy>
<!-- Copy Languages -->
<copy todir="${ModOutput}\Languages" overwrite="True">
<fileset basedir="${CWD}\Languages" />
</copy>
<!-- Copy Textures -->
<copy todir="${ModOutput}\Textures" overwrite="True">
<fileset basedir="${CWD}\Textures" />
</copy>
<zip zipfile="${ModOutput}\..\..\${ModName} Build ${ModSHA}.zip">
<fileset prefix="${ModName}" basedir="${ModOutput}">
<include name="**/*" />
</fileset>
</zip>
<delete dir="${SteamModFolder}\${ModName}" />
<!-- Copy Mod to Steam -->
<copy todir="${SteamModFolder}\${ModName}\" overwrite="True">
<fileset basedir="${ModOutput}" />
</copy>
</target>
</project>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment