diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index 56933cb..229d533 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -176,6 +176,6 @@ jobs: run: | cargo build - name: Test with xUnit - working-directory: ./duper_uniffi/tests/csharp + working-directory: ./duper_uniffi/tests/dotnet run: | dotnet test diff --git a/duper_uniffi/README.md b/duper_uniffi/README.md index cca66cd..c9a5933 100644 --- a/duper_uniffi/README.md +++ b/duper_uniffi/README.md @@ -10,70 +10,3 @@ UniFFI bindings for Duper. [Check out the official website for Duper.](https://duper.dev.br) - -## Example - -```c# -using System.Net; -using Duper; - -namespace Example -{ - [Duper("UserProfile")] - public class UserProfile - { - [Duper("Uuid")] - public required string @id; // Support for public fields, too - public required string @username { get; set; } - [Duper("EmailAddress")] - public required string @email { get; set; } - public required UserSettings @settings { get; set; } - public float @score { get; set; } - [Duper("Png")] - public required byte[] @avatar { get; set; } - public string? @bio { get; set; } - [Duper(Key = "last_logins")] - public required IList<(IPAddress, DateTimeOffset)> LastLogins { get; set; } - } - - public class UserSettings - { - [Duper(Key = "dark mode")] - public bool DarkMode { get; set; } - [Duper("Locale")] - public required string @language { get; set; } - public Dictionary? @metadata { get; set; } - } - - public class Example - { - public static void Main(string[] args) - { - UserProfile userProfile = DuperSerializer.Deserialize(""" - UserProfile({ - id: Uuid("f111c275-b4ce-4392-8e5b-19067ce39b53"), - username: "EpicEric", - email: EmailAddress("eric@duper.dev.br"), - settings: { - "dark mode": true, - language: Locale("pt-BR"), - metadata: null, - }, - score: 120.25, - // Support for bytes, woohoo! - avatar: Png(b64"iVBORw0KGgoAAAANSUhEUgAAAGQ"), - bio: r#"Hello! I'm a super "duper" user!"#, - last_logins: [ - (IPv4Address("192.168.1.100"), Instant('2024-03-20T14:30:00+00:00')), - ], - }) - """) ?? throw new ApplicationException("shouldn't be null"); - - Console.WriteLine(userProfile.settings.DarkMode); - Console.WriteLine(userProfile.LastLogins[0].Item2); - - Console.WriteLine(DuperSerializer.Serialize(userProfile)); - } - } -} -``` diff --git a/duper_uniffi/csharp/README.md b/duper_uniffi/csharp/README.md deleted file mode 100644 index 7f2a9c7..0000000 --- a/duper_uniffi/csharp/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Duper: The format that's super! - -![GitHub license](https://img.shields.io/github/license/EpicEric/duper) - -C# bindings for Duper. - -[Check out the official website for Duper.](https://duper.dev.br) diff --git a/duper_uniffi/csharp/.gitignore b/duper_uniffi/dotnet/.gitignore similarity index 100% rename from duper_uniffi/csharp/.gitignore rename to duper_uniffi/dotnet/.gitignore diff --git a/duper_uniffi/csharp/CHANGELOG.md b/duper_uniffi/dotnet/CHANGELOG.md similarity index 100% rename from duper_uniffi/csharp/CHANGELOG.md rename to duper_uniffi/dotnet/CHANGELOG.md diff --git a/duper_uniffi/csharp/Duper.csproj b/duper_uniffi/dotnet/Duper.csproj similarity index 100% rename from duper_uniffi/csharp/Duper.csproj rename to duper_uniffi/dotnet/Duper.csproj diff --git a/duper_uniffi/csharp/Duper.nuspec b/duper_uniffi/dotnet/Duper.nuspec similarity index 100% rename from duper_uniffi/csharp/Duper.nuspec rename to duper_uniffi/dotnet/Duper.nuspec diff --git a/duper_uniffi/csharp/DuperAttribute.cs b/duper_uniffi/dotnet/DuperAttribute.cs similarity index 100% rename from duper_uniffi/csharp/DuperAttribute.cs rename to duper_uniffi/dotnet/DuperAttribute.cs diff --git a/duper_uniffi/csharp/DuperSerializer.cs b/duper_uniffi/dotnet/DuperSerializer.cs similarity index 100% rename from duper_uniffi/csharp/DuperSerializer.cs rename to duper_uniffi/dotnet/DuperSerializer.cs diff --git a/duper_uniffi/dotnet/README.md b/duper_uniffi/dotnet/README.md new file mode 100644 index 0000000..c416f47 --- /dev/null +++ b/duper_uniffi/dotnet/README.md @@ -0,0 +1,74 @@ +# Duper: The format that's super! + +![GitHub license](https://img.shields.io/github/license/EpicEric/duper) + +.NET bindings for Duper. + +[Check out the official website for Duper.](https://duper.dev.br) + +## C# example + +```c# +using System.Net; +using Duper; + +namespace Example +{ + [Duper("UserProfile")] + public class UserProfile + { + [Duper("Uuid")] + public required string @id; // Support for public fields, too + public required string @username { get; set; } + [Duper("EmailAddress")] + public required string @email { get; set; } + public required UserSettings @settings { get; set; } + public float @score { get; set; } + [Duper("Png")] + public required byte[] @avatar { get; set; } + public string? @bio { get; set; } + [Duper(Key = "last_logins")] + public required IList<(IPAddress, DateTimeOffset)> LastLogins { get; set; } + } + + public class UserSettings + { + [Duper(Key = "dark mode")] + public bool DarkMode { get; set; } + [Duper("Locale")] + public required string @language { get; set; } + public Dictionary? @metadata { get; set; } + } + + public class Example + { + public static void Main(string[] args) + { + UserProfile userProfile = DuperSerializer.Deserialize(""" + UserProfile({ + id: Uuid("f111c275-b4ce-4392-8e5b-19067ce39b53"), + username: "EpicEric", + email: EmailAddress("eric@duper.dev.br"), + settings: { + "dark mode": true, + language: Locale("pt-BR"), + metadata: null, + }, + score: 120.25, + // Support for bytes, woohoo! + avatar: Png(b64"iVBORw0KGgoAAAANSUhEUgAAAGQ"), + bio: r#"Hello! I'm a super "duper" user!"#, + last_logins: [ + (IPv4Address("192.168.1.100"), Instant('2024-03-20T14:30:00+00:00')), + ], + }) + """) ?? throw new ApplicationException("shouldn't be null"); + + Console.WriteLine(userProfile.settings.DarkMode); + Console.WriteLine(userProfile.LastLogins[0].Item2); + + Console.WriteLine(DuperSerializer.Serialize(userProfile)); + } + } +} +``` diff --git a/duper_uniffi/csharp/duper.cs b/duper_uniffi/dotnet/duper.cs similarity index 100% rename from duper_uniffi/csharp/duper.cs rename to duper_uniffi/dotnet/duper.cs diff --git a/duper_uniffi/csharp/icon.png b/duper_uniffi/dotnet/icon.png similarity index 100% rename from duper_uniffi/csharp/icon.png rename to duper_uniffi/dotnet/icon.png diff --git a/duper_uniffi/justfile b/duper_uniffi/justfile index 59e7a1f..03a330a 100644 --- a/duper_uniffi/justfile +++ b/duper_uniffi/justfile @@ -2,7 +2,7 @@ default: just --list bindgen: - uniffi-bindgen-cs src/duper.udl --config uniffi.toml --out-dir csharp + uniffi-bindgen-cs src/duper.udl --config uniffi.toml --out-dir dotnet build-debug: cargo build @@ -11,13 +11,13 @@ build-release: cargo build --release --target x86_64-unknown-linux-gnu cargo build --release --target x86_64-pc-windows-gnu -[working-directory: 'csharp'] -package-csharp: build-release bindgen +[working-directory: 'dotnet'] +package-dotnet: build-release bindgen dotnet build dotnet pack -test: build-debug bindgen test-csharp +test: build-debug bindgen test-dotnet -[working-directory: 'tests/csharp'] -test-csharp: +[working-directory: 'tests/dotnet'] +test-dotnet: dotnet test diff --git a/duper_uniffi/tests/csharp/.gitignore b/duper_uniffi/tests/dotnet/.gitignore similarity index 100% rename from duper_uniffi/tests/csharp/.gitignore rename to duper_uniffi/tests/dotnet/.gitignore diff --git a/duper_uniffi/tests/csharp/Duper.Tests.csproj b/duper_uniffi/tests/dotnet/Duper.Tests.csproj similarity index 93% rename from duper_uniffi/tests/csharp/Duper.Tests.csproj rename to duper_uniffi/tests/dotnet/Duper.Tests.csproj index 4af2095..40d84aa 100644 --- a/duper_uniffi/tests/csharp/Duper.Tests.csproj +++ b/duper_uniffi/tests/dotnet/Duper.Tests.csproj @@ -21,7 +21,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/duper_uniffi/tests/csharp/DuperSerializerTests.cs b/duper_uniffi/tests/dotnet/DuperSerializerTests.cs similarity index 100% rename from duper_uniffi/tests/csharp/DuperSerializerTests.cs rename to duper_uniffi/tests/dotnet/DuperSerializerTests.cs diff --git a/duper_uniffi/tests/csharp/GlobalUsings.cs b/duper_uniffi/tests/dotnet/GlobalUsings.cs similarity index 100% rename from duper_uniffi/tests/csharp/GlobalUsings.cs rename to duper_uniffi/tests/dotnet/GlobalUsings.cs