///<param name="region">Takes in the --region option from the code fence options in markdown</param> ///<param name="session">Takes in the --session option from the code fence options in markdown</param> ///<param name="package">Takes in the --package option from the code fence options in markdown</param> ///<param name="project">Takes in the --project option from the code fence options in markdown</param> ///<param name="args">Takes in any additional arguments passed in the code fence options in markdown</param> ///<see>To learn more see <a href="https://aka.ms/learntdn">our documentation</a></see> static async Task <int> Main( string region = null, string session = null, string package = null, string project = null, string[] args = null) { var regionsSelection = region switch { null => RegionSelection.All, _ => RegionSelection.Specific(region) }; return(await Run(() => SampleRunner.Run(regionsSelection))); }
public static async Task Run(RegionSelection region) { var runners = Runners.Value; async Task Execute(string regionName) { if (!runners.TryGetValue(regionName, out var action)) { throw new Exception($"Runner for region {regionName} not found"); } await action(); } await region.Match(async all => { foreach (var runner in runners) { await Execute(runner.Key); } }, specific => Execute(specific.RegionName)); }