feat(launcher): prepare Campaign LA11 user gate
This commit is contained in:
parent
09d84387a8
commit
f881e5b467
24 changed files with 3538 additions and 58 deletions
|
|
@ -0,0 +1,54 @@
|
|||
using System.Text.Json;
|
||||
|
||||
if (args.Length < 4
|
||||
|| args[0] != "wait-for-break"
|
||||
|| string.IsNullOrWhiteSpace(args[1])
|
||||
|| string.IsNullOrWhiteSpace(args[2]))
|
||||
{
|
||||
return 64;
|
||||
}
|
||||
|
||||
string readyPath = Path.GetFullPath(args[1]);
|
||||
string breakPath = Path.GetFullPath(args[2]);
|
||||
string label = args[3];
|
||||
string[] payloadArguments = args.Skip(4).ToArray();
|
||||
using var stopped = new ManualResetEventSlim(false);
|
||||
ConsoleCancelEventHandler handler = (_, eventArgs) =>
|
||||
{
|
||||
if (eventArgs.SpecialKey != ConsoleSpecialKey.ControlBreak)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
eventArgs.Cancel = true;
|
||||
try
|
||||
{
|
||||
File.WriteAllText(breakPath, label);
|
||||
}
|
||||
finally
|
||||
{
|
||||
stopped.Set();
|
||||
}
|
||||
};
|
||||
Console.CancelKeyPress += handler;
|
||||
try
|
||||
{
|
||||
string stdin = Console.In.ReadToEnd();
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(readyPath)!);
|
||||
File.WriteAllText(
|
||||
readyPath,
|
||||
JsonSerializer.Serialize(new
|
||||
{
|
||||
processId = Environment.ProcessId,
|
||||
label,
|
||||
arguments = payloadArguments,
|
||||
stdinLength = stdin.Length,
|
||||
stdinLineCount = stdin.Count(character => character == '\n'),
|
||||
}));
|
||||
|
||||
return stopped.Wait(TimeSpan.FromSeconds(30)) ? 0 : 75;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Console.CancelKeyPress -= handler;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue