-
Notifications
You must be signed in to change notification settings - Fork 178
Expand file tree
/
Copy path_clarinet.ps1
More file actions
130 lines (125 loc) · 9.6 KB
/
_clarinet.ps1
File metadata and controls
130 lines (125 loc) · 9.6 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using namespace System.Management.Automation
using namespace System.Management.Automation.Language
Register-ArgumentCompleter -Native -CommandName 'clarinet' -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
$commandElements = $commandAst.CommandElements
$command = @(
'clarinet'
for ($i = 1; $i -lt $commandElements.Count; $i++) {
$element = $commandElements[$i]
if ($element -isnot [StringConstantExpressionAst] -or
$element.StringConstantType -ne [StringConstantType]::BareWord -or
$element.Value.StartsWith('-') -or
$element.Value -eq $wordToComplete) {
break
}
$element.Value
}) -join ';'
$completions = @(switch ($command) {
'clarinet' {
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('new', 'new', [CompletionResultType]::ParameterValue, 'Create and scaffold a new project')
[CompletionResult]::new('contract', 'contract', [CompletionResultType]::ParameterValue, 'Subcommands for working with contracts')
[CompletionResult]::new('console', 'console', [CompletionResultType]::ParameterValue, 'Load contracts in a REPL for an interactive session')
[CompletionResult]::new('test', 'test', [CompletionResultType]::ParameterValue, 'Execute test suite')
[CompletionResult]::new('check', 'check', [CompletionResultType]::ParameterValue, 'Check syntax of your contracts')
[CompletionResult]::new('publish', 'publish', [CompletionResultType]::ParameterValue, 'Publish contracts on chain')
[CompletionResult]::new('run', 'run', [CompletionResultType]::ParameterValue, 'Execute Clarinet extension')
[CompletionResult]::new('integrate', 'integrate', [CompletionResultType]::ParameterValue, 'Start devnet environment for integration testing')
[CompletionResult]::new('lsp', 'lsp', [CompletionResultType]::ParameterValue, 'Start an LSP server (for integration with editors)')
[CompletionResult]::new('completions', 'completions', [CompletionResultType]::ParameterValue, 'Generate shell completions scripts')
break
}
'clarinet;new' {
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('--disable-telemetry', 'disable-telemetry', [CompletionResultType]::ParameterName, 'Do not provide developer usage telemetry for this project')
break
}
'clarinet;contract' {
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('new', 'new', [CompletionResultType]::ParameterValue, 'Generate files and settings for a new contract')
[CompletionResult]::new('requirement', 'requirement', [CompletionResultType]::ParameterValue, 'Add third-party requirements to this project')
[CompletionResult]::new('fork', 'fork', [CompletionResultType]::ParameterValue, 'Replicate a third-party contract into this project')
break
}
'clarinet;contract;new' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;contract;requirement' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;contract;fork' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;console' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;test' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('--coverage', 'coverage', [CompletionResultType]::ParameterName, 'Generate coverage file (coverage.lcov)')
[CompletionResult]::new('--costs', 'costs', [CompletionResultType]::ParameterName, 'Generate costs report')
[CompletionResult]::new('--watch', 'watch', [CompletionResultType]::ParameterName, 'Relaunch tests upon updates to contracts')
break
}
'clarinet;check' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;publish' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('--devnet', 'devnet', [CompletionResultType]::ParameterName, 'Deploy contracts on devnet, using settings/Devnet.toml')
[CompletionResult]::new('--testnet', 'testnet', [CompletionResultType]::ParameterName, 'Deploy contracts on testnet, using settings/Testnet.toml')
[CompletionResult]::new('--mainnet', 'mainnet', [CompletionResultType]::ParameterName, 'Deploy contracts on mainnet, using settings/Mainnet.toml')
break
}
'clarinet;run' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('--allow-wallets', 'allow-wallets', [CompletionResultType]::ParameterName, 'Allow access to wallets')
[CompletionResult]::new('--allow-write', 'allow-write', [CompletionResultType]::ParameterName, 'Allow write access to disk')
[CompletionResult]::new('--allow-read', 'allow-read', [CompletionResultType]::ParameterName, 'Allow read access to disk')
break
}
'clarinet;integrate' {
[CompletionResult]::new('--manifest-path', 'manifest-path', [CompletionResultType]::ParameterName, 'Path to Clarinet.toml')
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
[CompletionResult]::new('--no-dashboard', 'no-dashboard', [CompletionResultType]::ParameterName, 'Display streams of logs instead of terminal UI dashboard')
break
}
'clarinet;lsp' {
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
'clarinet;completions' {
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print help information')
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Print version information')
break
}
})
$completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
Sort-Object -Property ListItemText
}