function GetOciTopLevelCommand_rover() {
    return 'rover'
}

function GetOciSubcommands_rover() {
    $ociSubcommands = @{
        'rover' = 'create-master-key-policy device node shape standalone-cluster station-cluster'
        'rover device' = 'data-sync diagnostics system-upgrade'
        'rover device data-sync' = 'task task-definition'
        'rover device data-sync task' = 'cancel get list start'
        'rover device data-sync task-definition' = 'create delete get list update'
        'rover device diagnostics' = 'bundle'
        'rover device diagnostics bundle' = 'cancel create get list view-summary'
        'rover device system-upgrade' = 'get-import-history get-import-status import-bundle upload-bundle'
        'rover node' = 'add-workload ca-bundle certificate certificate-authority change-compartment create delete delete-workload get-certificate get-encryption-key list list-workload request-approval rover-bundle rover-bundle-request rover-bundle-version set-secrets setup-identity show update'
        'rover node ca-bundle' = 'get'
        'rover node certificate' = 'create get-leaf-certificate update'
        'rover node certificate-authority' = 'update-root-ca'
        'rover node rover-bundle' = 'copy-to-customer get-status'
        'rover node rover-bundle-request' = 'list'
        'rover node rover-bundle-version' = 'get'
        'rover shape' = 'list'
        'rover standalone-cluster' = 'add-workload change-compartment create delete delete-workload get-certificate list list-workloads request-approval rover-bundle rover-bundle-request rover-bundle-version set-secrets show update'
        'rover standalone-cluster rover-bundle' = 'copy-to-customer get-status'
        'rover standalone-cluster rover-bundle-request' = 'list'
        'rover standalone-cluster rover-bundle-version' = 'get'
        'rover station-cluster' = 'add-workload change-compartment create delete delete-workload get-certificate list-workloads request-approval set-secrets show update'
    }
    return $ociSubcommands
}

function GetOciCommandsToLongParams_rover() {
    $ociCommandsToLongParams = @{
        'rover create-master-key-policy' = 'help master-key-id policy-compartment-id policy-name'
        'rover device data-sync task cancel' = 'from-json help task-id'
        'rover device data-sync task get' = 'from-json help task-id wait'
        'rover device data-sync task list' = 'from-json help limit page sort-order task-definition-id'
        'rover device data-sync task start' = 'from-json help multipart-threads task-definition-id threads'
        'rover device data-sync task-definition create' = 'destination from-json help name rate-limit schedule source sync-on-create'
        'rover device data-sync task-definition delete' = 'from-json help id'
        'rover device data-sync task-definition get' = 'from-json help id'
        'rover device data-sync task-definition list' = 'from-json help limit page sort-by sort-order'
        'rover device data-sync task-definition update' = 'destination from-json help id name rate-limit schedule source'
        'rover device diagnostics bundle cancel' = 'bundle-id from-json help max-wait-seconds node-name use-basic-auth wait-for-state wait-interval-seconds'
        'rover device diagnostics bundle create' = 'display-name from-json help max-wait-seconds node-name use-basic-auth wait-for-state wait-interval-seconds'
        'rover device diagnostics bundle get' = 'bundle-id encryption-key-file file from-json help node-name use-basic-auth'
        'rover device diagnostics bundle list' = 'from-json help lifecycle-state limit node-name page sort-by sort-order use-basic-auth'
        'rover device diagnostics bundle view-summary' = 'bundle-id from-json help node-name use-basic-auth'
        'rover device system-upgrade get-import-history' = 'from-json help'
        'rover device system-upgrade get-import-status' = 'from-json help task-id wait'
        'rover device system-upgrade import-bundle' = 'from-json help object-name wait'
        'rover device system-upgrade upload-bundle' = 'file from-json help'
        'rover node add-workload' = 'bucket-name force from-json help image-id node-id prefix range-end range-start type'
        'rover node ca-bundle get' = 'from-json help if-match rover-node-id'
        'rover node certificate create' = 'csr from-json help if-match rover-node-id time-cert-validity-end'
        'rover node certificate get-leaf-certificate' = 'from-json help if-match rover-node-id'
        'rover node certificate update' = 'csr from-json help if-match rover-node-id time-cert-validity-end'
        'rover node certificate-authority update-root-ca' = 'cert-key-algorithm cert-signature-algorithm certificate-authority-id from-json help if-match rover-node-id'
        'rover node change-compartment' = 'compartment-id from-json help if-match node-id'
        'rover node create' = 'address1 address2 address3 address4 addressee care-of cert-compartment-id cert-key-algorithm cert-signature-algorithm city-or-locality common-name compartment-id country defined-tags display-name email enclosure-type freeform-tags from-json help issuer-certificate-authority-id lifecycle-state lifecycle-state-details master-key-id max-wait-seconds phone-number point-of-contact point-of-contact-phone-number policy-compartment-id policy-name setup-identity shape shipping-preference state-province-region system-tags time-cert-validity-end time-return-window-ends time-return-window-starts wait-for-state wait-interval-seconds zip-postal-code'
        'rover node delete' = 'force from-json help if-match max-wait-seconds node-id wait-for-state wait-interval-seconds'
        'rover node delete-workload' = 'force from-json help node-id'
        'rover node get-certificate' = 'from-json help node-id output-file-path'
        'rover node get-encryption-key' = 'from-json help node-id'
        'rover node list' = 'all compartment-id display-name from-json help lifecycle-state limit node-type page page-size shape sort-by sort-order'
        'rover node list-workload' = 'from-json help node-id'
        'rover node request-approval' = 'from-json help node-id'
        'rover node rover-bundle copy-to-customer' = 'bundle-version destination-bucket-name destination-compartment-id from-json help max-wait-seconds rover-node-id wait-for-state wait-interval-seconds'
        'rover node rover-bundle get-status' = 'from-json help rover-node-id work-request-id'
        'rover node rover-bundle-request list' = 'all from-json help limit page page-size rover-node-id sort-by sort-order'
        'rover node rover-bundle-version get' = 'current-rover-bundle-version from-json help rover-node-id'
        'rover node set-secrets' = 'from-json help node-id super-user-password unlock-passphrase'
        'rover node setup-identity' = 'from-json help node-id'
        'rover node show' = 'from-json help node-id'
        'rover node update' = 'address1 address2 address3 address4 addressee care-of cert-compartment-id cert-key-algorithm cert-signature-algorithm certificate-authority-id city-or-locality common-name country defined-tags display-name email enclosure-type force freeform-tags from-json help if-match lifecycle-state lifecycle-state-details max-wait-seconds node-id phone-number point-of-contact point-of-contact-phone-number shape shipping-preference state-province-region system-tags time-cert-validity-end time-return-window-ends time-return-window-starts wait-for-state wait-interval-seconds zip-postal-code'
        'rover shape list' = 'all compartment-id from-json help limit page page-size sort-by sort-order'
        'rover standalone-cluster add-workload' = 'bucket-name cluster-id force from-json help image-id prefix range-end range-start type'
        'rover standalone-cluster change-compartment' = 'cluster-id compartment-id from-json help if-match'
        'rover standalone-cluster create' = 'address1 address2 address3 address4 addressee care-of city-or-locality cluster-size cluster-type compartment-id country defined-tags display-name email enclosure-type freeform-tags from-json help lifecycle-state lifecycle-state-details master-key-id max-wait-seconds phone-number point-of-contact point-of-contact-phone-number policy-compartment-id policy-name shipping-preference state-province-region subscription-id system-tags wait-for-state wait-interval-seconds zip-postal-code'
        'rover standalone-cluster delete' = 'cluster-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'rover standalone-cluster delete-workload' = 'cluster-id force from-json help'
        'rover standalone-cluster get-certificate' = 'cluster-id from-json help output-file-path'
        'rover standalone-cluster list' = 'all cluster-type compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order'
        'rover standalone-cluster list-workloads' = 'cluster-id from-json help'
        'rover standalone-cluster request-approval' = 'cluster-id from-json help'
        'rover standalone-cluster rover-bundle copy-to-customer' = 'bundle-version destination-bucket-name destination-compartment-id from-json help max-wait-seconds rover-cluster-id wait-for-state wait-interval-seconds'
        'rover standalone-cluster rover-bundle get-status' = 'from-json help rover-cluster-id work-request-id'
        'rover standalone-cluster rover-bundle-request list' = 'all from-json help limit page page-size rover-cluster-id sort-by sort-order'
        'rover standalone-cluster rover-bundle-version get' = 'current-rover-bundle-version from-json help rover-cluster-id'
        'rover standalone-cluster set-secrets' = 'cluster-id help super-user-password unlock-passphrase'
        'rover standalone-cluster show' = 'cluster-id from-json help'
        'rover standalone-cluster update' = 'address1 address2 address3 address4 addressee care-of city-or-locality cluster-id cluster-size country defined-tags display-name email enclosure-type force freeform-tags from-json help if-match lifecycle-state lifecycle-state-details max-wait-seconds phone-number point-of-contact point-of-contact-phone-number shipping-preference state-province-region subscription-id system-tags wait-for-state wait-interval-seconds zip-postal-code'
        'rover station-cluster add-workload' = 'bucket-name cluster-id force from-json help image-id prefix range-end range-start type'
        'rover station-cluster change-compartment' = 'cluster-id compartment-id from-json help if-match'
        'rover station-cluster create' = 'address1 address2 address3 address4 addressee care-of city-or-locality cluster-size cluster-type compartment-id country data-validation-code defined-tags display-name email enclosure-type freeform-tags from-json help import-compartment-id import-file-bucket is-import-requested lifecycle-state lifecycle-state-details master-key-id max-wait-seconds phone-number point-of-contact point-of-contact-phone-number policy-compartment-id policy-name shipping-preference state-province-region subscription-id system-tags wait-for-state wait-interval-seconds zip-postal-code'
        'rover station-cluster delete' = 'cluster-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'rover station-cluster delete-workload' = 'cluster-id force from-json help'
        'rover station-cluster get-certificate' = 'cluster-id from-json help output-file-path'
        'rover station-cluster list-workloads' = 'cluster-id from-json help'
        'rover station-cluster request-approval' = 'cluster-id from-json help subscription-id'
        'rover station-cluster set-secrets' = 'cluster-id help super-user-password unlock-passphrase'
        'rover station-cluster show' = 'cluster-id from-json help'
        'rover station-cluster update' = 'address1 address2 address3 address4 addressee care-of city-or-locality cluster-id cluster-size country data-validation-code defined-tags display-name email enclosure-type force freeform-tags from-json help if-match import-compartment-id import-file-bucket is-import-requested lifecycle-state lifecycle-state-details max-wait-seconds phone-number point-of-contact point-of-contact-phone-number shipping-preference state-province-region subscription-id system-tags wait-for-state wait-interval-seconds zip-postal-code'
    }
    return $ociCommandsToLongParams
}

function GetOciCommandsToShortParams_rover() {
    $ociCommandsToShortParams = @{
        'rover create-master-key-policy' = '? h'
        'rover device data-sync task cancel' = '? h'
        'rover device data-sync task get' = '? h'
        'rover device data-sync task list' = '? h'
        'rover device data-sync task start' = '? h'
        'rover device data-sync task-definition create' = '? h'
        'rover device data-sync task-definition delete' = '? h'
        'rover device data-sync task-definition get' = '? h'
        'rover device data-sync task-definition list' = '? h'
        'rover device data-sync task-definition update' = '? h'
        'rover device diagnostics bundle cancel' = '? h'
        'rover device diagnostics bundle create' = '? h'
        'rover device diagnostics bundle get' = '? h'
        'rover device diagnostics bundle list' = '? h'
        'rover device diagnostics bundle view-summary' = '? h'
        'rover device system-upgrade get-import-history' = '? h'
        'rover device system-upgrade get-import-status' = '? h'
        'rover device system-upgrade import-bundle' = '? h'
        'rover device system-upgrade upload-bundle' = '? h'
        'rover node add-workload' = '? h'
        'rover node ca-bundle get' = '? h'
        'rover node certificate create' = '? h'
        'rover node certificate get-leaf-certificate' = '? h'
        'rover node certificate update' = '? h'
        'rover node certificate-authority update-root-ca' = '? h'
        'rover node change-compartment' = '? c h'
        'rover node create' = '? c h'
        'rover node delete' = '? h'
        'rover node delete-workload' = '? h'
        'rover node get-certificate' = '? h'
        'rover node get-encryption-key' = '? h'
        'rover node list' = '? c h'
        'rover node list-workload' = '? h'
        'rover node request-approval' = '? h'
        'rover node rover-bundle copy-to-customer' = '? h'
        'rover node rover-bundle get-status' = '? h'
        'rover node rover-bundle-request list' = '? h'
        'rover node rover-bundle-version get' = '? h'
        'rover node set-secrets' = '? h'
        'rover node setup-identity' = '? h'
        'rover node show' = '? h'
        'rover node update' = '? h'
        'rover shape list' = '? c h'
        'rover standalone-cluster add-workload' = '? h'
        'rover standalone-cluster change-compartment' = '? c h'
        'rover standalone-cluster create' = '? c h'
        'rover standalone-cluster delete' = '? h'
        'rover standalone-cluster delete-workload' = '? h'
        'rover standalone-cluster get-certificate' = '? h'
        'rover standalone-cluster list' = '? c h'
        'rover standalone-cluster list-workloads' = '? h'
        'rover standalone-cluster request-approval' = '? h'
        'rover standalone-cluster rover-bundle copy-to-customer' = '? h'
        'rover standalone-cluster rover-bundle get-status' = '? h'
        'rover standalone-cluster rover-bundle-request list' = '? h'
        'rover standalone-cluster rover-bundle-version get' = '? h'
        'rover standalone-cluster set-secrets' = '? h'
        'rover standalone-cluster show' = '? h'
        'rover standalone-cluster update' = '? h'
        'rover station-cluster add-workload' = '? h'
        'rover station-cluster change-compartment' = '? c h'
        'rover station-cluster create' = '? c h'
        'rover station-cluster delete' = '? h'
        'rover station-cluster delete-workload' = '? h'
        'rover station-cluster get-certificate' = '? h'
        'rover station-cluster list-workloads' = '? h'
        'rover station-cluster request-approval' = '? h'
        'rover station-cluster set-secrets' = '? h'
        'rover station-cluster show' = '? h'
        'rover station-cluster update' = '? h'
    }
    return $ociCommandsToShortParams
}