fish-shell/share/completions/aws.fish
2019-04-17 22:37:19 -05:00

211 lines
3.7 KiB
Fish

# These are very much incomplete completions for the aws-cli suite.
# In addition to a complete list of services, the `aws s3` completions are mostly complete
# (and are the primary reason this file exists). The automatically generated completions
# for `aws` via `fish_update_completions` are pretty useless due to non-standard formatting.
function __s3_is_bucket
commandline -ct | string match -q -r -- '^s3://[^/]?$'
end
function __s3_is_remote_path
commandline -ct | string match -q -r -- "^s3://.*/.*"
end
function __s3_ls_buckets
aws s3 ls | string replace -rf '.* (\S+)$' 's3://$1/'
end
function __s3_ls_dir
set -l dir (commandline -ct | string replace -rf '(s3://.*/).*' '$1')
printf "$dir%s\n" (aws s3 ls $dir 2>/dev/null | string replace -fr '^(:?\S+ +\S+ +\S+ |^.*PRE )(.*)' '$2')
end
# S3 remote completions
complete -c 'aws' -n "__fish_prev_arg_in s3" -xa "cp mv rm help sync ls mb mv presign rb website"
complete -c 'aws' -n "__s3_is_remote_path" -xa "(__s3_ls_dir)"
complete -c 'aws' -n "__s3_is_bucket" -xa "(__s3_ls_buckets)"
complete -c 'aws' -n "not __s3_is_remote_path && __fish_prev_arg_in ls" -xa "(__s3_ls_buckets)"
complete -c 'aws' -n "not __s3_is_remote_path && __fish_prev_arg_in mv cp rm" -a "(__s3_ls_buckets)"
# This list is extracted from the output of `aws help`, which can't be ingested directly,
# as it emits considerable ANSI output and other terminal control characters.
set -l aws_services \
acm \
acm-pca \
alexaforbusiness \
amplify \
apigateway \
apigatewaymanagementapi \
apigatewayv2 \
application-autoscaling \
appmesh \
appstream \
appsync \
athena \
autoscaling \
autoscaling-plans \
backup \
batch \
budgets \
ce \
chime \
cloud9 \
clouddirectory \
cloudformation \
cloudfront \
cloudhsm \
cloudhsmv2 \
cloudsearch \
cloudsearchdomain \
cloudtrail \
cloudwatch \
codebuild \
codecommit \
codepipeline \
codestar \
cognito-identity \
cognito-idp \
cognito-sync \
comprehend \
comprehendmedical \
configservice \
configure \
connect \
cur \
datapipeline \
datasync \
dax \
deploy \
devicefarm \
directconnect \
discovery \
dlm \
dms \
docdb \
ds \
dynamodb \
dynamodbstreams \
ec2 \
ecr \
ecs \
efs \
eks \
elasticache \
elasticbeanstalk \
elastictranscoder \
elb \
elbv2 \
emr \
es \
events \
firehose \
fms \
fsx \
gamelift \
glacier \
globalaccelerator \
glue \
greengrass \
guardduty \
health \
help \
history \
iam \
importexport \
inspector \
iot \
iot-data \
iot-jobs-data \
iot1click-devices \
iot1click-projects \
iotanalytics \
kafka \
kinesis \
kinesis-video-archived-media \
kinesis-video-media \
kinesisanalytics \
kinesisanalyticsv2 \
kinesisvideo \
kms \
lambda \
lex-models \
lex-runtime \
license-manager \
lightsail \
logs \
machinelearning \
macie \
marketplace-entitlement \
marketplacecommerceanalytics \
mediaconnect \
mediaconvert \
medialive \
mediapackage \
mediastore \
mediastore-data \
mediatailor \
meteringmarketplace \
mgh \
mobile \
mq \
mturk \
neptune \
opsworks \
opsworks-cm \
organizations \
pi \
pinpoint \
pinpoint-email \
pinpoint-sms-voice \
polly \
pricing \
quicksight \
ram \
rds \
rds-data \
redshift \
rekognition \
resource-groups \
resourcegroupstaggingapi \
robomaker \
route53 \
route53domains \
route53resolver \
s3 \
s3api \
s3control \
sagemaker \
sagemaker-runtime \
sdb \
secretsmanager \
securityhub \
serverlessrepo \
servicecatalog \
servicediscovery \
ses \
shield \
signer \
sms \
snowball \
sns \
sqs \
ssm \
stepfunctions \
storagegateway \
sts \
support \
swf \
textract \
transcribe \
transfer \
translate \
waf \
waf-regional \
workdocs \
worklink \
workmail \
workspaces \
xray
complete -c aws -n '__fish_is_first_arg' -xa "$aws_services"