Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
GlitterWorld Prime Mod
Release build
Commits
36f1d67e
Commit
36f1d67e
authored
Nov 08, 2018
by
Adam Leyshon
Browse files
Added Cake (C# Make) build file and removed nant files.
Version is now 1.0.1.1
parent
31b4dda7
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
376 additions
and
95 deletions
+376
-95
.gitignore
.gitignore
+3
-0
Glitterworld Prime/Glitterworld Prime.csproj
Glitterworld Prime/Glitterworld Prime.csproj
+6
-7
Glitterworld Prime/Properties/AssemblyInfo.cs
Glitterworld Prime/Properties/AssemblyInfo.cs
+2
-2
build.cake
build.cake
+123
-0
build.ps1
build.ps1
+242
-0
nant.build
nant.build
+0
-86
No files found.
.gitignore
View file @
36f1d67e
...
...
@@ -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
Glitterworld Prime/Glitterworld Prime.csproj
View file @
36f1d67e
...
...
@@ -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>
...
...
Glitterworld Prime/Properties/AssemblyInfo.cs
View file @
36f1d67e
...
...
@@ -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
"
)]
build.cake
0 → 100644
View file @
36f1d67e
#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);
build.ps1
0 → 100644
View file @
36f1d67e
##########################################################################
# 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
nant.build
deleted
100644 → 0
View file @
31b4dda7
<?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>
Adam Leyshon
@aleyshon
mentioned in issue
#1 (closed)
·
Nov 08, 2018
mentioned in issue
#1 (closed)
mentioned in issue #1
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment