mirror of
https://github.com/Tribufu/TribufuDotNet
synced 2026-08-10 13:21:06 +00:00
Migrate to new tribufu project structure
This commit is contained in:
parent
be25ee8fe3
commit
6ef2762a64
114 changed files with 35 additions and 26 deletions
50
Source/Tribufu.Configuration/ConfigurationLoader.cs
Normal file
50
Source/Tribufu.Configuration/ConfigurationLoader.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright (c) Tribufu. All Rights Reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System.IO;
|
||||
using Tomlyn.Extensions.Configuration;
|
||||
using Tribufu.Logging;
|
||||
using Tribufu.Platform;
|
||||
|
||||
namespace Tribufu.Configuration
|
||||
{
|
||||
public static class ConfigurationLoader
|
||||
{
|
||||
public static IConfiguration Load(string[] fileNames)
|
||||
{
|
||||
var configDirectory = Paths.GetApplicationConfigDirectory();
|
||||
var configurationBuilder = new ConfigurationBuilder();
|
||||
configurationBuilder.AddEnvironmentVariables();
|
||||
|
||||
foreach (var fileName in fileNames)
|
||||
{
|
||||
var fullPath = Path.Combine(configDirectory, fileName);
|
||||
if (!File.Exists(fullPath))
|
||||
{
|
||||
Logger.Debug($"Config file '{fullPath}' not found, skipping.");
|
||||
continue;
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(fullPath).ToLowerInvariant();
|
||||
switch (extension)
|
||||
{
|
||||
case ".ini":
|
||||
configurationBuilder.AddIniFile(fullPath, true, false);
|
||||
break;
|
||||
case ".json":
|
||||
configurationBuilder.AddJsonFile(fullPath, true, false);
|
||||
break;
|
||||
case ".toml":
|
||||
configurationBuilder.AddTomlFile(fullPath, true, false);
|
||||
break;
|
||||
default:
|
||||
Logger.Warn($"Unsupported config file extension: {extension}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return configurationBuilder.Build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright (c) Tribufu. All Rights Reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Tribufu.Configuration.Extensions
|
||||
{
|
||||
public static class IConfigurationExtensions
|
||||
{
|
||||
public static string? Get(this IConfiguration configuration, string prefix, string key)
|
||||
{
|
||||
var section = configuration.GetSection(prefix);
|
||||
return !section.Exists() ? configuration[$"{prefix}_{key}"] : section[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
1
Source/Tribufu.Configuration/README.md
Normal file
1
Source/Tribufu.Configuration/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Tribufu Configuration
|
||||
32
Source/Tribufu.Configuration/Tribufu.Configuration.csproj
Normal file
32
Source/Tribufu.Configuration/Tribufu.Configuration.csproj
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<PackageId>Tribufu.Configuration</PackageId>
|
||||
<Description>Tribufu Configuration</Description>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<IsPublishable>false</IsPublishable>
|
||||
<Nullable>enable</Nullable>
|
||||
<OutputType>Library</OutputType>
|
||||
<TargetFrameworks>net6.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath="\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
<PackageReference Include="Tomlyn.Extensions.Configuration" />
|
||||
<PackageReference Include="Tomlyn" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Tribufu.Logging\Tribufu.Logging.csproj" />
|
||||
<ProjectReference Include="..\Tribufu.Platform\Tribufu.Platform.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Loading…
Add table
Add a link
Reference in a new issue