Skip to content

Commit

Permalink
Refactoring to new BuildEngine API;
Browse files Browse the repository at this point in the history
Update to .NET 5;
Change to packing with UnPak;
Remove u4pak/UnrealPak support;
Remove script download support;
Remove old build runners and services;
Remove build context and factory;
  • Loading branch information
agc93 committed Jul 23, 2021
1 parent e2c1d3e commit dd559fe
Show file tree
Hide file tree
Showing 19 changed files with 171 additions and 423 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-dotnet@v1
with:
dotnet-version: '3.1.x'
dotnet-version: '5.0.x'
- name: Run the Cake script
uses: cake-build/cake-action@v1
with:
Expand Down
4 changes: 3 additions & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{
"sdk": { "version": "3.1.403" }
"sdk": { "version": "5.0.301",
"rollForward": "latestMinor"
}
}
82 changes: 0 additions & 82 deletions src/PackCreator/Build/BuildContext.cs

This file was deleted.

23 changes: 0 additions & 23 deletions src/PackCreator/Build/BuildContextFactory.cs

This file was deleted.

15 changes: 0 additions & 15 deletions src/PackCreator/Build/BuildExtensions.cs

This file was deleted.

12 changes: 1 addition & 11 deletions src/PackCreator/Build/BuildInstruction.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,9 @@
using System.Collections.Generic;
using System.IO;
using AceCore;
using BuildEngine.Builder;

namespace PackCreator {
public abstract class BuildInstruction {
protected BuildInstruction()
{

}
public string TargetPath {get;set;}
// public string PackGroup {get;set;}
public SourceGroup SourceGroup {get;set;}
public List<FileInfo> SourceFiles {get;set;} = new List<FileInfo>();
public virtual string GetOutputName(string separator = "_") => null;
}

public class BuildInstruction<T> : BuildInstruction where T : Identifier {
public BuildInstruction(T identifier)
Expand Down
54 changes: 0 additions & 54 deletions src/PackCreator/Build/BuildRunner.cs

This file was deleted.

39 changes: 33 additions & 6 deletions src/PackCreator/Build/BuildService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,52 @@
using System.Linq;
using System.Threading.Tasks;
using AceCore;
using BuildEngine;
using BuildEngine.Builder;
using ExecEngine;
using Microsoft.Extensions.Logging;
using PackCreator.Build;
using UnPak.Core;

namespace PackCreator {

public class PackBuildService : BuildService<DirectoryBuildContext>
{
private readonly ILogger<PackBuildService> _logger;

private readonly PakFileProvider _pakFileProvider;
// private readonly IModBuilder _modBuilder;

public PackBuildService(DirectoryBuildContext context, ILogger<PackBuildService> logger, PakFileProvider pakFileProvider) : base(context) {
_logger = logger;
_pakFileProvider = pakFileProvider;
// _modBuilder = modBuilder;
}

public override Task<(bool Success, FileSystemInfo Output)> RunBuildAsync(string targetFileName) {
var writer = _pakFileProvider.GetWriter();
var gameDir = new DirectoryInfo(Directory.GetDirectories(Context.WorkingDirectory.FullName).First());
var targetBuildPath = Path.IsPathRooted(targetFileName) ? targetFileName : Path.Combine(Context.WorkingDirectory.FullName, targetFileName);
var fi = writer.BuildFromDirectory(gameDir, new FileInfo(targetBuildPath));
return Task.FromResult((fi.Exists, (FileSystemInfo) fi));
}
}

public class BuildService {
private readonly ILogger<BuildService> _logger;
private readonly BuildContextFactory _contextFactory;
private readonly IBuildRunner _runner;
private readonly DirectoryBuildContextFactory _contextFactory;
// private readonly IBuildRunner _runner;

public BuildService(ILogger<BuildService> logger, BuildContextFactory contextFactory, IBuildRunner runner) {
public BuildService(ILogger<BuildService> logger, DirectoryBuildContextFactory contextFactory) {
_logger = logger;
_contextFactory = contextFactory;
_runner = runner;
// _runner = runner;
}


public async Task<FileInfo> RunBuild(string objName, string rootPath, params BuildInstruction[] contextTargets) {
var targets = contextTargets.ToList();
using (var ctx = await _contextFactory.Create(objName))
using (var ctx = _contextFactory.CreateContext(objName))
{
foreach (var target in targets)
{
Expand All @@ -33,7 +59,8 @@ public async Task<FileInfo> RunBuild(string objName, string rootPath, params Bui
return null;
}
}
var buildResult = _runner.RunBuild(ctx.BuildScript, "packed-files.pak");
// var buildResult = _runner.RunBuild(null, "packed-files.pak");
(bool Success, FileInfo Output) buildResult = (false, null);
// var buildResult = ctx.RunBuild(_runner, "packed-files.pak");
if (buildResult.Success) {
_logger.LogInformation($"[bold green]Success![/] Files for {objName.GetFriendlyName()} successfully packed from {targets.Sum(t => t.SourceFiles.Count)} files (in {targets.Count} targets)");
Expand Down
24 changes: 24 additions & 0 deletions src/PackCreator/Build/BuildServiceProvider.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Threading.Tasks;
using BuildEngine;
using Microsoft.Extensions.Logging;
using UnPak.Core;

namespace PackCreator.Build
{
public class BuildServiceProvider : IBuildServiceProvider
{
private readonly DirectoryBuildContextFactory _buildContextFactory;
private readonly ILogger<PackBuildService> _buildLogger;
private readonly PakFileProvider _pakFileProvider;


public BuildServiceProvider(DirectoryBuildContextFactory buildContextFactory, ILogger<PackBuildService> buildLogger, PakFileProvider pakFileProvider) {
_buildContextFactory = buildContextFactory;
_buildLogger = buildLogger;
_pakFileProvider = pakFileProvider;
}
public async Task<IBuildService> GetBuild(string? buildId) {
return new PackBuildService(_buildContextFactory.CreateContext(buildId), _buildLogger, _pakFileProvider);
}
}
}
24 changes: 1 addition & 23 deletions src/PackCreator/CoreExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Linq;
using System.Reflection;
using AceCore;
using BuildEngine.Builder;

namespace PackCreator {
public static class CoreExtensions {
Expand Down Expand Up @@ -32,29 +33,6 @@ public static BuildInstruction GetInstruction(this SkinIdentifier skinIdentifier
return instr;
}

/* public static IEnumerable<DirectoryInfo> GetModFileNodes(this DirectoryInfo root) {
var folderWithoutSubfolder = Directory.EnumerateDirectories(root.FullName, "*.*", SearchOption.AllDirectories)
.Where(f => {
var files = Directory.EnumerateFiles(f, "*.*", SearchOption.TopDirectoryOnly);
return (!Directory.EnumerateDirectories(f, "*.*", SearchOption.TopDirectoryOnly).Any()) && files.Any() && !files.All(a => Path.GetExtension(a) == ".pak") && new DirectoryInfo(f).Name != "ex" && !f.Contains("\\_meta\\");
});
return folderWithoutSubfolder.Select(fs => IsSlotFolder(fs) ? Directory.GetParent(fs) : new DirectoryInfo(fs)).Select(f => f.FullName).Distinct().Select(p => new DirectoryInfo(p)).ToList();
}
public static IEnumerable<DirectoryInfo> GetModFileNodes(this DirectoryInfo root, string rootPattern) {
var folderWithoutSubfolder = Directory.EnumerateDirectories(root.FullName, rootPattern, SearchOption.TopDirectoryOnly).SelectMany( td => Directory.EnumerateDirectories(td, "*", SearchOption.AllDirectories)
.Where(f => {
var files = Directory.EnumerateFiles(f, "*.*", SearchOption.TopDirectoryOnly);
return (!Directory.EnumerateDirectories(f, "*.*", SearchOption.TopDirectoryOnly).Any()) && files.Any() && !files.All(a => Path.GetExtension(a) == ".pak") && new DirectoryInfo(f).Name != "ex";
}));
return folderWithoutSubfolder.Select(fs => IsSlotFolder(fs) ? Directory.GetParent(fs) : new DirectoryInfo(fs)).Select(f => f.FullName).Distinct().Select(p => new DirectoryInfo(p)).ToList();
}
internal static bool IsSlotFolder(this string folderName) {
var leafName = Path.GetFileName(folderName);
return leafName == "Materials" || leafName == "Textures" || leafName.Any(char.IsDigit);
} */

public static void CopyTo(this DirectoryInfo sourceDirectory, DirectoryInfo targetDirectory, string fileFilter) {

CopyAll(sourceDirectory, targetDirectory, fileFilter);
Expand Down
Loading

0 comments on commit dd559fe

Please sign in to comment.