mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-23 17:53:38 +08:00
171 lines
8.2 KiB
Fish
171 lines
8.2 KiB
Fish
function __fish_clasp_list_projects
|
|
clasp list --noShorten true 2>/dev/null |
|
|
string replace --regex '(.*) - https://script.google.com/d/(.*)/edit' '$2\\t$1'
|
|
end
|
|
|
|
function __fish_clasp_list_versions
|
|
clasp versions 2>/dev/null |
|
|
string replace --regex '(\\d+) - (.*)' '$1\\t$2' |
|
|
sed -n '2,$p'
|
|
end
|
|
|
|
function __fish_clasp_list_deployments
|
|
clasp deployments 2>/dev/null |
|
|
string replace --regex -- '- (\\S+) @(\\S+).*' '$1\\tversion $2' |
|
|
sed -n '2,$p'
|
|
end
|
|
|
|
function __fish_clasp_list_advanced_services
|
|
printf '%s\\t%s service\n' admin-sdk-directory 'Admin SDK Directory' \
|
|
admin-sdk-license-manager 'Admin SDK Enterprise License Manager' \
|
|
admin-sdk-groups-migration 'Admin SDK Groups Migration' \
|
|
admin-sdk-groups-settings 'Admin SDK Groups Settings' \
|
|
admin-sdk-reseller 'Admin SDK Google Workspace Reseller' \
|
|
admin-sdk-reports 'Admin SDK Reports' \
|
|
calendar 'Advanced Calendar' \
|
|
chat 'Advanced Chat' \
|
|
docs 'Advanced Docs' \
|
|
drive 'Advanced Drive' \
|
|
drive-activity 'Google Drive Activity' \
|
|
drive-labels 'Advanced Drive Labels' \
|
|
gmail 'Advanced Gmail' \
|
|
sheets 'Advanced Sheets' \
|
|
slides 'Advanced Slides' \
|
|
classroom Classroom \
|
|
people 'Advanced People' \
|
|
contacts-people 'Migrate from Contacts service to People API' \
|
|
tasks Tasks
|
|
end
|
|
|
|
function __fish_clasp_list_functions
|
|
find . -name '*.js' -exec sed -nE '/^\s*function/ s/^\s*function\s+(\w+).*$/\1/p' '{}' \;
|
|
end
|
|
|
|
function __fish_clasp_list_subcommands
|
|
clasp --help |
|
|
string match --regex '^ [a-z]' --entire |
|
|
string replace --regex '^\\s{2}([a-z]+).*' '$1'
|
|
end
|
|
|
|
function __fish_clasp_seen_subcommands_from
|
|
set -l cmd (commandline -poc)
|
|
set -e cmd[1]
|
|
|
|
test (count $argv) -gt (count $cmd) && return 1
|
|
|
|
set -l i (count $argv)
|
|
set -l j (count $cmd)
|
|
while test $i -gt 0
|
|
contains -- $argv[$i] $cmd[$j] || return 1
|
|
set i (math $i - 1)
|
|
set j (math $j - 1)
|
|
end
|
|
|
|
return 0
|
|
end
|
|
|
|
# options
|
|
complete -c clasp -s h -l help -d 'Show [h]elp'
|
|
complete -c clasp -s v -l version -d 'Show [v]ersion'
|
|
|
|
complete -c clasp -s A -l auth -d "Path to a '.clasprc.json' or to a directory with it"
|
|
complete -c clasp -s I -l ignore -d "Path to a '.claspignore.json' or to a directory with it"
|
|
complete -c clasp -s P -l project -d "Path to a '.clasp.json' or to a directory with it"
|
|
complete -c clasp -s W -l why -d "Display some debugging info upon exit"
|
|
|
|
# subcommands
|
|
complete -c clasp -n __fish_use_subcommand -xa login -d "Log in to script.google.com"
|
|
complete -c clasp -n __fish_use_subcommand -xa logout -d "Log out"
|
|
complete -c clasp -n __fish_use_subcommand -xa create -d "Create a script"
|
|
complete -c clasp -n __fish_use_subcommand -xa clone -d "Clone a project"
|
|
complete -c clasp -n __fish_use_subcommand -xa pull -d "Fetch a remote project"
|
|
complete -c clasp -n __fish_use_subcommand -xa push -d "Update the remote project"
|
|
complete -c clasp -n __fish_use_subcommand -xa status -d "Lists files that will be pushed by 'push' subcommand"
|
|
complete -c clasp -n __fish_use_subcommand -xa open -d "Open a script"
|
|
complete -c clasp -n __fish_use_subcommand -xa deployments -d "List deployment IDs of a script"
|
|
complete -c clasp -n __fish_use_subcommand -xa deploy -d "Deploy a project"
|
|
complete -c clasp -n __fish_use_subcommand -xa undeploy -d "Undeploy a project"
|
|
complete -c clasp -n __fish_use_subcommand -xa version -d "Create an immutable version of a script"
|
|
complete -c clasp -n __fish_use_subcommand -xa versions -d "List versions of a script"
|
|
complete -c clasp -n __fish_use_subcommand -xa list -d "List projects"
|
|
complete -c clasp -n __fish_use_subcommand -xa logs -d "Show StackDriver logs"
|
|
complete -c clasp -n __fish_use_subcommand -xa run -d "Run a function in your Apps Scripts project"
|
|
complete -c clasp -n __fish_use_subcommand -xa apis -d "List, enable, or disable APIs"
|
|
complete -c clasp -n __fish_use_subcommand -xa help -d "Show help for a command"
|
|
|
|
# login options
|
|
set login_condition '__fish_seen_subcommand_from login'
|
|
complete -c clasp -n "$login_condition" -l no-localhost -d 'Do not run a local server, manually enter code instead'
|
|
complete -c clasp -n "$login_condition" -l creds -d 'Specify a relative path to credentials'
|
|
complete -c clasp -n "$login_condition" -l status -d 'Show who is logged in'
|
|
|
|
# create option
|
|
set create_condition '__fish_seen_subcommand_from create'
|
|
complete -c clasp -n "$create_condition" -l type -xa 'standalone docs sheets slides forms webapp api' -d "A project type"
|
|
complete -c clasp -n "$create_condition" -l title -d "A project title"
|
|
complete -c clasp -n "$create_condition" -l parentId -d "A project container ID"
|
|
complete -c clasp -n "$create_condition" -l rootDir -d "Path to a directory with project files"
|
|
|
|
# clone options
|
|
set clone_condition '__fish_seen_subcommand_from clone'
|
|
complete -c clasp -n "$clone_condition" -l rootDir -d "Path to a directory project files"
|
|
complete -c clasp -n "$clone_condition" -xa '(__fish_clasp_list_projects)'
|
|
|
|
# pull options
|
|
complete -c clasp -n '__fish_seen_subcommand_from pull' -l versionNumber -xa '(__fish_clasp_list_versions)' -d "A project version to pull"
|
|
|
|
# push options
|
|
set push_condition '__fish_seen_subcommand_from push'
|
|
complete -c clasp -n "$push_condition" -s f -l force -d "Forcibly overwrite a remote manifest"
|
|
complete -c clasp -n "$push_condition" -s w -l watch -d "Watch for local changes in non-ignored files and push when they occur"
|
|
|
|
# status options
|
|
complete -c clasp -n '__fish_seen_subcommand_from status' -l json -d "Show in JSON format"
|
|
|
|
# open options
|
|
set open_condition '__fish_seen_subcommand_from open'
|
|
complete -c clasp -n "$open_condition" -l webapp -d "Open a web application in a browser"
|
|
complete -c clasp -n "$open_condition" -l creds -d "Open the URL to create credentials"
|
|
complete -c clasp -n "$open_condition" -l addon -d "List parent IDs and open the URL of the first one"
|
|
complete -c clasp -n "$open_condition" -l deploymentId -d "Use a custom deployment ID with a web application"
|
|
|
|
# deploy options
|
|
set deploy_condition '__fish_seen_subcommand_from deploy'
|
|
complete -c clasp -n "$deploy_condition" -s V -l versionNumber -d "A project version"
|
|
complete -c clasp -n "$deploy_condition" -s d -l description -d "A deployment description"
|
|
complete -c clasp -n "$deploy_condition" -s i -l deploymentId -xa '(__fish_clasp_list_deployments)' -d "A deployment ID to redeploy"
|
|
|
|
# undeploy options
|
|
set undeploy_condition '__fish_seen_subcommand_from undeploy'
|
|
complete -c clasp -n "$undeploy_condition" -l all -d "Undeploy all deployments"
|
|
complete -c clasp -n "$undeploy_condition" -xa '(__fish_clasp_list_deployments)'
|
|
|
|
# list options
|
|
complete -c clasp -n '__fish_seen_subcommand_from list' -l noShorten -d "Do not shorten long names"
|
|
|
|
# logs options
|
|
set logs_condition '__fish_seen_subcommand_from logs'
|
|
complete -c clasp -n "$logs_condition" -l json -d "Show logs in JSON form"
|
|
complete -c clasp -n "$logs_condition" -l open -d "Open the StackDriver logs in a browser"
|
|
complete -c clasp -n "$logs_condition" -l setup -d "Setup StackDriver logs"
|
|
complete -c clasp -n "$logs_condition" -l watch -d "Watch and list new logs"
|
|
complete -c clasp -n "$logs_condition" -l simplified -d "Hide timestamps with logs"
|
|
|
|
# run options
|
|
set run_condition '__fish_seen_subcommand_from run'
|
|
complete -c clasp -n "$run_condition" -l nondev -d "Run a function in non-development mode"
|
|
complete -c clasp -n "$run_condition" -s p -l params -d "Specify parameters for a function as a JSON array"
|
|
complete -c clasp -n "$run_condition" -xa '(__fish_clasp_list_functions)'
|
|
|
|
# apis subcommands and options
|
|
set apis_condition '__fish_seen_subcommand_from apis'
|
|
set apis_subcommand_condition '__fish_clasp_seen_subcommands_from apis enable || __fish_clasp_seen_subcommands_from apis disable'
|
|
complete -c clasp -n "$apis_condition" -xa list -d 'List APIs'
|
|
complete -c clasp -n "$apis_condition" -xa enable -d 'Enable APIs'
|
|
complete -c clasp -n "$apis_condition" -xa disable -d 'Disable APIs'
|
|
complete -c clasp -n "$apis_condition" -l open -d "Open API Console in a browser"
|
|
complete -c clasp -n "$apis_subcommand_condition" -a '(__fish_clasp_list_advanced_services)'
|
|
|
|
# help subcommands
|
|
complete -c clasp -n '__fish_seen_subcommand_from help' -xa '(__fish_clasp_list_subcommands)'
|