diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..45495ea
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+# EditorConfig
+
+[*]
+charset = utf-8
+trim_trailing_whitespace = true
+tab_width = 2
+indent_size = 2
+indent_style = space
+insert_final_newline = true
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..5896c16
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln merge=binary
+#*.csproj merge=binary
+#*.vbproj merge=binary
+#*.vcxproj merge=binary
+#*.vcproj merge=binary
+#*.dbproj merge=binary
+#*.fsproj merge=binary
+#*.lsproj merge=binary
+#*.wixproj merge=binary
+#*.modelproj merge=binary
+#*.sqlproj merge=binary
+#*.wwaproj merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg binary
+#*.png binary
+#*.gif binary
+
+###############################################################################
+# diff behavior for common document formats
+#
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the
+# entries below.
+###############################################################################
+#*.doc diff=astextplain
+#*.DOC diff=astextplain
+#*.docx diff=astextplain
+#*.DOCX diff=astextplain
+#*.dot diff=astextplain
+#*.DOT diff=astextplain
+#*.pdf diff=astextplain
+#*.PDF diff=astextplain
+#*.rtf diff=astextplain
+#*.RTF diff=astextplain
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..1230149
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 0000000..a51ba9b
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,55 @@
+name-template: "v$RESOLVED_VERSION"
+tag-template: "v$RESOLVED_VERSION"
+change-template: "- $TITLE by @$AUTHOR (#$NUMBER)"
+no-changes-template: "- No changes"
+
+prerelease: true
+prerelease-identifier: rc
+
+categories:
+ - title: "📚 Documentation"
+ labels:
+ - "documentation"
+ - title: "🚀 New Features"
+ labels:
+ - "enhancement"
+ - title: "🐛 Bug Fixes"
+ labels:
+ - "bug"
+ - title: "🧰 Maintenance"
+ labels:
+ - "maintenance"
+ - title: "🚨 Security Updates"
+ labels:
+ - "security"
+ - title: "🔄 Dependency Updates"
+ collapse-after: 3
+ labels:
+ - "dependencies"
+
+version-resolver:
+ major:
+ labels:
+ - "major"
+ minor:
+ labels:
+ - "minor"
+ patch:
+ labels:
+ - "patch"
+ default: patch
+template: |
+ $CHANGES
+
+ ## 👨🏼💻 Contributors
+
+ $CONTRIBUTORS
+autolabeler:
+ - label: "documentation"
+ files:
+ - "docs/**/*"
+ - label: "maintenance"
+ files:
+ - ".github/**/*"
+ - ".devcontainer/**/*"
+ - "test/**/*"
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 0000000..defad0a
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,29 @@
+name: Release Drafter
+
+on:
+ push:
+ branches:
+ - main
+ pull_request_target:
+ types:
+ - edited
+ - opened
+ - reopened
+ - synchronize
+ workflow_dispatch: {}
+
+concurrency:
+ group: ${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' && github.ref_type != 'tag' }}
+
+jobs:
+ update_release_draft:
+ permissions:
+ contents: write
+ pull-requests: write
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Draft Release"
+ uses: release-drafter/release-drafter@v6.0.0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..bdcfc6b
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,63 @@
+name: Release
+
+on:
+ pull_request: {}
+ push:
+ branches:
+ - main
+ release:
+ types:
+ - published
+ workflow_dispatch: {}
+
+env:
+ DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
+ DOTNET_NOLOGO: true
+ NUGET_DIR: ${{ github.workspace}}/nuget
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Install GitVersion
+ uses: gittools/actions/gitversion/setup@v1.1.1
+ with:
+ versionSpec: '5.x'
+ - name: Setup .NET Core SDK 8
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: |
+ 8.0.x
+ - name: Restore .NET Packages
+ run: dotnet restore
+
+ - name: Determine Version
+ uses: gittools/actions/gitversion/execute@v1.1.1
+ with:
+ useConfigFile: true
+
+ - name: Build .NET Solution
+ run: dotnet build --configuration Release --no-restore
+
+ - name: Pack .NET Solution
+ run: dotnet pack --configuration Release --no-build --output pack/
+ if: ${{ github.event_name == 'release' && github.ref_type == 'tag' || github.event.release.tag_name }}
+
+ - name: Publish .NET Solution to GitHub Packages
+ continue-on-error: true
+ run: dotnet nuget push pack/*.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
+ if: ${{ github.event_name == 'release' && github.ref_type == 'tag' || github.event.release.tag_name }}
+
+ - name: Publish .NET Solution to NuGet.org
+ env:
+ apikey: ${{ secrets.NUGET_ORG_KEY }}
+ if: ${{ github.event_name == 'release' && github.ref_type == 'tag' || github.event.release.tag_name }}
+ run: dotnet nuget push pack/*.nupkg --api-key ${{ secrets.NUGET_ORG_KEY }} --source nuget
+ continue-on-error: true
diff --git a/.gitignore b/.gitignore
index 8a30d25..a255f99 100644
--- a/.gitignore
+++ b/.gitignore
@@ -396,3 +396,4 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
+.idea/
diff --git a/Branding.sln b/Branding.sln
new file mode 100644
index 0000000..1a8834b
--- /dev/null
+++ b/Branding.sln
@@ -0,0 +1,21 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{73C15AA6-8467-479E-852C-5884E5ADB397}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InfinityFlow.Tools.Branding", "src\Branding\InfinityFlow.Tools.Branding.csproj", "{79F92A34-B82B-4367-B562-3A00C38556D8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {79F92A34-B82B-4367-B562-3A00C38556D8} = {73C15AA6-8467-479E-852C-5884E5ADB397}
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {79F92A34-B82B-4367-B562-3A00C38556D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {79F92A34-B82B-4367-B562-3A00C38556D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {79F92A34-B82B-4367-B562-3A00C38556D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {79F92A34-B82B-4367-B562-3A00C38556D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..b05a28b
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,14 @@
+
+
+ true
+ false
+ git
+ https://github.com/InfinityFlowApp/tools-nuget-branding
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/Directory.Packages.props b/Directory.Packages.props
new file mode 100644
index 0000000..4199017
--- /dev/null
+++ b/Directory.Packages.props
@@ -0,0 +1,8 @@
+
+
+ true
+
+
+
+
+
diff --git a/GitVersion.yml b/GitVersion.yml
new file mode 100644
index 0000000..403b71c
--- /dev/null
+++ b/GitVersion.yml
@@ -0,0 +1,4 @@
+branches:
+ master:
+ mode: ContinuousDeployment
+ tag: rc
diff --git a/global.json b/global.json
new file mode 100644
index 0000000..d07970a
--- /dev/null
+++ b/global.json
@@ -0,0 +1,6 @@
+{
+ "sdk": {
+ "version": "8.0.100",
+ "rollForward": "latestMajor"
+ }
+}
diff --git a/nuget.config b/nuget.config
new file mode 100644
index 0000000..fbcef10
--- /dev/null
+++ b/nuget.config
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Branding/InfinityFlow.Tools.Branding.csproj b/src/Branding/InfinityFlow.Tools.Branding.csproj
new file mode 100644
index 0000000..1767347
--- /dev/null
+++ b/src/Branding/InfinityFlow.Tools.Branding.csproj
@@ -0,0 +1,30 @@
+
+
+
+ true
+ Provides default branding properties and assets for organization's NuGet projects.
+ false
+ true
+ false
+ true
+ $(NoWarn);NU5128;CS2008
+ enable
+ branding;defaults;icons;nuget;development
+ netstandard2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Branding/InfinityFlow.Tools.Branding.props b/src/Branding/InfinityFlow.Tools.Branding.props
new file mode 100644
index 0000000..2122bbc
--- /dev/null
+++ b/src/Branding/InfinityFlow.Tools.Branding.props
@@ -0,0 +1,9 @@
+
+
+ InfinityFlow
+ packageIcon.png
+ LICENSE
+ README.md
+ Copyright © InfinityFlow
+
+
diff --git a/src/Branding/InfinityFlow.Tools.Branding.targets b/src/Branding/InfinityFlow.Tools.Branding.targets
new file mode 100644
index 0000000..d99daff
--- /dev/null
+++ b/src/Branding/InfinityFlow.Tools.Branding.targets
@@ -0,0 +1,7 @@
+
+
+
+ packageIcon.png
+
+
+
diff --git a/src/Branding/assets/app_original.svg b/src/Branding/assets/app_original.svg
new file mode 100644
index 0000000..82b2a06
--- /dev/null
+++ b/src/Branding/assets/app_original.svg
@@ -0,0 +1,116 @@
+
+
diff --git a/src/Branding/assets/packageIcon.png b/src/Branding/assets/packageIcon.png
new file mode 100644
index 0000000..e3363b9
Binary files /dev/null and b/src/Branding/assets/packageIcon.png differ
diff --git a/src/Branding/assets/packageIcon.svg b/src/Branding/assets/packageIcon.svg
new file mode 100644
index 0000000..82b2a06
--- /dev/null
+++ b/src/Branding/assets/packageIcon.svg
@@ -0,0 +1,116 @@
+
+