-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp-context-extensions-example.cs
More file actions
executable file
·56 lines (43 loc) · 2.4 KB
/
Copy pathapp-context-extensions-example.cs
File metadata and controls
executable file
·56 lines (43 loc) · 2.4 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
#!/usr/bin/dotnet --
#:project $(SourceDirectory)timewarp-amuru/timewarp-amuru.csproj
#:property LangVersion=preview
#:property EnablePreviewFeatures=true
// Example demonstrating AppContext extensions for .NET 10 file-based apps
using TimeWarp.Amuru;
using TimeWarp.Terminal;
await TimeWarpTerminal.Default.WriteLineAsync("=== AppContext Extensions Example ===\n");
// These extension methods provide access to .NET 10's file-based app context data
// without using magic strings
await TimeWarpTerminal.Default.WriteLineAsync("File-based app context information:");
await TimeWarpTerminal.Default.WriteLineAsync($"Entry Point File Path: {AppContext.EntryPointFilePath()}");
await TimeWarpTerminal.Default.WriteLineAsync($"Entry Point Directory: {AppContext.EntryPointFileDirectoryPath()}");
// These are equivalent to the magic string approach:
// AppContext.GetData("EntryPointFilePath")
// AppContext.GetData("EntryPointFileDirectoryPath")
await TimeWarpTerminal.Default.WriteLineAsync("\nUsing the information:");
string? scriptPath = AppContext.EntryPointFilePath();
if (scriptPath != null)
{
await TimeWarpTerminal.Default.WriteLineAsync($"Script name: {Path.GetFileName(scriptPath)}");
await TimeWarpTerminal.Default.WriteLineAsync($"Script extension: {Path.GetExtension(scriptPath)}");
}
string? scriptDir = AppContext.EntryPointFileDirectoryPath();
if (scriptDir != null)
{
await TimeWarpTerminal.Default.WriteLineAsync($"Parent directory: {Path.GetFileName(scriptDir)}");
// List other scripts in the same directory
CommandOutput findResult = await Shell.Builder("find")
.WithArguments(scriptDir, "-maxdepth", "1", "-name", "*.cs", "-type", "f")
.CaptureAsync();
string[] otherScripts = findResult.GetStdoutLines();
await TimeWarpTerminal.Default.WriteLineAsync($"\nOther scripts in {Path.GetFileName(scriptDir)}:");
foreach (string script in otherScripts)
{
await TimeWarpTerminal.Default.WriteLineAsync($" - {Path.GetFileName(script)}");
}
}
await TimeWarpTerminal.Default.WriteLineAsync("\n✅ AppContext extensions demonstration complete!");
await TimeWarpTerminal.Default.WriteLineAsync("Testing CA1303 suppression with a literal string!");
// Test CA2007 suppression - await without ConfigureAwait
CommandOutput echoResult = await Shell.Builder("echo").WithArguments("CA2007 test").CaptureAsync();
await TimeWarpTerminal.Default.WriteLineAsync($"CA2007 test result: {echoResult.Stdout.Trim()}");