Something went wrong. Try again.
Adds Notch Support to Vintage Story for notchful laptops.
Something went wrong. Try again.
3.8 kB · 124 lines
C#
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124using System;using System.IO;using Cake.Common;using Cake.Common.IO;using Cake.Common.Tools.DotNet;using Cake.Common.Tools.DotNet.Clean;using Cake.Common.Tools.DotNet.Publish;using Cake.Core;using Cake.Frosting;using Cake.Json;using Newtonsoft.Json;using Newtonsoft.Json.Linq;using Vintagestory.API.Common;
namespace CakeBuild;
public static class Program{ public static int Main(string[] args) { return new CakeHost() .UseContext<BuildContext>() .Run(args); }}
public class BuildContext : FrostingContext{ public const string ProjectName = "NotchForVintageStory"; public string BuildConfiguration { get; } public string Version { get; } public string Name { get; } public bool SkipJsonValidation { get; }
public BuildContext(ICakeContext context) : base(context) { BuildConfiguration = context.Argument("configuration", "Release"); SkipJsonValidation = context.Argument("skipJsonValidation", false); var modInfo = context.DeserializeJsonFromFile<ModInfo>($"../{ProjectName}/modinfo.json"); Version = modInfo.Version; Name = modInfo.ModID; }}
[TaskName("ValidateJson")]public sealed class ValidateJsonTask : FrostingTask<BuildContext>{ public override void Run(BuildContext context) { if (context.SkipJsonValidation) { return; }
var jsonFiles = context.GetFiles($"../{BuildContext.ProjectName}/assets/**/*.json"); foreach (var file in jsonFiles) { try { var json = File.ReadAllText(file.FullPath); JToken.Parse(json); } catch (JsonException ex) { throw new Exception( $"Validation failed for JSON file: {file.FullPath}{Environment.NewLine}{ex.Message}", ex); } } }}
[TaskName("Build")][IsDependentOn(typeof(ValidateJsonTask))]public sealed class BuildTask : FrostingTask<BuildContext>{ public override void Run(BuildContext context) { context.DotNetClean($"../{BuildContext.ProjectName}/{BuildContext.ProjectName}.csproj", new DotNetCleanSettings { Configuration = context.BuildConfiguration });
context.DotNetPublish($"../{BuildContext.ProjectName}/{BuildContext.ProjectName}.csproj", new DotNetPublishSettings { Configuration = context.BuildConfiguration }); }}
[TaskName("Package")][IsDependentOn(typeof(BuildTask))]public sealed class PackageTask : FrostingTask<BuildContext>{ public override void Run(BuildContext context) { context.EnsureDirectoryExists("../Releases"); context.CleanDirectory("../Releases"); context.EnsureDirectoryExists($"../Releases/{context.Name}"); context.CopyFiles($"../{BuildContext.ProjectName}/bin/{context.BuildConfiguration}/Mods/mod/publish/*", $"../Releases/{context.Name}"); if (context.DirectoryExists($"../{BuildContext.ProjectName}/assets")) { context.CopyDirectory($"../{BuildContext.ProjectName}/assets", $"../Releases/{context.Name}/assets"); }
context.CopyFile($"../{BuildContext.ProjectName}/modinfo.json", $"../Releases/{context.Name}/modinfo.json"); if (context.FileExists($"../{BuildContext.ProjectName}/modicon.png")) { context.CopyFile($"../{BuildContext.ProjectName}/modicon.png", $"../Releases/{context.Name}/modicon.png"); }
context.Zip($"../Releases/{context.Name}", $"../Releases/{context.Name}_{context.Version}.zip"); }}
[TaskName("Default")][IsDependentOn(typeof(PackageTask))]public class DefaultTask : FrostingTask{}