2025-06-24 10:19:30 +05:30

48 lines
1.4 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using Vault.Demo.hashicorp.Console.Helper;
namespace Vault.Demo.hashicorp.Console;
internal class App
{
private readonly IConnectionStringProvider _connectionStringProvider;
public App(IConnectionStringProvider connectionStringProvider) =>
this._connectionStringProvider = connectionStringProvider;
public async Task Run(string arg)
{
var files = Directory.GetFiles(arg, "appsettings*.json", SearchOption.AllDirectories);
foreach (var file in files)
{
if (file.Contains("/bin/") || file.Contains("\\bin\\"))
continue;
await UpdateAppSettingFile(file);
}
}
private async Task UpdateAppSettingFile(string file)
{
var content = JObject.Parse(await File.ReadAllTextAsync(file));
var jsonReader = content["ConnectionStrings"] as JObject;
if (jsonReader == null)
return;
foreach (var item in jsonReader.Properties())
{
var value = await _connectionStringProvider.GetConnectionString(item.Name);
if (value == string.Empty)
continue;
jsonReader[item.Name] = value;
}
await File.WriteAllTextAsync(file, jsonReader.ToString());
}
}