Skip to content
This repository was archived by the owner on Aug 25, 2024. It is now read-only.

Commit 996ae43

Browse files
committed
bump version to 0.1.4
1 parent 8960a02 commit 996ae43

File tree

3 files changed

+153
-1
lines changed

3 files changed

+153
-1
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
[Dd]ebug/
1616
[Rr]elease/
1717
x64/
18-
build/
18+
1919
[Bb]in/
2020
[Oo]bj/
2121
.nuget/

build/Build.csproj

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<OutputType>Exe</OutputType>
4+
<TargetFramework>net7.0-windows</TargetFramework>
5+
<RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<PackageReference Include="Cake.Compression" Version="0.3.0" />
9+
<PackageReference Include="Cake.Frosting" Version="3.0.0" />
10+
<PackageReference Include="SharpClipboard" Version="3.5.2" />
11+
</ItemGroup>
12+
<ItemGroup>
13+
<ProjectReference Include="..\src\ClipboardR\ClipboardR.csproj" />
14+
</ItemGroup>
15+
</Project>

build/Program.cs

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using Cake.Common;
6+
using Cake.Common.Diagnostics;
7+
using Cake.Common.IO;
8+
using Cake.Common.Solution;
9+
using Cake.Common.Tools.DotNet;
10+
using Cake.Common.Tools.DotNet.Build;
11+
using Cake.Common.Tools.DotNet.Publish;
12+
using Cake.Compression;
13+
using Cake.Core;
14+
using Cake.Core.IO;
15+
using Cake.Frosting;
16+
17+
namespace Build;
18+
19+
public static class Program
20+
{
21+
public static int Main(string[] args)
22+
{
23+
return new CakeHost()
24+
.UseContext<BuildContext>()
25+
// .UseLifetime<BuildLifetime>()
26+
.Run(args);
27+
}
28+
}
29+
30+
public class BuildContext : FrostingContext
31+
{
32+
public string DotNetBuildConfig { get; set; }
33+
public const string SlnFile = "../Flow.Launcher.Plugin.ClipboardR.sln";
34+
public Lazy<SolutionParserResult> DefaultSln { get; set; }
35+
public const string DeployFramework = "net7.0-windows";
36+
public string PublishDir = ".dist";
37+
public string PublishVersion = "0.1.4";
38+
39+
public BuildContext(ICakeContext context)
40+
: base(context)
41+
{
42+
DefaultSln = new Lazy<SolutionParserResult>(() => context.ParseSolution(SlnFile));
43+
DotNetBuildConfig = context.Argument("configuration", "Release");
44+
}
45+
}
46+
47+
public class BuildLifetime : FrostingLifetime<BuildContext>
48+
{
49+
public override void Setup(BuildContext context, ISetupContext info)
50+
{
51+
var clean = new CleanTask();
52+
clean.Run(context);
53+
}
54+
55+
public override void Teardown(BuildContext context, ITeardownContext info)
56+
{
57+
58+
}
59+
}
60+
61+
[TaskName("Build")]
62+
public sealed class BuildTask : FrostingTask<BuildContext>
63+
{
64+
public override void Run(BuildContext context)
65+
{
66+
var projects = context
67+
.DefaultSln.Value.Projects.Where(p => p.Name.EndsWith("ClipboardR"));
68+
var projectPath = projects.First().Path.FullPath;
69+
context.Information($"Building {projectPath}");
70+
context.DotNetBuild(
71+
projectPath,
72+
new DotNetBuildSettings
73+
{
74+
Configuration = context.DotNetBuildConfig,
75+
Verbosity = DotNetVerbosity.Minimal,
76+
Framework = BuildContext.DeployFramework,
77+
NoDependencies = false,
78+
NoIncremental = true,
79+
});
80+
81+
82+
}
83+
}
84+
85+
[TaskName("Publish")]
86+
[IsDependentOn(typeof(BuildTask))]
87+
public class PublishTask : FrostingTask<BuildContext>
88+
{
89+
public override void Run(BuildContext context)
90+
{
91+
var project = context
92+
.DefaultSln.Value.Projects
93+
.First(p => p.Name.EndsWith("ClipboardR"));
94+
var srcDir = project.Path.GetDirectory()
95+
.Combine(new DirectoryPath($"bin/publish"));
96+
var dstDir = $"{srcDir.GetParent().GetParent().GetParent().GetParent().FullPath}/{context.PublishDir}";
97+
context.DotNetPublish(
98+
project.Path.FullPath,
99+
new DotNetPublishSettings
100+
{
101+
OutputDirectory = srcDir,
102+
Configuration = context.DotNetBuildConfig,
103+
Framework = BuildContext.DeployFramework,
104+
Verbosity = DotNetVerbosity.Minimal,
105+
});
106+
context.CreateDirectory(dstDir);
107+
var files = context
108+
.GetFiles(@$"{srcDir}/**/(*(c|C)lipboard*.(png|json|dll)|plugin.json|*simulator.dll)");
109+
foreach (var f in files)
110+
context.Information($"Adding: {f}");
111+
context.ZipCompress(
112+
rootPath: srcDir,
113+
outputPath: $"{dstDir}/ClipboardR-v{context.PublishVersion}.zip",
114+
filePaths: files,
115+
level: 9);
116+
}
117+
}
118+
119+
[TaskName("Clean")]
120+
public sealed class CleanTask : FrostingTask<BuildContext>
121+
{
122+
public override void Run(BuildContext context)
123+
{
124+
foreach (var project in context.DefaultSln.Value.Projects)
125+
{
126+
context.Information($"Cleaning {project.Path.GetDirectory().FullPath}...");
127+
context.CleanDirectory($"{project.Path.GetDirectory().FullPath}/bin/{context.DotNetBuildConfig}");
128+
}
129+
}
130+
}
131+
132+
[TaskName("Default")]
133+
[IsDependentOn(typeof(CleanTask))]
134+
[IsDependentOn(typeof(BuildTask))]
135+
public class DefaultTask : FrostingTask
136+
{
137+
}

0 commit comments

Comments
 (0)