- Please don't edit this section unless you're re-configuring how the powershell extension plugs in to AutoRest AutoRest needs the below config to pick this up as a plug-in - see https://github.com/Azure/autorest/blob/master/docs/developer/architecture/AutoRest-extension.md
modelerfour configuration
modelerfour:
emit-yaml-tags: false
lenient-model-deduplication: true
additional-checks: false
always-create-content-type-parameter: false
always-seal-x-ms-enums: true
treat-type-object-as-anything: true
if the modeler is loaded already, use that one, otherwise grab it.
use-extension:
"@autorest/modelerfour": "~4.26.0"
# will use highest 2.0.x
Multi-Api Mode
pipeline-model: v3
Values
module-version: 0.1.0
skip-model-cmdlets: false
help-link-prefix: https://learn.microsoft.com/powershell/module/
metadata:
authors: ''
owners: ''
requireLicenseAcceptance: false
description: ''
copyright: ''
tags: ''
companyName: ''
licenseUri: ''
projectUri: ''
Names
prefix: ''
subject-prefix: ''
module-name: $(service-name)
dll-name: $(module-name).private
Folders
use-namespace-folders: false
current-folder: .
module-folder: $(current-folder)/generated
cmdlet-folder: $(module-folder)/cmdlets
model-cmdlet-folder: $(custom-cmdlet-folder)/autogen-model-cmdlets
custom-cmdlet-folder: $(current-folder)/custom
utils-cmdlet-folder: $(current-folder)/utils
internal-cmdlet-folder: $(current-folder)/internal
test-folder: $(current-folder)/test
runtime-folder: $(module-folder)/runtime
api-folder: $(module-folder)/api
bin-folder: $(current-folder)/bin
obj-folder: $(current-folder)/obj
exports-folder: $(current-folder)/exports
docs-folder: $(current-folder)/docs
dependency-module-folder: $(module-folder)/modules
examples-folder: $(current-folder)/examples
resources-folder: $(current-folder)/resources
ux-folder: $(current-folder)/UX
File Paths
csproj: $(current-folder)/$(module-name).csproj
dll: $(bin-folder)/$(dll-name).dll
psd1: $(current-folder)/$(module-name).psd1
psm1: $(current-folder)/$(module-name).psm1
psm1-custom: $(custom-cmdlet-folder)/$(module-name).custom.psm1
psm1-internal: $(internal-cmdlet-folder)/$(module-name).internal.psm1
format-ps1xml: $(current-folder)/$(module-name).format.ps1xml
nuspec: $(current-folder)/$(module-name).nuspec
declare-directive:
no-inline: >-
(() => {
return {
from: "code-model-v3",
where: (Array.isArray($) ? $ : [$]).map( each => `$.schemas[?(/^${each}$/i.exec(@.details.default.name))]`),
transform: "$.details.default['skip-inline'] = true;"
};
})()
pipeline:
# --- extension powershell based on modelerfour
# Fix the code model gap between m3 and m4
tweakm4codemodel:
input: modelerfour/identity
tweakcodemodel-v2:
input: tweakm4codemodel
# input: clicommon/identity
tweakcodemodelazure-v2:
input: tweakcodemodel-v2
create-commands-v2:
input: tweakcodemodelazure-v2
create-virtual-properties-v2:
input: create-commands-v2
csnamer-v2:
input: create-virtual-properties-v2
psnamer-v2:
input: csnamer-v2
modifiers-v2:
input: psnamer-v2
add-azure-completers-v2:
input: modifiers-v2
llcsharp-v2:
input: modifiers-v2
powershell-v2:
input: add-azure-completers-v2
# --- extension llcsharp ---
# generates c# files for http-operations
llcsharp/text-transform:
input: llcsharp-v2
scope: scope-here
powershell/text-transform:
input: powershell-v2
scope: scope-here
llcsharp/emitter:
input: text-transform
scope: scope-here
# output-artifact: source-file-csharp
powershell/emitter:
input: text-transform
scope: scope-here
# output-artifact: source-file-csharp
scope-here:
is-object: false
output-artifact:
- source-file-csharp
- source-file-csproj
- source-file-powershell
- source-file-other
- binary-file
- preserved-files
# Specific Settings for cm emitting - selects the file types and format that cmv2-emitter will spit out.
code-model-emitter-settings:
input-artifact: code-model-v4
is-object: true
output-uri-expr: |
"code-model-v4"
# testing: ask for the files we need
output-artifact:
- source-file-csharp
- source-file-csproj
- source-file-powershell
- source-file-other
- binary-file
- preserved-files
directive:
- reason: FixFromXML
from: source-file-csharp
where: $
transform: return $.replace( /FromXml/g , 'FromJson');
The following verb-mapping is used as an aid to infer cmdlet-verbs. Every entry maps an operationId-method to a PowerShell cmdlet-verb. The operationId-method is the identifier that comes after the underscore in the operationId. For example:
- In MyResource_List, the method is List.
- In SomeAPI_CheckNameAvailability, the method is CheckNameAvailability.
Note: It is not necessary to have an entry for every method because AutoRest will still be able to infer a verb by examining the operationId. However, if an entry is added in the configuration, it is guaranteed that the cmdlet created will get the cmdlet-verb from the operationId-method -> cmdlet verb mapping.
verb-mapping:
Access: Get
Acquire: Get
Activate: Initialize
Add: Add
Allocate: New
Analyze: Test
Append: Add
Apply: Add
Approve: Approve
Assert: Assert
Assign: Set
Associate: Join
Attach: Add
Authorize: Grant
Backup: Backup
Block: Block
Build: Build
Bypass: Skip
Cancel: Stop
Capture: Export
Cat: Get
Change: Rename
Check: Test
Checkpoint: Checkpoint
Clear: Clear
Clone: Copy
Close: Close
Combine: Join
Compare: Compare
Compile: Build
Complete: Complete
Compress: Compress
Concatenate: Add
Configure: Set
Confirm: Confirm
Connect: Connect
Convert: Convert
ConvertFrom: ConvertFrom
ConvertTo: ConvertTo
Copy: Copy
Create: New
Cut: Remove
Debug: Debug
Delete: Remove
Deny: Deny
Deploy: Deploy
Dir: Get
Disable: Disable
Discard: Remove
Disconnect: Disconnect
Discover: Find
Dismount: Dismount
Display: Show
Dispose: Remove
Dump: Get
Duplicate: Copy
Edit: Edit
Enable: Enable
End: Stop
Enter: Enter
Erase: Clear
Evaluate: Test
Examine: Get
Execute: Invoke
Exit: Exit
Expand: Expand
Export: Export
Failover: Set
Find: Find
Finish: Complete
Flush: Clear
ForceReboot: Restart
Format: Format
Generalize: Reset
Generate: New
Get: Get
Grant: Grant
Group: Group
Hide: Hide
Import: Import
Initialize: Initialize
Insert: Add
Install: Install
Into: Enter
Invoke: Invoke
Is: Test
Join: Join
Jump: Skip
Limit: Limit
List: Get
Load: Import
Locate: Find
Lock: Lock
Make: New
Measure: Measure
Merge: Merge
Migrate: Move
Mount: Mount
Move: Move
Name: Move
New: New
Notify: Send
Nullify: Clear
Obtain: Get
Open: Open
Optimize: Optimize
Out: Out
Patch: Update
Pause: Suspend
Perform: Invoke
Ping: Ping
Pop: Pop
Post: Invoke
Power: Start
PowerOff: Stop
PowerOn: Start
Produce: Show
Protect: Protect
Provision: New
Publish: Publish
Purge: Clear
Push: Push
Put: Set
Read: Read
Reassociate: Move
Reboot: Restart
Receive: Receive
Recover: Restore
Redo: Redo
Refresh: Update
Regenerate: New
Register: Register
Reimage: Update
Release: Publish
Remove: Remove
Rename: Rename
Repair: Repair
Replace: Update
Replicate: Copy
Reprocess: Update
Request: Request
Reset: Reset
Resize: Resize
Resolve: Resolve
Restart: Restart
Restore: Restore
Restrict: Lock
Resubmit: Submit
Resume: Resume
Retarget: Update
Retrieve: Get
Revoke: Revoke
Run: Start
Save: Save
Search: Search
Secure: Lock
Select: Select
Send: Send
Separate: Split
Set: Set
Show: Show
Shutdown: Stop
Skip: Skip
Split: Split
Start: Start
Step: Step
Stop: Stop
Submit: Submit
Suggest: Get
Suspend: Suspend
Swap: Switch
Switch: Switch
Sync: Sync
Synch: Sync
Synchronize: Sync
Test: Test
Trace: Trace
Transfer: Move
Trigger: Start
Type: Get
Unblock: Unblock
Undelete: Restore
Undo: Undo
Uninstall: Uninstall
Unite: Join
Unlock: Unlock
Unmark: Clear
Unprotect: Unprotect
Unpublish: Unpublish
Unregister: Unregister
Unrestrict: Unlock
Unsecure: Unlock
Unset: Clear
Update: Update
Upgrade: Update
Use: Use
Validate: Test
Verify: Test
Wait: Wait
Watch: Watch
Wipe: Clear
Write: Write
cli:
reason: 'Keep same as modelerfour'
naming:
default:
parameter: 'camel'
property: 'camel'
operation: 'pascal'
operationGroup: 'pascal'
choice: 'pascal'
choiceValue: 'pascal'
constant: 'pascal'
type: 'pascal'