diff --git a/.github/workflows/nuget_push.yml b/.github/workflows/nuget_push.yml
new file mode 100644
index 0000000..c2f3e29
--- /dev/null
+++ b/.github/workflows/nuget_push.yml
@@ -0,0 +1,37 @@
+name: NuGet Push
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+
+ - name: Restore dependencies
+ run: dotnet restore ./src
+
+ - name: Build
+ run: dotnet build ./src --no-restore --configuration Release
+
+ - name: Pack NuGet Package(s)
+ run: dotnet pack ./src --no-restore --no-build --configuration Release --output ./nuget-packages
+
+ - name: Upload Build Artifact(s)
+ uses: actions/upload-artifact@v4
+ with:
+ name: nuget-packages
+ path: ./nuget-packages
+
+ - name: Push NuGet Package(s)
+ run: dotnet nuget push ./nuget-packages/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate
+ env:
+ NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
diff --git a/LICENSE b/LICENSE
index 224e8e4..efac5cf 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2023 Marlon
+Copyright (c) 2024 NotOfficer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f2f0b09
--- /dev/null
+++ b/README.md
@@ -0,0 +1,15 @@
+
+
+# Utils
+
+Utils for .NET
+
+[![GitHub release](https://img.shields.io/github/v/release/NotOfficer/Utils?logo=github)](https://github.com/NotOfficer/Utils/releases/latest) [![Nuget](https://img.shields.io/nuget/v/OffiUtils?logo=nuget)](https://www.nuget.org/packages/OffiUtils) ![Nuget DLs](https://img.shields.io/nuget/dt/OffiUtils?logo=nuget) [![GitHub issues](https://img.shields.io/github/issues/NotOfficer/Utils?logo=github)](https://github.com/NotOfficer/Utils/issues) [![GitHub License](https://img.shields.io/github/license/NotOfficer/Utils)](https://github.com/NotOfficer/Utils/blob/master/LICENSE)
+
+
+
+### NuGet
+
+```md
+Install-Package OffiUtils
+```
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000..0af6747
Binary files /dev/null and b/icon.png differ
diff --git a/src/OffiUtils.Tests/JsonUtilsTests.cs b/src/OffiUtils.Tests/JsonUtilsTests.cs
index 3b7d520..335065e 100644
--- a/src/OffiUtils.Tests/JsonUtilsTests.cs
+++ b/src/OffiUtils.Tests/JsonUtilsTests.cs
@@ -18,4 +18,4 @@ public void TryUnescape()
var result = JsonUtils.GetUnescapedString(escapedBytes);
Assert.Equal(unescaped.Replace("\r", ""), result);
}
-}
\ No newline at end of file
+}
diff --git a/src/OffiUtils.Tests/MemoryUtilsTests.cs b/src/OffiUtils.Tests/MemoryUtilsTests.cs
index afbb76f..4065177 100644
--- a/src/OffiUtils.Tests/MemoryUtilsTests.cs
+++ b/src/OffiUtils.Tests/MemoryUtilsTests.cs
@@ -12,4 +12,4 @@ public void AsSpan()
span.Fill(0x69_240);
Assert.All(array, x => Assert.Equal(0x69_240, x));
}
-}
\ No newline at end of file
+}
diff --git a/src/OffiUtils.Tests/OffiUtils.Tests.csproj b/src/OffiUtils.Tests/OffiUtils.Tests.csproj
index 3c8beac..b84750e 100644
--- a/src/OffiUtils.Tests/OffiUtils.Tests.csproj
+++ b/src/OffiUtils.Tests/OffiUtils.Tests.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net8.0
enable
enable
@@ -10,13 +10,13 @@
-
-
-
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/src/OffiUtils.Tests/StringUtilsTests.cs b/src/OffiUtils.Tests/StringUtilsTests.cs
index 8c44d60..76f8952 100644
--- a/src/OffiUtils.Tests/StringUtilsTests.cs
+++ b/src/OffiUtils.Tests/StringUtilsTests.cs
@@ -85,4 +85,4 @@ public void ToUpper()
StringUtils.ToUpperAsciiInvariant(str);
Assert.Equal("ABC", str);
}
-}
\ No newline at end of file
+}
diff --git a/src/OffiUtils/Delegates.cs b/src/OffiUtils/Delegates.cs
index 82e7140..2529a0e 100644
--- a/src/OffiUtils/Delegates.cs
+++ b/src/OffiUtils/Delegates.cs
@@ -2,4 +2,4 @@
internal delegate string FastAllocateStringDelegate(int length);
internal delegate ref char GetRawStringDataDelegate(string instance);
-internal delegate bool TryUnescapeDelegate(ReadOnlySpan source, Span destination, out int written);
\ No newline at end of file
+internal delegate bool TryUnescapeDelegate(ReadOnlySpan source, Span destination, out int written);
diff --git a/src/OffiUtils/JsonUtils.cs b/src/OffiUtils/JsonUtils.cs
index e6c6c19..0fc713d 100644
--- a/src/OffiUtils/JsonUtils.cs
+++ b/src/OffiUtils/JsonUtils.cs
@@ -48,4 +48,4 @@ public static string GetUnescapedString(ReadOnlySpan utf8Source)
return utf8String;
}
-}
\ No newline at end of file
+}
diff --git a/src/OffiUtils/MemoryUtils.cs b/src/OffiUtils/MemoryUtils.cs
index 8f73c04..a6038a8 100644
--- a/src/OffiUtils/MemoryUtils.cs
+++ b/src/OffiUtils/MemoryUtils.cs
@@ -29,4 +29,4 @@ public static Span AsSpan(ReadOnlySpan readonlySpan)
ref var reference = ref MemoryMarshal.GetReference(readonlySpan);
return MemoryMarshal.CreateSpan(ref reference, readonlySpan.Length);
}
-}
\ No newline at end of file
+}
diff --git a/src/OffiUtils/OffiUtils.csproj b/src/OffiUtils/OffiUtils.csproj
index e8e070c..0442457 100644
--- a/src/OffiUtils/OffiUtils.csproj
+++ b/src/OffiUtils/OffiUtils.csproj
@@ -1,10 +1,37 @@
- net7.0
+ net8.0
enable
enable
true
+
+ true
+ NotOfficer
+ NotOfficer
+ Utils for .NET
+ Copyright (c) 2024 NotOfficer
+ LICENSE
+ https://github.com/NotOfficer/Utils
+ icon.png
+ https://github.com/NotOfficer/Utils
+ git
+ utils
+ 1.0.0.0
+ 1.0.0.0
+ 1.0.0
+ en
+
+
+ True
+
+
+
+ True
+
+
+
+
diff --git a/src/OffiUtils/StringUtils.cs b/src/OffiUtils/StringUtils.cs
index ab26bc8..bf24912 100644
--- a/src/OffiUtils/StringUtils.cs
+++ b/src/OffiUtils/StringUtils.cs
@@ -147,4 +147,4 @@ public static string RealClone(string value)
value.AsSpan().CopyTo(GetSpan(clone));
return clone;
}
-}
\ No newline at end of file
+}