Skip to content

Commit

Permalink
- reorganising repo files
Browse files Browse the repository at this point in the history
- breakdown dagger cicd functions
- tested zip locally
- using gitversion lib for ci + .net binary versioning info
- added version info into Settings window
  • Loading branch information
pjmagee committed Nov 23, 2024
1 parent 8a2b809 commit 335d934
Show file tree
Hide file tree
Showing 77 changed files with 641 additions and 840 deletions.
132 changes: 106 additions & 26 deletions dagger/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,97 @@ package main
import (
"context"
"dagger/dota-2-helper/internal/dagger"
"encoding/json"
"fmt"
"strings"
)

type Dota2Helper struct{}

type GitVersion struct {
AssemblySemFileVer string `json:"AssemblySemFileVer"`
AssemblySemVer string `json:"AssemblySemVer"`
BranchName string `json:"BranchName"`
BuildMetaData int `json:"BuildMetaData"`
CommitDate string `json:"CommitDate"`
CommitsSinceVersionSource int `json:"CommitsSinceVersionSource"`
EscapedBranchName string `json:"EscapedBranchName"`
FullBuildMetaData string `json:"FullBuildMetaData"`
FullSemVer string `json:"FullSemVer"`
InformationalVersion string `json:"InformationalVersion"`
Major int `json:"Major"`
MajorMinorPatch string `json:"MajorMinorPatch"`
Minor int `json:"Minor"`
Patch int `json:"Patch"`
PreReleaseLabel string `json:"PreReleaseLabel"`
PreReleaseLabelWithDash string `json:"PreReleaseLabelWithDash"`
PreReleaseNumber int `json:"PreReleaseNumber"`
PreReleaseTag string `json:"PreReleaseTag"`
PreReleaseTagWithDash string `json:"PreReleaseTagWithDash"`
SemVer string `json:"SemVer"`
Sha string `json:"Sha"`
ShortSha string `json:"ShortSha"`
UncommittedChanges int `json:"UncommittedChanges"`
VersionSourceSha string `json:"VersionSourceSha"`
WeightedPreReleaseNumber int `json:"WeightedPreReleaseNumber"`
}

func (m *Dota2Helper) Build(
ctx context.Context,
// +defaultPath="/src"
src *dagger.Directory) (string, error) {
// +defaultPath="."
git *dagger.Directory) (string, error) {

cache := dag.CacheVolume("nuget-cache")
opts := dagger.ContainerWithDirectoryOpts{Exclude: []string{"**/bin/**", "**/obj/**"}}

return dag.Container().
From("mcr.microsoft.com/dotnet/sdk:8.0").
WithDirectory("/src", src, dagger.ContainerWithDirectoryOpts{
Exclude: []string{"**/bin/**", "**/obj/**"},
}).
WithWorkdir("/src").
WithDirectory("/repo", git, opts).
WithWorkdir("/repo/src").
WithMountedCache("/root/.nuget/packages", cache).
WithExec([]string{
"dotnet",
"build"}).
WithExec([]string{"dotnet", "build"}).
Stdout(ctx)
}

func (m *Dota2Helper) GitVersion(
ctx context.Context,
// +defaultPath="."
git *dagger.Directory) (GitVersion, error) {

version, err := dag.Container().
From("gittools/gitversion:latest").
WithDirectory("/repo", git).
WithExec([]string{"/tools/dotnet-gitversion", "/repo"}).
Stdout(ctx)

if err != nil {
return GitVersion{}, err
}

var gitVersion GitVersion
err = json.Unmarshal([]byte(version), &gitVersion)

if err != nil {
return GitVersion{}, err
}

return gitVersion, nil
}

func (m *Dota2Helper) PublishWindows(
ctx context.Context,
// +defaultPath="/src"
src *dagger.Directory,
// +defaultPath="."
git *dagger.Directory,
version string) *dagger.Container {

cache := dag.CacheVolume("nuget-cache")

return dag.Container().
From("mcr.microsoft.com/dotnet/sdk:8.0").
WithDirectory("/src", src, dagger.ContainerWithDirectoryOpts{
WithDirectory("/repo", git, dagger.ContainerWithDirectoryOpts{
Exclude: []string{"**/bin/**", "**/obj/**"},
}).
WithMountedCache("/root/.nuget/packages", cache).
WithWorkdir("/src").
WithWorkdir("/repo/src").
WithExec([]string{
"dotnet",
"publish",
Expand All @@ -62,24 +112,54 @@ func (m *Dota2Helper) PublishWindows(
})
}

func (m *Dota2Helper) Zip(
ctx context.Context,
// +defaultPath="."
git *dagger.Directory) (*dagger.File, error) {

gitVersion, err := m.GitVersion(ctx, git)

if err != nil {
return nil, err
}

version := gitVersion.MajorMinorPatch
published := m.PublishWindows(ctx, git, version)
assets := published.Directory("/publish")

zip := dag.
Arc().
ArchiveDirectory(fmt.Sprintf("Dota2Helper_v%s_windows_amd64", version), assets).
Zip()

return zip, nil
}

func (m *Dota2Helper) Release(
ctx context.Context,
// +defaultPath="/"
// +defaultPath="/"
git *dagger.Directory,
tag string,
token *dagger.Secret) error {

version := strings.TrimPrefix(tag, "v")
published := m.PublishWindows(ctx, git.Directory("src"), version)
assets := published.Directory("/publish")
gitVersion, err := m.GitVersion(ctx, git)

if err != nil {
return err
}

zip, err := m.Zip(ctx, git)

ghOpts := dagger.GhOpts{
Token: token,
Repo: "github.com/pjmagee/dota2-helper", Source: git,
}

tag := fmt.Sprintf("v%s", gitVersion.MajorMinorPatch)
title := fmt.Sprintf("Dota 2 Helper %s", gitVersion.MajorMinorPatch)

zip := dag.Arc().ArchiveDirectory(fmt.Sprintf("Dota2Helper_%s_windows_amd64", tag), assets).Zip()
ghOpts := dagger.GhOpts{Token: token, Repo: "github.com/pjmagee/dota2-helper", Source: git}
err := dag.Gh(ghOpts).Release().Create(ctx, tag, "", dagger.GhReleaseCreateOpts{
Target: "main",
Files: []*dagger.File{
zip,
},
err = dag.Gh(ghOpts).Release().Create(ctx, tag, title, dagger.GhReleaseCreateOpts{
Target: "main",
Files: []*dagger.File{zip},
Latest: true,
VerifyTag: true,
Draft: true,
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<!--If you are willing to use Windows/MacOS native APIs you will need to create 3 projects.
One for Windows with net8.0-windows TFM, one for MacOS with net8.0-macos and one with net8.0 TFM for Linux.-->
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
Expand All @@ -11,14 +9,28 @@
</PropertyGroup>

<PropertyGroup>
<Company>Patrick Magee</Company>
<Authors>Patrick Magee</Authors>
<ProductName>Dota 2 Helper</ProductName>
<Description>Desktop application overlay for Dota2</Description>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia.Desktop" Version="11.2.1" />
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="3.0.21" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="GitVersion.MsBuild" Version="6.0.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Dota2Helper\Dota2Helper.csproj"/>
</ItemGroup>
Expand All @@ -33,11 +45,5 @@
<None Update="appsettings.timers.default.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.design.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.timers.default.design.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
File renamed without changes.
File renamed without changes.
File renamed without changes.
28 changes: 0 additions & 28 deletions src/Dota2Helper.sln

This file was deleted.

7 changes: 3 additions & 4 deletions src/Dota2Helper.slnx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<Solution>
<Configurations />
<Project Path="Dota2Helper\Dota2Helper.Desktop\Dota2Helper.Desktop.csproj" Type="Classic C#" />
<Project Path="Dota2Helper\Dota2Helper.Tests\Dota2Helper.Tests.csproj" Type="Classic C#" />
<Project Path="Dota2Helper\Dota2Helper\Dota2Helper.csproj" Type="Classic C#" />
<Project Path="Dota2Helper\Dota2Helper.csproj" Type="Classic C#" />
<Project Path="Dota2Helper.Desktop\Dota2Helper.Desktop.csproj" Type="Classic C#" />
<Project Path="Dota2Helper.Tests\Dota2Helper.Tests.csproj" Type="Classic C#" />
</Solution>
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,69 @@ public override async void OnFrameworkInitializationCompleted()
{
var services = new ServiceCollection().AddOptions();

var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(IsDesignMode ? "appsettings.design.json" : "appsettings.json", optional: false, reloadOnChange: false)
.AddJsonFile(IsDesignMode ? "appsettings.timers.default.design.json" : "appsettings.timers.default.json", optional: false, reloadOnChange: false)
.Build();

services
.Configure<Settings>(configuration.Bind)
.Configure<List<DotaTimer>>(configuration.GetSection("DefaultTimers").Bind);
if (IsDesignMode)
{
services
.Configure<Settings>(o =>
{
o.Mode = TimeMode.Auto;
o.Volume = 50;
o.Theme = "Light";
o.DemoMuted = true;
o.SelectedProfileIdx = 0;
o.Profiles = new List<Profile>
{
new Profile
{
Name = "Default",
Timers = new List<DotaTimer>
{
new DotaTimer
{
Name = "Roshan",
Time = TimeSpan.FromMinutes(8),
IsInterval = false,
IsManualReset = true,
IsEnabled = true,
IsMuted = false,
RemindAt = TimeSpan.FromMinutes(1),
StopAfter = TimeSpan.FromMinutes(1),
StartAfter = TimeSpan.FromMinutes(1),
AudioFile = "C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3",
}
}
}
};
})
.Configure<List<DotaTimer>>(o =>
{
o.Add(new DotaTimer
{
Name = "Roshan",
Time = TimeSpan.FromMinutes(8),
IsInterval = false,
IsManualReset = true,
IsEnabled = true,
IsMuted = false,
RemindAt = TimeSpan.FromMinutes(1),
StopAfter = TimeSpan.FromMinutes(1),
StartAfter = TimeSpan.FromMinutes(1),
AudioFile = "C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3",
});
});
}
else
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
.AddJsonFile("appsettings.timers.default.json", optional: false, reloadOnChange: false)
.Build();

services
.Configure<Settings>(configuration.Bind)
.Configure<List<DotaTimer>>(configuration.GetSection("DefaultTimers").Bind);
}

services
.AddSingleton<SettingsService>()
Expand Down
File renamed without changes.
File renamed without changes
File renamed without changes
6 changes: 0 additions & 6 deletions src/Dota2Helper/Directory.Build.props

This file was deleted.

Loading

0 comments on commit 335d934

Please sign in to comment.