-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-all-scripts.csx
More file actions
67 lines (52 loc) · 1.87 KB
/
Copy pathbuild-all-scripts.csx
File metadata and controls
67 lines (52 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#nullable enable
DirectoryInfo scriptDir = new("./src");
DirectoryInfo outputDir = new("./JS");
static string GetRelativeDir(DirectoryInfo baseDir, DirectoryInfo currentDir) =>
currentDir.FullName.Replace(baseDir.FullName, string.Empty);
List<FileInfo> buildFiles = [];
Console.WriteLine($"Building from {scriptDir.FullName}");
//only go one layer deep
foreach (var dir in scriptDir.GetDirectories())
{
//check each file for a main.ts
foreach (var file in dir.GetFiles())
{
FileInfo? main = null;
if (file.Name.Equals("main.ts", StringComparison.OrdinalIgnoreCase))
{
main = file;
}
if (main is null)
continue;
var input = main.FullName;
var relativeDir = GetRelativeDir(scriptDir, dir).Trim(Path.PathSeparator).Trim(Path.AltDirectorySeparatorChar);
var outputName = Path.GetFileName(Path.GetDirectoryName(main.FullName)) ?? "unknown";
var output = Path.Combine(outputDir.FullName, outputName + ".js");
var buildString = $"npx esbuild {input} --bundle --outfile={output}";
/*Console.WriteLine($"""
Details:
In:{input}
Rel:{relativeDir}
OutNa:{outputName}
Out:{output}
Build:{buildString}
""");*/
Console.WriteLine($"Building {dir.Name}/{file.Name} to {output}");
var process = new Process();
process.StartInfo.FileName = "npx";
process.StartInfo.Arguments = buildString;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
string outputResult = process.StandardOutput.ReadToEnd();
string errorResult = process.StandardError.ReadToEnd();
process.WaitForExit();
Console.WriteLine(outputResult);
if (!string.IsNullOrEmpty(errorResult))
{
Console.Error.WriteLine(errorResult);
}
}
}