public JupyterInstallCommand(IConsole console, IJupyterKernelSpecInstaller jupyterKernelSpecInstaller, HttpPortRange httpPortRange = null, DirectoryInfo path = null) { _console = console; _jupyterKernelSpecInstaller = jupyterKernelSpecInstaller; _httpPortRange = httpPortRange; _path = path; }
static HttpPortRange ParsePortRangeOption(ArgumentResult result) { var source = result.Tokens[0].Value; if (string.IsNullOrWhiteSpace(source)) { result.ErrorMessage = "Must specify a port range"; return(null); } var parts = source.Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 2) { result.ErrorMessage = "Must specify a port range"; return(null); } if (!int.TryParse(parts[0], out var start) || !int.TryParse(parts[1], out var end)) { result.ErrorMessage = "Must specify a port range as StartPort-EndPort"; return(null); } if (start > end) { result.ErrorMessage = "Start port must be lower then end port"; return(null); } var pr = new HttpPortRange(start, end); return(pr); }
private static void ComputeKernelSpecArgs(HttpPortRange httpPortRange, DirectoryInfo directory) { var kernelSpecs = directory.GetFiles("kernel.json", SearchOption.AllDirectories); foreach (var kernelSpec in kernelSpecs) { var parsed = JObject.Parse(File.ReadAllText(kernelSpec.FullName)); var argv = parsed["argv"].Value <JArray>(); argv.Insert(argv.Count - 1, "--http-port-range"); argv.Insert(argv.Count - 1, $"{httpPortRange.Start}-{httpPortRange.End}"); File.WriteAllText(kernelSpec.FullName, parsed.ToString(Newtonsoft.Json.Formatting.Indented)); } }