瀏覽代碼

Merge branch 'main' into #95-resource-tags

Signed-off-by: Tim Jones <t.jones@timmoth.com>
Tim Jones 1 月之前
父節點
當前提交
9173a30d43

+ 42 - 0
.github/workflows/generate-docs.yaml

@@ -0,0 +1,42 @@
+name: Generate CLI Docs
+
+on:
+  push:
+    branches: [ main ]
+  workflow_dispatch:
+
+jobs:
+  build-docs:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
+      - name: Setup .NET
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: '10.0.x'
+
+      - name: Ensure publish directory exists
+        run: mkdir -p RackPeek/publish
+
+      - name: Copy config folder into publish directory
+        run: |
+          if [ -d RackPeek/config ]; then
+            cp -r RackPeek/config RackPeek/publish/config
+          fi
+
+      - name: Make script executable
+        run: chmod +x generate-docs.sh
+
+      - name: Run documentation generator
+        run: ./generate-docs.sh
+
+      - name: Commit and push generated docs
+        run: |
+          git config user.name "github-actions"
+          git config user.email "github-actions@github.com"
+          git add CommandIndex.md Commands.md
+          git commit -m "Update CLI docs" || echo "No changes to commit"
+          git push

+ 9 - 7
RackPeek.Web.Viewer/Program.cs

@@ -7,7 +7,6 @@ using RackPeek.Domain.Resources;
 using RackPeek.Domain.Resources.Hardware;
 using RackPeek.Domain.Resources.Services;
 using RackPeek.Domain.Resources.SystemResources;
-using RackPeek.Yaml;
 
 namespace RackPeek.Web.Viewer;
 
@@ -22,24 +21,27 @@ public class Program
         var services = builder.Services;
         builder.Services.AddScoped(sp =>
             new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
-        
+
         builder.Services.AddScoped<ITextFileStore, WasmTextFileStore>();
 
         var resources = new ResourceCollection();
         builder.Services.AddSingleton(resources);
+
+        var yamlDir = builder.Configuration.GetValue<string>("RPK_YAML_DIR") ?? "config";
+        var yamlFilePath = $"{yamlDir}/config.yaml";
+
         builder.Services.AddScoped<IResourceCollection>(sp =>
             new YamlResourceCollection(
-                "config/config.yaml",
+                yamlFilePath,
                 sp.GetRequiredService<ITextFileStore>(),
                 sp.GetRequiredService<ResourceCollection>()));
-        
+     
         builder.Services.AddYamlRepos();
-
         builder.Services.AddCommands();
         builder.Services.AddScoped<IConsoleEmulator, ConsoleEmulator>();
-        
+
         builder.Services.AddUseCases();
-        
+
         builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
 
         await builder.Build().RunAsync();

+ 1 - 1
RackPeek.Web/Program.cs

@@ -23,7 +23,7 @@ public class Program
             builder.Configuration
         );
 
-        var yamlDir = "./config";
+        var yamlDir = builder.Configuration.GetValue<string>("RPK_YAML_DIR") ?? "./config";
         var yamlFileName = "config.yaml";
 
         var basePath = Directory.GetCurrentDirectory();

+ 9 - 8
RackPeek/Program.cs

@@ -11,23 +11,24 @@ public static class Program
     public static async Task<int> Main(string[] args)
     {
         // Configuration
-        var configuration = new ConfigurationBuilder()
-            .SetBasePath(Directory.GetCurrentDirectory())
-            .AddJsonFile("appsettings.json", true)
+        var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
+            .AddJsonFile("appsettings.json", optional: true)
             .Build();
 
-        // DI
+        var yamlDir = configuration.GetValue<string>("RPK_YAML_DIR") ?? "./config";
+
+// DI
         var services = new ServiceCollection();
-        await CliBootstrap.RegisterInternals(services, configuration, "./config", "config.yaml");
+        await CliBootstrap.RegisterInternals(services, configuration, yamlDir, "config.yaml");
+
         services.AddLogging(configure =>
-            configure
-                .AddSimpleConsole(opts => { opts.TimestampFormat = "yyyy-MM-dd HH:mm:ss "; }));
+            configure.AddSimpleConsole(opts => { opts.TimestampFormat = "yyyy-MM-dd HH:mm:ss "; }));
 
         var registrar = new TypeRegistrar(services.BuildServiceProvider());
         var app = new CommandApp(registrar);
 
         CliBootstrap.BuildApp(app);
-        
+
         return await app.RunAsync(args);
     }
 }

+ 29 - 0
config/config.yaml

@@ -0,0 +1,29 @@
+resources:
+- kind: System
+  type: 
+  os: 
+  cores: 
+  ram: 
+  drives: 
+  runsOn: 
+  name: xf
+  tags: 
+- kind: Service
+  network:
+    ip: dfdf
+    port: 6
+    protocol: 10.2.0.1
+    url: 
+  runsOn: xf
+  name: dfs
+  tags: 
+- kind: Switch
+  model: 
+  managed: 
+  poe: 
+  ports:
+  - type: rj45
+    speed: 1
+    count: 24
+  name: core-sw1
+  tags: 

+ 6 - 7
generate_commands_markdown.sh

@@ -15,19 +15,18 @@ trap 'rm -f "$TREE_TEMP" "$BODY_TEMP"' EXIT
 # ----------------------------
 
 strip_colors() {
-  sed -r "s/\x1B\[[0-9;]*[mK]//g"
+  sed -E "s/\x1B\[[0-9;]*[mK]//g"
 }
 
 run_help() {
-  local project="./RackPeek"
-  local runtime="osx-arm64"
-  local config="Release"
-  local publish_dir="$project/bin/$config/net10.0/$runtime/publish"
-  local exe="$publish_dir/RackPeek"
+ local project="./RackPeek" 
+ local config="Release" 
+ local publish_dir="$project/publish" 
+ local exe="$publish_dir/RackPeek"
 
   if [[ ! -x "$exe" ]]; then
     echo "Publishing RackPeek ($config)..." >&2
-    dotnet publish "$project" -c "$config" -r "$runtime" --self-contained false -p:PublishSingleFile=true >&2
+    dotnet publish "$project" -c "$config" -o "$publish_dir" --self-contained false -p:PublishSingleFile=true >&2
   fi
 
   local output