diff --git a/.gitignore b/.gitignore index d4dfda9..fc27d6b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ riderModule.iml *.DotSettings .DS_Store result +.profile* diff --git a/Gitea.App/Gitea.App.fsproj b/Gitea.App/Gitea.App.fsproj deleted file mode 100644 index 9a4258c..0000000 --- a/Gitea.App/Gitea.App.fsproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - Exe - net7.0 - - - - - - - - - - - - - - - - diff --git a/Gitea/Array.fs b/Gitea.Declarative.Lib/Array.fs similarity index 95% rename from Gitea/Array.fs rename to Gitea.Declarative.Lib/Array.fs index 405b09d..7b382da 100644 --- a/Gitea/Array.fs +++ b/Gitea.Declarative.Lib/Array.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative [] module internal Array = diff --git a/Gitea.Declarative.Lib/AssemblyInfo.fs b/Gitea.Declarative.Lib/AssemblyInfo.fs new file mode 100644 index 0000000..cf87b9a --- /dev/null +++ b/Gitea.Declarative.Lib/AssemblyInfo.fs @@ -0,0 +1,6 @@ +namespace Gitea.Declarative.AssemblyInfo + +open System.Runtime.CompilerServices + +[] +do () diff --git a/Gitea/ConfigSchema.fs b/Gitea.Declarative.Lib/ConfigSchema.fs similarity index 99% rename from Gitea/ConfigSchema.fs rename to Gitea.Declarative.Lib/ConfigSchema.fs index e1ec2d7..851d3ef 100644 --- a/Gitea/ConfigSchema.fs +++ b/Gitea.Declarative.Lib/ConfigSchema.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open System open System.IO diff --git a/Gitea/Domain.fs b/Gitea.Declarative.Lib/Domain.fs similarity index 96% rename from Gitea/Domain.fs rename to Gitea.Declarative.Lib/Domain.fs index 40518a9..e329a67 100644 --- a/Gitea/Domain.fs +++ b/Gitea.Declarative.Lib/Domain.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open System open System.ComponentModel diff --git a/Gitea/Gitea.fsproj b/Gitea.Declarative.Lib/Gitea.Declarative.Lib.fsproj similarity index 54% rename from Gitea/Gitea.fsproj rename to Gitea.Declarative.Lib/Gitea.Declarative.Lib.fsproj index 471e5cb..10a1102 100644 --- a/Gitea/Gitea.fsproj +++ b/Gitea.Declarative.Lib/Gitea.Declarative.Lib.fsproj @@ -1,9 +1,19 @@  - net6.0 + netstandard2.1 true true + true + Gitea.Declarative.Lib + Patrick Stevens + Specify Gitea configuration and reconcile it with a running Gitea server. + Copyright (c) Patrick Stevens 2022 + README.md + https://github.com/Smaug123/ + git + MIT + gitea @@ -18,11 +28,13 @@ + + diff --git a/Gitea/Gitea.fs b/Gitea.Declarative.Lib/Gitea.fs similarity index 99% rename from Gitea/Gitea.fs rename to Gitea.Declarative.Lib/Gitea.fs index 799c5c3..8a18ca9 100644 --- a/Gitea/Gitea.fs +++ b/Gitea.Declarative.Lib/Gitea.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open System open Microsoft.Extensions.Logging diff --git a/Gitea/GiteaClient.fs b/Gitea.Declarative.Lib/GiteaClient.fs similarity index 87% rename from Gitea/GiteaClient.fs rename to Gitea.Declarative.Lib/GiteaClient.fs index 05efb5f..fe712b6 100644 --- a/Gitea/GiteaClient.fs +++ b/Gitea.Declarative.Lib/GiteaClient.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open SwaggerProvider diff --git a/Gitea/GiteaConfig.schema.json b/Gitea.Declarative.Lib/GiteaConfig.schema.json similarity index 100% rename from Gitea/GiteaConfig.schema.json rename to Gitea.Declarative.Lib/GiteaConfig.schema.json diff --git a/Gitea/Map.fs b/Gitea.Declarative.Lib/Map.fs similarity index 94% rename from Gitea/Map.fs rename to Gitea.Declarative.Lib/Map.fs index 7951607..677c7d0 100644 --- a/Gitea/Map.fs +++ b/Gitea.Declarative.Lib/Map.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative [] module internal Map = diff --git a/Gitea/SerialisedConfigSchema.fs b/Gitea.Declarative.Lib/SerialisedConfigSchema.fs similarity index 98% rename from Gitea/SerialisedConfigSchema.fs rename to Gitea.Declarative.Lib/SerialisedConfigSchema.fs index 1de551d..580b7d7 100644 --- a/Gitea/SerialisedConfigSchema.fs +++ b/Gitea.Declarative.Lib/SerialisedConfigSchema.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open System open System.ComponentModel diff --git a/Gitea/swagger.v1.json b/Gitea.Declarative.Lib/swagger.v1.json similarity index 100% rename from Gitea/swagger.v1.json rename to Gitea.Declarative.Lib/swagger.v1.json diff --git a/Gitea/version.json b/Gitea.Declarative.Lib/version.json similarity index 100% rename from Gitea/version.json rename to Gitea.Declarative.Lib/version.json diff --git a/Gitea.Test/Gitea.Test.fsproj b/Gitea.Declarative.Test/Gitea.Declarative.Test.fsproj similarity index 88% rename from Gitea.Test/Gitea.Test.fsproj rename to Gitea.Declarative.Test/Gitea.Declarative.Test.fsproj index 85c0350..6a702c1 100644 --- a/Gitea.Test/Gitea.Test.fsproj +++ b/Gitea.Declarative.Test/Gitea.Declarative.Test.fsproj @@ -23,7 +23,7 @@ - + diff --git a/Gitea.Test/GiteaConfig.json b/Gitea.Declarative.Test/GiteaConfig.json similarity index 100% rename from Gitea.Test/GiteaConfig.json rename to Gitea.Declarative.Test/GiteaConfig.json diff --git a/Gitea.Test/TestJsonSchema.fs b/Gitea.Declarative.Test/TestJsonSchema.fs similarity index 90% rename from Gitea.Test/TestJsonSchema.fs rename to Gitea.Declarative.Test/TestJsonSchema.fs index a511bf8..56d82d9 100644 --- a/Gitea.Test/TestJsonSchema.fs +++ b/Gitea.Declarative.Test/TestJsonSchema.fs @@ -1,8 +1,8 @@ -namespace Gitea.Test +namespace Gitea.Declarative.Test open System.IO open System.Reflection -open Gitea +open Gitea.Declarative open NUnit.Framework open FsUnitTyped open Newtonsoft.Json @@ -21,7 +21,7 @@ module TestSchema = Assembly.GetExecutingAssembly().Location |> FileInfo |> fun fi -> fi.Directory - |> Utils.findFileAbove "Gitea/GiteaConfig.schema.json" + |> Utils.findFileAbove "Gitea.Declarative.Lib/GiteaConfig.schema.json" let existing = JSchema.Parse (File.ReadAllText schemaFile.FullName) let derived = schemaGen.Generate typeof @@ -58,7 +58,7 @@ module TestSchema = Assembly.GetExecutingAssembly().Location |> FileInfo |> fun fi -> fi.Directory - |> Utils.findFileAbove "Gitea/GiteaConfig.schema.json" + |> Utils.findFileAbove "Gitea.Declarative.Lib/GiteaConfig.schema.json" let schema = schemaGen.Generate typeof diff --git a/Gitea.Test/TestSwaggerJson.fs b/Gitea.Declarative.Test/TestSwaggerJson.fs similarity index 95% rename from Gitea.Test/TestSwaggerJson.fs rename to Gitea.Declarative.Test/TestSwaggerJson.fs index a94b6ee..5dd733c 100644 --- a/Gitea.Test/TestSwaggerJson.fs +++ b/Gitea.Declarative.Test/TestSwaggerJson.fs @@ -1,4 +1,4 @@ -namespace Gitea.Test +namespace Gitea.Declarative.Test open System.IO open System.Net.Http diff --git a/Gitea.Test/Utils.fs b/Gitea.Declarative.Test/Utils.fs similarity index 92% rename from Gitea.Test/Utils.fs rename to Gitea.Declarative.Test/Utils.fs index 944e519..8e6fd50 100644 --- a/Gitea.Test/Utils.fs +++ b/Gitea.Declarative.Test/Utils.fs @@ -1,4 +1,4 @@ -namespace Gitea.Test +namespace Gitea.Declarative.Test open System.IO diff --git a/Gitea.sln b/Gitea.Declarative.sln similarity index 72% rename from Gitea.sln rename to Gitea.Declarative.sln index b037add..df2d656 100644 --- a/Gitea.sln +++ b/Gitea.Declarative.sln @@ -1,10 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea", "Gitea\Gitea.fsproj", "{5F99DAF4-A9F0-4A76-A205-AF586C07FE40}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea.Declarative.Lib", "Gitea.Declarative.Lib\Gitea.Declarative.Lib.fsproj", "{5F99DAF4-A9F0-4A76-A205-AF586C07FE40}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea.Test", "Gitea.Test\Gitea.Test.fsproj", "{1E3E6442-11C5-4366-A1E8-A38E069934F7}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea.Declarative.Test", "Gitea.Declarative.Test\Gitea.Declarative.Test.fsproj", "{1E3E6442-11C5-4366-A1E8-A38E069934F7}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea.App", "Gitea.App\Gitea.App.fsproj", "{77DA39F7-AF01-448A-B71C-3D495EE2F6F4}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gitea.Declarative", "Gitea.Declarative\Gitea.Declarative.fsproj", "{77DA39F7-AF01-448A-B71C-3D495EE2F6F4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Gitea.Declarative/Gitea.Declarative.fsproj b/Gitea.Declarative/Gitea.Declarative.fsproj new file mode 100644 index 0000000..659abcb --- /dev/null +++ b/Gitea.Declarative/Gitea.Declarative.fsproj @@ -0,0 +1,31 @@ + + + Exe + net7.0 + true + Gitea.Declarative + Patrick Stevens + Reconcile the configuration of a running Gitea server with a declarative specification. + Copyright (c) Patrick Stevens 2022 + README.md + https://github.com/Smaug123/ + git + MIT + gitea + true + + + + + + + + + + + + + + + + diff --git a/Gitea.App/Program.fs b/Gitea.Declarative/Program.fs similarity index 99% rename from Gitea.App/Program.fs rename to Gitea.Declarative/Program.fs index ca9d009..fbb232a 100644 --- a/Gitea.App/Program.fs +++ b/Gitea.Declarative/Program.fs @@ -1,4 +1,4 @@ -namespace Gitea +namespace Gitea.Declarative open System open System.IO diff --git a/Gitea/AssemblyInfo.fs b/Gitea/AssemblyInfo.fs deleted file mode 100644 index ae38a8c..0000000 --- a/Gitea/AssemblyInfo.fs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Gitea.AssemblyInfo - -open System.Runtime.CompilerServices - -[] -do () diff --git a/flake.nix b/flake.nix index 0c7320c..b9f3568 100644 --- a/flake.nix +++ b/flake.nix @@ -14,8 +14,8 @@ }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; - projectFile = "./Gitea.App/Gitea.App.fsproj"; - testProjectFile = "./Gitea.Test/Gitea.Test.fsproj"; + projectFile = "./Gitea.Declarative/Gitea.Declarative.fsproj"; + testProjectFile = "./Gitea.Declarative.Test/Gitea.Declarative.Test.fsproj"; pname = "dotnet-gitea-declarative"; dotnet-sdk = pkgs.dotnet-sdk_7; dotnet-runtime = pkgs.dotnetCorePackages.runtime_7_0; @@ -62,6 +62,7 @@ })); default = pkgs.buildDotnetModule { pname = pname; + name = "gitea-declarative"; version = version; src = ./.; projectFile = projectFile; diff --git a/nix/deps.nix b/nix/deps.nix index d9f5262..decc9a3 100644 --- a/nix/deps.nix +++ b/nix/deps.nix @@ -11,6 +11,11 @@ version = "3.1.2"; sha256 = "0gsk2q93qw7pqxwd4pdyq5364wz0lvldcqqnf4amz13jaq86idmz"; }) + (fetchNuGet { + pname = "FSharp.Core"; + version = "6.0.0"; + sha256 = "1hjhvr39c1vpgrdmf8xln5q86424fqkvy9nirkr29vl2461d2039"; + }) (fetchNuGet { pname = "FSharp.Core"; version = "7.0.0"; @@ -27,34 +32,14 @@ sha256 = "07pc3qba6b7ljsdgxhjn5lx6jvzqx5rc20aibhpm1m195kmq097l"; }) (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Ref"; - version = "6.0.11"; - sha256 = "15n8x52njzxs2cwzzswi0kawm673jkvf2yga87jaf7hr729bfmcr"; + pname = "Microsoft.Bcl.AsyncInterfaces"; + version = "6.0.0"; + sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; }) (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; - version = "6.0.11"; - sha256 = "1pw25rnw5nm51wjdjbrhzhz9v0c8gjjqn2na2bam3c5xawvnqkqf"; - }) - (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; - version = "6.0.11"; - sha256 = "0vd5da34frm7avrc9d16d39s2k5sgzd260j5pkjsianhpjby5rbn"; - }) - (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; - version = "6.0.11"; - sha256 = "066018q4cr20404gi6i4x6xmq2hcvmlszrx5nv1gr6rlhg7xw6vh"; - }) - (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; - version = "6.0.11"; - sha256 = "0gy7whqd7blj6k7zyv3bgfs2hhwxvkjvvdf4axvnq43w1sv8s92d"; - }) - (fetchNuGet { - pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; - version = "6.0.11"; - sha256 = "1yaybb1rmwia5n60bahbykn32y7wad9hqp818hkc3ypxzisd2hwp"; + pname = "Microsoft.Bcl.AsyncInterfaces"; + version = "7.0.0"; + sha256 = "1waiggh3g1cclc81gmjrqbh128kwfjky3z79ma4bd2ms9pa3gvfm"; }) (fetchNuGet { pname = "Microsoft.CodeCoverage"; @@ -131,61 +116,6 @@ version = "17.3.2"; sha256 = "0pm06nxqi8aw04lciqy7iz8ln1qm5mx06cpwgqa2dfwvnjp7zxnm"; }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Host.linux-arm64"; - version = "6.0.11"; - sha256 = "0k8nl3hnr8h0ljw185dyhavrz2f7x6wavyadyf7f1v289jzasj72"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Host.linux-x64"; - version = "6.0.11"; - sha256 = "0bnq4dj7s5mspi7f8ihpp2y4bncb229ihrcmxvifsbb15mlhh8g4"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Host.osx-arm64"; - version = "6.0.11"; - sha256 = "09laias011a3v854zc962lcddjkc3bif3jwsi0blyk6v1m2mf4kl"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Host.osx-x64"; - version = "6.0.11"; - sha256 = "12g1ynar2n1jrrwa98fcp76gidj227c8swc6c3yfq4v3lgsws9mx"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Host.win-x64"; - version = "6.0.11"; - sha256 = "19x6xrjika4iz1xsclxcivffnml1byvazly2l16jk2g5yzab52bm"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Ref"; - version = "6.0.11"; - sha256 = "1j64ppdvh5s3pqr6sm3sq9bmk3fzj7l4j3bx023zn3dyllibpv68"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; - version = "6.0.11"; - sha256 = "03kvh4l5j8i8263wz7fmznzf5rs1grgazrhi3ayhynvhdal04mdk"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Runtime.linux-x64"; - version = "6.0.11"; - sha256 = "1f60dyl8pnj067i7bvmsbazcvrjkgrz9943vjj0ym49cfyq98cnw"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; - version = "6.0.11"; - sha256 = "12a0fqnwsnd6q8vdkdxylrzmmdwn4hfh58j1bdsii1kgm50qwmqp"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Runtime.osx-x64"; - version = "6.0.11"; - sha256 = "01bwpalzfw62qc708488aspyy8lpyjppj1ywfhswbqllaf00i5xs"; - }) - (fetchNuGet { - pname = "Microsoft.NETCore.App.Runtime.win-x64"; - version = "6.0.11"; - sha256 = "07ym9n57gr4vwr9x693f73nz979p1x839fk04yq0vav6v29s6fgk"; - }) (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; @@ -231,6 +161,11 @@ version = "2.0.0"; sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; }) + (fetchNuGet { + pname = "NETStandard.Library"; + version = "2.0.3"; + sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; + }) (fetchNuGet { pname = "Newtonsoft.Json"; version = "12.0.3"; @@ -546,6 +481,11 @@ version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; }) + (fetchNuGet { + pname = "System.Buffers"; + version = "4.5.1"; + sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; + }) (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; @@ -561,6 +501,11 @@ version = "4.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; }) + (fetchNuGet { + pname = "System.ComponentModel.Annotations"; + version = "5.0.0"; + sha256 = "021h7x98lblq9avm1bgpa4i31c2kgsa7zn4sqhxf39g087ar756j"; + }) (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.0"; @@ -581,6 +526,11 @@ version = "4.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "7.0.0"; + sha256 = "1jxhvsh5mzdf0sgb4dfmbys1b12ylyr5pcfyj1map354fiq3qsgm"; + }) (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; @@ -661,6 +611,16 @@ version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.4"; + sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; + }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.5"; + sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; + }) (fetchNuGet { pname = "System.Net.Http"; version = "4.3.4"; @@ -671,6 +631,16 @@ version = "4.3.0"; sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; }) + (fetchNuGet { + pname = "System.Numerics.Vectors"; + version = "4.4.0"; + sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; + }) + (fetchNuGet { + pname = "System.Numerics.Vectors"; + version = "4.5.0"; + sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; + }) (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; @@ -751,6 +721,11 @@ version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; }) + (fetchNuGet { + pname = "System.Runtime.CompilerServices.Unsafe"; + version = "4.5.3"; + sha256 = "1afi6s2r1mh1kygbjmfba6l4f87pi5sg13p4a48idqafli94qxln"; + }) (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; @@ -911,6 +886,11 @@ version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; }) + (fetchNuGet { + pname = "System.Threading.Tasks.Extensions"; + version = "4.5.4"; + sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; + }) (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11";