This commit is contained in:
57
Program.cs
57
Program.cs
@@ -1,2 +1,55 @@
|
|||||||
// See https://aka.ms/new-console-template for more information
|
using System.Text.Json;
|
||||||
Console.WriteLine("Hello, World! {0}", string.Join("; ", args));
|
using s8n_runtime.ViewModels;
|
||||||
|
|
||||||
|
string workflowViewFile = Environment.GetEnvironmentVariable("WORKFLOW_FILE")!;
|
||||||
|
string projectDirectory = Environment.GetEnvironmentVariable("PROJECT_DIR") ?? $"/sources";
|
||||||
|
|
||||||
|
var workflow = JsonSerializer.Deserialize<S8nWorkflow>(File.OpenRead(workflowViewFile), JsonSerializerOptions.Web)!;
|
||||||
|
|
||||||
|
var edgesFile = Path.Combine("/sources", $"{workflow.Name}.Edges.cs");
|
||||||
|
var nodesFile = Path.Combine("/sources", $"{workflow.Name}.Nodes.cs");
|
||||||
|
|
||||||
|
// Linking
|
||||||
|
const string templateEdges = """
|
||||||
|
// !Warning! Please, don't change this file. Code autogenerated
|
||||||
|
#pragma warning disable CS8622 // Nullability of reference types in type of parameter doesn't match the target delegate (possibly because of nullability attributes).
|
||||||
|
|
||||||
|
public partial class {0}
|
||||||
|
{{
|
||||||
|
public void Connect()
|
||||||
|
{{
|
||||||
|
// edges connect here >>>
|
||||||
|
{1}
|
||||||
|
}}
|
||||||
|
|
||||||
|
public void Disconnect()
|
||||||
|
{{
|
||||||
|
// edges disconnect here >>>
|
||||||
|
{2}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
""";
|
||||||
|
const string templateNodes = """
|
||||||
|
// !Warning! Please, don't change this file. Code autogenerated
|
||||||
|
|
||||||
|
public partial class {0}
|
||||||
|
{{
|
||||||
|
// nodes here >>>
|
||||||
|
|
||||||
|
{1}
|
||||||
|
}}
|
||||||
|
""";
|
||||||
|
|
||||||
|
static string GetConnection(WorkflowEdge edge) =>
|
||||||
|
$"{edge.Source}{(string.IsNullOrEmpty(edge.SourceHandle) ? string.Empty : ".")}{edge.SourceHandle ?? string.Empty} {(
|
||||||
|
edge.IsEvent ? "+" : string.Empty
|
||||||
|
)}= {edge.Target}{(string.IsNullOrEmpty(edge.TargetHandle) ? string.Empty : ".")}{edge.TargetHandle ?? string.Empty}";
|
||||||
|
|
||||||
|
string edgesConnections = string.Join("\n", workflow.Edges.Select(e => $"// {e.Id}\n {GetConnection(e)};"));
|
||||||
|
var edges = string.Format(templateEdges, workflow.Name, edgesConnections, edgesConnections.Replace('+', '-'));
|
||||||
|
string nodesFields = string.Join("\n ", workflow.Nodes.Select(n => $"// {n.Data?.Label}\n public {n.Class} {n.Id};"));
|
||||||
|
var nodes = string.Format(templateNodes, workflow.Name, nodesFields);
|
||||||
|
|
||||||
|
await File.WriteAllTextAsync(edgesFile, edges);
|
||||||
|
await File.WriteAllTextAsync(nodesFile, nodes);
|
||||||
|
|||||||
@@ -8,4 +8,8 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Sharp8N.Runtime" Version="1.0.10" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user