seshat-tts
CI / Tests (3.10) (push) Waiting to run
CI / Tests (3.13) (push) Waiting to run

This commit is contained in:
2026-05-22 05:54:01 -04:00
commit 75fc1afa53
48 changed files with 4192 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
$ErrorActionPreference = "Stop"
$Root = Split-Path -Parent $PSScriptRoot
$OutDir = Join-Path $Root "dist\launcher"
$OutExe = Join-Path $OutDir "seshat-tts.exe"
$BuildDir = Join-Path $Root "build\launcher"
$Source = Join-Path $BuildDir "SeshatTtsLauncher.cs"
$Project = Join-Path $BuildDir "SeshatTtsLauncher.csproj"
$Icon = Join-Path $Root "resources\seshat-tts.ico"
$BuildIcon = Join-Path $BuildDir "seshat-tts.ico"
New-Item -ItemType Directory -Force -Path $OutDir | Out-Null
New-Item -ItemType Directory -Force -Path $BuildDir | Out-Null
Get-ChildItem -Path (Join-Path $BuildDir "*") -File -Include "*.cs", "*.csproj" | Remove-Item -Force
foreach ($GeneratedDir in @("bin", "obj")) {
$Path = Join-Path $BuildDir $GeneratedDir
if (Test-Path $Path) {
Remove-Item -Path $Path -Recurse -Force
}
}
if (Test-Path $Icon) {
Copy-Item -Path $Icon -Destination $BuildIcon -Force
}
@'
using System;
using System.Diagnostics;
using System.IO;
public static class SeshatTtsLauncher
{
public static int Main(string[] args)
{
string exeDir = AppDomain.CurrentDomain.BaseDirectory;
string root = Path.GetFullPath(Path.Combine(exeDir, "..", ".."));
string venvPythonw = Path.Combine(root, ".venv", "Scripts", "pythonw.exe");
string venvPython = Path.Combine(root, ".venv", "Scripts", "python.exe");
string python = File.Exists(venvPythonw) ? venvPythonw :
File.Exists(venvPython) ? venvPython :
"pythonw.exe";
string arguments = "-m seshat_tts";
if (args.Length > 0)
{
arguments += " " + string.Join(" ", Array.ConvertAll(args, Quote));
}
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = python;
start.Arguments = arguments;
start.WorkingDirectory = root;
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.EnvironmentVariables["PYTHONPATH"] = Path.Combine(root, "src");
try
{
Process process = Process.Start(start);
return process == null ? 1 : 0;
}
catch
{
start.FileName = "python.exe";
start.CreateNoWindow = false;
Process process = Process.Start(start);
return process == null ? 1 : 0;
}
}
private static string Quote(string value)
{
if (value.IndexOfAny(new char[] {' ', '\t', '"'}) < 0)
{
return value;
}
return "\"" + value.Replace("\"", "\\\"") + "\"";
}
}
'@ | Set-Content -Path $Source -Encoding UTF8
$compiler = Get-Command csc.exe -ErrorAction SilentlyContinue
if ($compiler) {
$iconArg = if (Test-Path $Icon) { "/win32icon:$Icon" } else { $null }
& $compiler.Source /nologo /target:winexe /out:$OutExe $iconArg $Source
} else {
$dotnet = Get-Command dotnet.exe -ErrorAction SilentlyContinue
if (-not $dotnet) {
throw "No C# compiler found. Install the .NET SDK or add csc.exe to PATH."
}
@'
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>disable</Nullable>
<AssemblyName>seshat-tts</AssemblyName>
<ApplicationIcon>seshat-tts.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Content Include="seshat-tts.ico" />
</ItemGroup>
</Project>
'@ | Set-Content -Path $Project -Encoding UTF8
dotnet publish $Project -c Release -o $OutDir --nologo
}
Write-Host "Built fast launcher: $OutExe"
Write-Host "This launcher expects dependencies installed in .venv or the active Python environment."