mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-13 13:53:47 +00:00
Improved dev experience & allow native .NET debugging (#460)
This commit is contained in:
1 parent
c0cf620fe3
commit
4ca1fd54d9
7 files changed
+139
-42
No files matched your search
@@ -25,14 +25,14 @@ internal sealed class Program
|
||||
public static IServiceProvider SERVICE_PROVIDER = null!;
|
||||
public static ILoggerFactory LOGGER_FACTORY = null!;
|
||||
|
||||
public static async Task Main(string[] args)
|
||||
public static async Task Main()
|
||||
{
|
||||
if(args.Length == 0)
|
||||
{
|
||||
Console.WriteLine("Error: Please provide the port of the runtime API.");
|
||||
return;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
// Read the environment variables from the .env file:
|
||||
var envFilePath = Path.Combine("..", "..", "startup.env");
|
||||
await EnvFile.Apply(envFilePath);
|
||||
#endif
|
||||
|
||||
// Read the secret key for the IPC from the AI_STUDIO_SECRET_KEY environment variable:
|
||||
var secretPasswordEncoded = Environment.GetEnvironmentVariable("AI_STUDIO_SECRET_PASSWORD");
|
||||
if(string.IsNullOrWhiteSpace(secretPasswordEncoded))
|
||||
@@ -58,6 +58,13 @@ internal sealed class Program
|
||||
return;
|
||||
}
|
||||
|
||||
var rustApiPort = Environment.GetEnvironmentVariable("AI_STUDIO_API_PORT");
|
||||
if(string.IsNullOrWhiteSpace(rustApiPort))
|
||||
{
|
||||
Console.WriteLine("Error: The AI_STUDIO_API_PORT environment variable is not set.");
|
||||
return;
|
||||
}
|
||||
|
||||
var apiToken = Environment.GetEnvironmentVariable("AI_STUDIO_API_TOKEN");
|
||||
if(string.IsNullOrWhiteSpace(apiToken))
|
||||
{
|
||||
@@ -67,7 +74,6 @@ internal sealed class Program
|
||||
|
||||
API_TOKEN = apiToken;
|
||||
|
||||
var rustApiPort = args[0];
|
||||
using var rust = new RustService(rustApiPort, certificateFingerprint);
|
||||
var appPort = await rust.GetAppPort();
|
||||
if(appPort == 0)
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#if DEBUG
|
||||
using System.Text;
|
||||
|
||||
namespace AIStudio.Tools;
|
||||
|
||||
/// <summary>
|
||||
/// Read environment variables for the application from an .env file.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// We consider this feature a security issue. Therefore, it is only
|
||||
/// available in DEBUG mode. To ensure this, we remove the code
|
||||
/// from any release build.
|
||||
/// </remarks>
|
||||
public static class EnvFile
|
||||
{
|
||||
public static async Task Apply(string filePath)
|
||||
{
|
||||
if(!File.Exists(filePath))
|
||||
{
|
||||
Console.WriteLine($"Error: The .env file '{filePath}' does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
var lines = await File.ReadAllLinesAsync(filePath, Encoding.UTF8);
|
||||
foreach (var line in lines)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(line) || line.Trim().StartsWith('#'))
|
||||
continue;
|
||||
|
||||
var parts = line.Split(['='], 2);
|
||||
if (parts.Length != 2)
|
||||
continue;
|
||||
|
||||
var key = parts[0].Trim();
|
||||
var value = parts[1].Trim();
|
||||
|
||||
Environment.SetEnvironmentVariable(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in new issue
Block a user