-
Notifications
You must be signed in to change notification settings - Fork 24
/
Open-InteractiveNotebook.ps1
30 lines (28 loc) · 983 Bytes
/
Open-InteractiveNotebook.ps1
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
function Open-InteractiveNotebook {
<#
.SYNOPSIS
Open a local notebook or from remote source
.EXAMPLE
# opens a local .dib interactive notebook
Open-InteractiveNotebook .\Untitled-1.dib
.EXAMPLE
# opens a remote .dib interactive notebook
Open-InteractiveNotebook https://raw.githubusercontent.com/dotnet/interactive/main/NotebookTestScript.dib
#>
param(
[Parameter(ValueFromPipeline)]
$Target
)
Process {
$Target = [uri]::UnescapeDataString($Target)
if (Test-Path $Target) {
$Target = Resolve-Path $Target
$targetType = 'path'
}
elseif ([System.Uri]::IsWellFormedUriString($Target, [System.UriKind]::Absolute) ) {
$targetType = 'url'
}
$targetMoniker = 'vscode://ms-dotnettools.dotnet-interactive-vscode/openNotebook?{0}={1}' -f $targetType, $Target
$null = Start-Process $targetMoniker
}
}