From 4b30a6aefcbb014a636500c8bc3d60f7b834fee1 Mon Sep 17 00:00:00 2001 From: Ryan Koval Date: Sun, 19 Jul 2020 19:26:31 -0500 Subject: [PATCH] added baseline golang fuzzy searching project with parity with original project --- .gitignore | 19 + LICENSE | 2 +- README.md | 7 +- console-services.yml | 768 ++++++++++++++++++++++++--------------- go.mod | 8 + go.sum | 37 ++ info.plist | 88 +++-- main.go | 90 +++++ release_tools/package.sh | 11 +- src/generate_items.js | 45 --- src/package-lock.json | 168 --------- src/package.json | 17 - src/update-script.js | 26 -- test.sh | 9 + 14 files changed, 693 insertions(+), 602 deletions(-) create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go delete mode 100755 src/generate_items.js delete mode 100644 src/package-lock.json delete mode 100644 src/package.json delete mode 100644 src/update-script.js create mode 100755 test.sh diff --git a/.gitignore b/.gitignore index 163d2b51..df7deb14 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,22 @@ info.plist.* # Visual Studio Code .vscode + +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +alfred-aws-console-services-workflow +.alfred \ No newline at end of file diff --git a/LICENSE b/LICENSE index 03177bd4..cfc052df 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 Ryan Koval +Copyright (c) 2020 Ryan Koval Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 7e2855e7..e9479f5c 100644 --- a/README.md +++ b/README.md @@ -16,19 +16,18 @@ Open up the Alfred Workflow configuration to see the full list of supported serv ### Contributing #### Requirements -- Node.js 7.3.0 (or later) +- go 1.14.0 (or later) #### Installation From the root of this repo, run: ```sh -cd src -npm install +go get github.com/rkoval/alfred-aws-console-services-workflow ``` #### Adding Entries -To add entries to the Alfred Workflow, modify [the .yml config file](src/console-services.yml) and then run [this script](src/generate_items.js) from its directory. It will parse the .yml file and add elements in-place to the info.plist file, which Alfred reads. +To add entries to the Alfred Workflow, modify [the .yml config file](console-services.yml). This file is used by the executable to populate entries in Alfred. #### Packaging for Release diff --git a/console-services.yml b/console-services.yml index da0aa6c4..b0414560 100644 --- a/console-services.yml +++ b/console-services.yml @@ -1,612 +1,784 @@ --- -- command: alexa - description: Alexa for Business - Empower your organization with voice +- id: alexa + name: Alexa for Business + description: Empower your organization with voice url: https://console.aws.amazon.com/a4b/home -- command: amplify - description: Amplify - Develop & deploy cloud-powered mobile and web apps +- id: amplify + name: Amplify + description: Develop & deploy cloud-powered mobile and web apps url: https://console.aws.amazon.com/amplify/home -- command: apigateway - description: API Gateway - Build, Deploy and Manage APIs +- id: apigateway + name: API Gateway + description: Build, Deploy and Manage APIs url: https://console.aws.amazon.com/apigateway/home -- command: appstream - description: AppStream 2.0 - Stream desktop applications securely to any web browser +- id: appstream + name: AppStream 2.0 + description: Stream desktop applications securely to any web browser url: https://console.aws.amazon.com/appstream2/home -- command: appsync - description: AppSync - Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline +- id: appsync + name: AppSync + description: Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline url: https://console.aws.amazon.com/appsync/home -- command: artifact - description: Artifact - AWS Compliance Reports and Agreements +- id: artifact + name: Artifact + description: AWS Compliance Reports and Agreements url: https://console.aws.amazon.com/artifact/home -- command: athena - description: Athena - Query Data in S3 using SQL +- id: athena + name: Athena + description: Query Data in S3 using SQL url: https://console.aws.amazon.com/athena/home -- command: awsautoscaling - description: Auto Scaling - AWS Auto Scaling enables you to quickly scale your entire application on AWS +- id: autoscaling + name: Auto Scaling + description: AWS Auto Scaling enables you to quickly scale your entire application on AWS url: https://console.aws.amazon.com/awsautoscaling/home -- command: backup - description: Backup - centrally manage and automate backups across AWS services +- id: backup + name: Backup + description: centrally manage and automate backups across AWS services url: https://console.aws.amazon.com/backup/home -- command: batch - description: Batch - Run Batch Jobs at Any Scale +- id: batch + name: Batch + description: Run Batch Jobs at Any Scale url: https://console.aws.amazon.com/batch/home -- command: blockchain - description: Blockchain - Easily create and manage scalable blockchain networks +- id: blockchain + name: Blockchain + description: Easily create and manage scalable blockchain networks url: https://console.aws.amazon.com/blockchain/home -- command: billing - description: Billing - Access, analyze, and control your AWS costs and usage +- id: billing + name: Billing + description: Access, analyze, and control your AWS costs and usage url: https://console.aws.amazon.com/billing/home -- command: budgets - description: Budgets - Set Custom Budgets and Receive Alerts +- id: budgets + name: Budgets + description: Set Custom Budgets and Receive Alerts url: https://console.aws.amazon.com/billing/home#/budgets#/home -- command: acm - description: Certificate Manager - Provision, Manage, and Deploy SSL/TLS Certificates +- id: acm + name: Certificate Manager + short_name: ACM + description: Provision, Manage, and Deploy SSL/TLS Certificates url: https://console.aws.amazon.com/acm/home -- command: chime - description: Chime - Amazon Chime is a communications service that transforms online meetings +- id: chime + name: Chime + description: Amazon Chime is a communications service that transforms online meetings url: https://chime.aws.amazon.com/ -- command: cloud9 - description: Cloud9 - A Cloud IDE for Writing, Running, and Debugging Code +- id: cloud9 + name: Cloud9 + description: A Cloud IDE for Writing, Running, and Debugging Code url: https://console.aws.amazon.com/cloud9/home -- command: cloudformation - description: CloudFormation - Create and Manage Resources with Templates +- id: cloudformation + name: CloudFormation + description: Create and Manage Resources with Templates url: https://console.aws.amazon.com/cloudformation/home -- command: cloudfront - description: CloudFront - Global Content Delivery Network +- id: cloudfront + name: CloudFront + description: Global Content Delivery Network url: https://console.aws.amazon.com/cloudfront/home -- command: cloudhsm - description: CloudHSM - Managed Hardware Security Modules in the Cloud +- id: cloudhsm + name: CloudHSM + description: Managed Hardware Security Modules in the Cloud url: https://console.aws.amazon.com/cloudhsm/home -- command: cloudmap - description: Cloud Map - Build a dynamic map of your cloud +- id: cloudmap + name: Cloud Map + description: Build a dynamic map of your cloud url: https://console.aws.amazon.com/cloudmap/home -- command: cloudsearch - description: CloudSearch - Managed Search Service +- id: cloudsearch + name: CloudSearch + description: Managed Search Service url: https://console.aws.amazon.com/cloudsearch/home -- command: cloudtrail - description: CloudTrail - Track User Activity and API Usage +- id: cloudtrail + name: CloudTrail + description: Track User Activity and API Usage url: https://console.aws.amazon.com/cloudtrail/home -- command: cloudwatch - description: CloudWatch - Monitor Resources and Applications +- id: cloudwatch + name: CloudWatch + description: Monitor Resources and Applications url: https://console.aws.amazon.com/cloudwatch/home -- command: codebuild - description: CodeBuild - Build and Test Code +- id: codebuild + name: CodeBuild + description: Build and Test Code url: https://console.aws.amazon.com/codebuild/home -- command: codecommit - description: CodeCommit - Store Code in Private Git Repositories +- id: codecommit + name: CodeCommit + description: Store Code in Private Git Repositories url: https://console.aws.amazon.com/codecommit/home -- command: codedeploy - description: CodeDeploy - Automate Code Deployments +- id: codedeploy + name: CodeDeploy + description: Automate Code Deployments url: https://console.aws.amazon.com/codedeploy/home -- command: codepipeline - description: CodePipeline - Release Software using Continuous Delivery +- id: codepipeline + name: CodePipeline + description: Release Software using Continuous Delivery url: https://console.aws.amazon.com/codepipeline/home -- command: codestar - description: Codestar - Develop, build and deploy applications +- id: codestar + name: Codestar + description: Develop, build and deploy applications url: https://console.aws.amazon.com/codestar/home -- command: cognito - description: Cognito - User Identity and App Data Synchronization +- id: cognito + name: Cognito + description: User Identity and App Data Synchronization url: https://console.aws.amazon.com/cognito/home -- command: comprehend - description: Comprehend - Analyze Unstructured Text +- id: comprehend + name: Comprehend + description: Analyze Unstructured Text url: https://console.aws.amazon.com/comprehend/home -- command: config - description: Config - Track Resource Inventory and Changes +- id: config + name: Config + description: Track Resource Inventory and Changes url: https://console.aws.amazon.com/config/home -- command: connect - description: Connect - managed contact center that enables engagement at any scale +- id: connect + name: Connect + description: managed contact center that enables engagement at any scale url: https://console.aws.amazon.com/connect/home -- command: controltower - description: Control Tower - set up and govern your multi-account AWS environment +- id: controltower + name: Control Tower + description: set up and govern your multi-account AWS environment url: https://console.aws.amazon.com/controltower/home -- command: costreports - description: Cost Explorer - Visualize and Explore Your AWS Costs and Usage +- id: costreports + name: Cost Explorer + description: Visualize and Explore Your AWS Costs and Usage + extra_search_terms: + - reports url: https://console.aws.amazon.com/cost-reports/home -- command: datapipeline - description: Data Pipeline - Orchestration for Data-Driven Workflows +- id: datapipeline + name: Data Pipeline + description: Orchestration for Data-Driven Workflows url: https://console.aws.amazon.com/datapipeline/home -- command: datasync - description: DataSync - DataSync simplifies, automates, and accelerates moving data +- id: datasync + name: DataSync + description: DataSync simplifies, automates, and accelerates moving data url: https://console.aws.amazon.com/datasync/home -- command: deeplens - description: DeepLens - Deep Learning Enabled Video Camera +- id: deeplens + name: DeepLens + description: Deep Learning Enabled Video Camera url: https://console.aws.amazon.com/deeplens/home -- command: devicefarm - description: Device Farm - Test Android, iOS, and Web Apps on Real Devices in the Cloud +- id: devicefarm + name: Device Farm + description: Test Android, iOS, and Web Apps on Real Devices in the Cloud url: https://console.aws.amazon.com/devicefarm/home -- command: directconnect - description: Direct Connect - Dedicated Network Connection to AWS +- id: directconnect + name: Direct Connect + description: Dedicated Network Connection to AWS url: https://console.aws.amazon.com/directconnect/home -- command: directoryservice - description: Directory Service - Host and Manage Active Directory +- id: directoryservice + name: Directory Service + description: Host and Manage Active Directory url: https://console.aws.amazon.com/directoryservice/home -- command: discovery - description: Application Discovery Service - Discover on-premises application inventory and dependencies +- id: discovery + name: Application Discovery Service + description: Discover on-premises application inventory and dependencies url: https://console.aws.amazon.com/discovery/home -- command: dms - description: DMS - Managed Database Migration Service +- id: dms + name: Database Migation Service + short_name: DMS + description: Managed Database Migration Service url: https://console.aws.amazon.com/dms/home -- command: documentdb - description: DocumentDB - Fully-managed MongoDB-compatible database service +- id: documentdb + name: DocumentDB + description: Fully-managed MongoDB-compatible database service url: https://console.aws.amazon.com/documentdb/home -- command: dynamodb - description: DynamoDB - Managed NoSQL Database +- id: dynamodb + name: DynamoDB + description: Managed NoSQL Database url: https://console.aws.amazon.com/dynamodb/home -- command: ec2 - description: EC2 - Virtual Servers in the Cloud +- id: ec2 + name: Elastic Cloud Compute + short_name: EC2 + description: Virtual Servers in the Cloud url: https://console.aws.amazon.com/ec2/home -- command: ecr - description: ECR - Fully-managed Docker container registry +- id: ecr + name: Elastic Container Registry + short_name: ECR + description: Fully-managed Docker container registry url: https://console.aws.amazon.com/ecr/home -- command: ecs - description: ECS - Run and Manage Docker Containers +- id: ecs + name: Elastic Container Service + short_name: ECS + description: Run and Manage Docker Containers url: https://console.aws.amazon.com/ecs/home -- command: efs - description: EFS - Managed File Storage for EC2 +- id: efs + name: Elastic File Storage + short_naem: EFS + description: Managed File Storage for EC2 url: https://console.aws.amazon.com/efs/home -- command: eks - description: EKS - Managed Kubernetes on AWS +- id: eks + name: Elastic Kubernetes Service + short_name: EKS + description: Managed Kubernetes on AWS url: https://console.aws.amazon.com/eks/home -- command: elasticache - description: ElastiCache - In-Memory Cache +- id: elasticache + name: ElastiCache + description: In-Memory Cache url: https://console.aws.amazon.com/elasticache/home -- command: elasticbeanstalk - description: Elastic Beanstalk - Run and Manage Web Apps +- id: elasticbeanstalk + name: Elastic Beanstalk + description: Run and Manage Web Apps url: https://console.aws.amazon.com/elasticbeanstalk/home -- command: ess - description: Elasticsearch Service - Run and Scale Elasticsearch Clusters +- id: ess + name: Elasticsearch Service + short_name: ESS + description: Run and Scale Elasticsearch Clusters url: https://console.aws.amazon.com/es/home -- command: elastictranscoder - description: Elastic Transcoder - Easy-to-Use Scalable Media Transcoding +- id: elastictranscoder + name: Elastic Transcoder + description: Easy-to-Use Scalable Media Transcoding url: https://console.aws.amazon.com/elastictranscoder/home -- command: emr - description: EMR - Managed Hadoop Framework +- id: emr + name: Elastic Map Reduce + short_name: EMR + description: Managed Hadoop Framework url: https://console.aws.amazon.com/elasticmapreduce/home -- command: eventbridge - description: EventBridge - Serverless event bus that connects application data from your own apps, SaaS, and AWS services +- id: eventbridge + name: EventBridge + description: Serverless event bus that connects application data from your own apps, SaaS, and AWS services url: https://console.aws.amazon.com/events/home -- command: forecast - description: Forecast - fully-managed service for accurate time-series forecasting +- id: forecast + name: Forecast + description: fully-managed service for accurate time-series forecasting url: https://console.aws.amazon.com/forecast/home -- command: freertos - description: FreeRTOS - IoT Operating System for Microcontrollers +- id: freertos + name: FreeRTOS + description: IoT Operating System for Microcontrollers url: https://console.aws.amazon.com/freertos/home -- command: fsx - description: FSx - Fully managed third-party file systems optimized for a variety of workloads +- id: fsx + name: FSx + description: Fully managed third-party file systems optimized for a variety of workloads url: https://console.aws.amazon.com/fsx/home -- command: gamelift - description: GameLift - Deploy and Scale Session-based Multiplayer Games +- id: gamelift + name: GameLift + description: Deploy and Scale Session-based Multiplayer Games url: https://console.aws.amazon.com/gamelift/home -- command: glacier - description: S3 Glacier - Archive Storage in the Cloud +- id: glacier + name: S3 Glacier + description: Archive Storage in the Cloud url: https://console.aws.amazon.com/glacier/home -- command: globalaccelerator - description: Global Accelerator - Improve your application’s availability and performance using the AWS Global Network +- id: globalaccelerator + name: Global Accelerator + description: Improve your application’s availability and performance using the AWS Global Network url: https://us-west-2.console.aws.amazon.com/ec2/GlobalAccelerator/home?region=us-west-2 -- command: glue - description: Glue - fully managed ETL (extract, transform, and load) service +- id: glue + name: Glue + description: fully managed ETL (extract, transform, and load) service url: https://console.aws.amazon.com/glue/home -- command: groundstation - description: Ground Station - Communicate with satellites +- id: groundstation + name: Ground Station + description: Communicate with satellites url: https://console.aws.amazon.com/groundstation/home -- command: guardduty - description: GuardDuty - Intelligent Threat Detection to Protect Your AWS Accounts and Workloads +- id: guardduty + name: GuardDuty + description: Intelligent Threat Detection to Protect Your AWS Accounts and Workloads url: https://console.aws.amazon.com/guardduty/home -- command: iam - description: IAM - Manage User Access and Encryption Keys +- id: iam + name: Identity and Access Management + short_name: IAM + description: Manage User Access and Encryption Keys url: https://console.aws.amazon.com/iam/home -- command: inspector - description: Inspector - Analyze Application Security +- id: inspector + name: Inspector + description: Analyze Application Security url: https://console.aws.amazon.com/inspector/home -- command: iot1click - description: IoT 1-Click - Trigger AWS Lambda functions from simple devices +- id: iot1click + name: IoT 1-Click + description: Trigger AWS Lambda functions from simple devices url: https://console.aws.amazon.com/iot1click/home -- command: iotanalytics - description: IoT Analytics - Collect, preprocess, store, analyze and visualize data of IoT devices +- id: iotanalytics + name: IoT Analytics + description: Collect, preprocess, store, analyze and visualize data of IoT devices url: https://console.aws.amazon.com/iotanalytics/home -- command: iotcore - description: IoT Core - Connect Devices to the Cloud +- id: iotcore + name: IoT Core + description: Connect Devices to the Cloud url: https://console.aws.amazon.com/iotcore/home -- command: iotdevicedefender - description: IoT Device Defender - Connect Devices to the Cloud +- id: iotdevicedefender + name: IoT Device Defender + description: Connect Devices to the Cloud url: https://console.aws.amazon.com/devicedefender/home -- command: iotdevicemanagement - description: IoT Device Management - Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices +- id: iotdevicemanagement + name: IoT Device Management + description: Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices url: https://console.aws.amazon.com/iotdm/home -- command: iotevents - description: IoT Events - Monitor device fleets for changes and trigger alerts to respond +- id: iotevents + name: IoT Events + description: Monitor device fleets for changes and trigger alerts to respond url: https://console.aws.amazon.com/iotevents/home -- command: iotgreengrass - description: IoT Greengrass - Deploy and run code on your devices +- id: iotgreengrass + name: IoT Greengrass + description: Deploy and run code on your devices url: https://console.aws.amazon.com/iotgreengrass/home -- command: iotsitewise - description: IoT SiteWise - Data driven decisions in Industrial operations +- id: iotsitewise + name: IoT SiteWise + description: Data driven decisions in Industrial operations url: https://console.aws.amazon.com/iotsitewise/home -- command: iotthingsgraph - description: IoT Things Graph - Easily connect devices and web services to build IoT applications +- id: iotthingsgraph + name: IoT Things Graph + description: Easily connect devices and web services to build IoT applications url: https://console.aws.amazon.com/thingsgraph/home -- command: msk - description: MSK - Fully managed, highly available, and secure service for Apache Kafka +- id: msk + name: Managed Streaming for Apache Kafka + short_name: MSK + description: Fully managed, highly available, and secure service for Apache Kafka url: https://console.aws.amazon.com/msk/home -- command: kms - description: Key Management Service - Securely Generate and Manage AWS Encryption Keys +- id: kms + name: Key Management Service + short_name: KMS + description: Securely Generate and Manage AWS Encryption Keys url: https://console.aws.amazon.com/kms/home -- command: kinesis - description: Kinesis - Work with Real-Time Streaming Data +- id: kinesis + name: Kinesis + description: Work with Real-Time Streaming Data url: https://console.aws.amazon.com/kinesis/home -- command: lambda - description: Lambda - Run Code without Thinking about Servers +- id: lambda + name: Lambda + description: Run Code without Thinking about Servers url: https://console.aws.amazon.com/lambda/home -- command: lex - description: Lex - Build Voice and Text Chatbots +- id: lex + name: Lex + description: Build Voice and Text Chatbots url: https://console.aws.amazon.com/lex/home -- command: licensemanager - description: License Manager - Set rules to manage, discover, and report third-party license usage proactively +- id: licensemanager + name: License Manager + description: Set rules to manage, discover, and report third-party license usage proactively url: https://console.aws.amazon.com/license-manager/home -- command: lightsail - description: Lightsail - Launch and Manage Virtual Private Servers +- id: lightsail + name: Lightsail + description: Launch and Manage Virtual Private Servers url: https://lightsail.aws.amazon.com/ls/webapp/home -- command: macie - description: Macie - Amazon Macie classifies and secures your business-critical content. +- id: macie + name: Macie + description: Amazon Macie classifies and secures your business-critical content. url: https://us-east-1.redirection.macie.aws.amazon.com/ -- command: managedservices - description: Managed Services - IT operations management for AWS +- id: managedservices + name: Managed Services + description: IT operations management for AWS url: https://console.aws.amazon.com/managedservices/home -- command: marketplace - description: Marketplace Subscriptions - Digital catalog where you can find, buy, and deploy software +- id: marketplace + name: Marketplace Subscriptions + description: Digital catalog where you can find, buy, and deploy software url: https://console.aws.amazon.com/marketplace/home -- command: mediaconnect - description: MediaConnect - Reliable, secure, and flexible transport for live video +- id: mediaconnect + name: MediaConnect + description: Reliable, secure, and flexible transport for live video url: https://console.aws.amazon.com/mediaconnect/home -- command: mediaconvert - description: MediaConvert - Convert file-based content for broadcast and multiscreen delivery +- id: mediaconvert + name: MediaConvert + description: Convert file-based content for broadcast and multiscreen delivery url: https://console.aws.amazon.com/mediaconvert/home -- command: medialive - description: MediaLive - Convert video inputs into live outputs for broadcast and streaming delivery +- id: medialive + name: MediaLive + description: Convert video inputs into live outputs for broadcast and streaming delivery url: https://console.aws.amazon.com/medialive/home -- command: mediapackage - description: MediaPackage - Deliver video to many devices using just-in-time format conversion +- id: mediapackage + name: MediaPackage + description: Deliver video to many devices using just-in-time format conversion url: https://console.aws.amazon.com/mediapackage/home -- command: mediastore - description: MediaStore - Store and deliver video assets for live or on-demand media workflows +- id: mediastore + name: MediaStore + description: Store and deliver video assets for live or on-demand media workflows url: https://console.aws.amazon.com/mediastore/home -- command: mediatailor - description: MediaTailor - Personalize and monetize multiscreen content with server-side ad insertion +- id: mediatailor + name: MediaTailor + description: Personalize and monetize multiscreen content with server-side ad insertion url: https://console.aws.amazon.com/mediatailor/home -- command: migrationhub - description: Migration Hub - Simplify and accelerate the migration of your data centers to AWS +- id: migrationhub + name: Migration Hub + description: Simplify and accelerate the migration of your data centers to AWS url: https://console.aws.amazon.com/migrationhub/home -- command: mobilehub - description: Mobile Hub - Build, Test, and Monitor Mobile Apps +- id: mobilehub + name: Mobile Hub + description: Build, Test, and Monitor Mobile Apps url: https://console.aws.amazon.com/mobilehub/home -- command: mq - description: MQ - Managed message broker service for Apache ActiveMQ +- id: mq + name: MQ + description: Managed message broker service for Apache ActiveMQ + extra_search_terms: + - activemq url: https://console.aws.amazon.com/amazon-mq/home -- command: neptune - description: Neptune - Fast, reliable graph database built for the cloud +- id: neptune + name: Neptune + description: Fast, reliable graph database built for the cloud url: https://console.aws.amazon.com/neptune/home -- command: opsworks - description: OpsWorks - Configuration Management with Chef and Puppet +- id: opsworks + name: OpsWorks + description: Configuration Management with Chef and Puppet url: https://console.aws.amazon.com/opsworks/home -- command: organizations - description: Organizations - Policy-based management for multiple AWS accounts. +- id: organizations + name: Organizations + description: Policy-based management for multiple AWS accounts. url: https://console.aws.amazon.com/organizations/home -- command: personalize - description: Personalize - easily add real-time recommendations to your apps +- id: personalize + name: Personalize + description: easily add real-time recommendations to your apps url: https://console.aws.amazon.com/personalize/home -- command: pinpoint - description: Pinpoint - Engage Users via Email, SMS, Push & Analytics +- id: pinpoint + name: Pinpoint + description: Engage Users via Email, SMS, Push & Analytics url: https://console.aws.amazon.com/pinpoint/home -- command: polly - description: Polly - Turn Text into Lifelike Speech +- id: polly + name: Polly + description: Turn Text into Lifelike Speech url: https://console.aws.amazon.com/polly/home -- command: quicksight - description: QuickSight - Fast, easy to use business analytics +- id: quicksight + name: QuickSight + description: Fast, easy to use business analytics url: https://quicksight.aws.amazon.com/ -- command: rds - description: RDS - Managed Relational Database Service +- id: rds + name: Relational Database Service + short_name: RDS + description: Managed Relational Database Service url: https://console.aws.amazon.com/rds/home -- command: redshift - description: Redshift - Fast, Simple, Cost-Effective Data Warehousing +- id: redshift + name: Redshift + description: Fast, Simple, Cost-Effective Data Warehousing url: https://console.aws.amazon.com/redshift/home -- command: rekognition - description: Rekognition - Search and Analyze Images +- id: rekognition + name: Rekognition + description: Search and Analyze Images url: https://console.aws.amazon.com/rekognition/home -- command: ram - description: Resource Access Manager - Share AWS resources with other accounts or AWS Organizations +- id: ram + name: Resource Access Manager + description: Share AWS resources with other accounts or AWS Organizations url: https://console.aws.amazon.com/ram/home -- command: robomaker - description: RoboMaker - Develop, test, and deploy intelligent robotics applications +- id: robomaker + name: RoboMaker + description: Develop, test, and deploy intelligent robotics applications url: https://console.aws.amazon.com/robomaker/home -- command: route53 - description: Route 53 - Scalable DNS and Domain Name Registration +- id: route53 + name: Route 53 + description: Scalable DNS and Domain Name Registration url: https://console.aws.amazon.com/route53/home -- command: s3 - description: S3 - Scalable Storage in the Cloud +- id: s3 + name: Simple Storage Service + short_name: S3 + description: Scalable Storage in the Cloud url: https://console.aws.amazon.com/s3/home -- command: sagemaker - description: SageMaker - Build, Train, and Deploy Machine Learning Models +- id: sagemaker + name: SageMaker + description: Build, Train, and Deploy Machine Learning Models url: https://console.aws.amazon.com/sagemaker/home -- command: secretsmanager - description: Secrets Manager - Easily rotate, manage, and retrieve secrets throughout their lifecycle +- id: secretsmanager + name: Secrets Manager + description: Easily rotate, manage, and retrieve secrets throughout their lifecycle url: https://console.aws.amazon.com/secretsmanager/home -- command: securityhub - description: Security Hub - AWS’s security and compliance center +- id: securityhub + name: Security Hub + description: AWS’s security and compliance center url: https://console.aws.amazon.com/securityhub/home -- command: serverlessrepo - description: Serverless Application Repository - Assemble, deploy, and share serverless applications within teams or publicly +- id: serverlessrepo + name: Serverless Application Repository + description: Assemble, deploy, and share serverless applications within teams or publicly url: https://console.aws.amazon.com/serverlessrepo/home -- command: servermigrationservice - description: Server Migration Service - Migrate on-premises servers to AWS +- id: servermigrationservice + name: Server Migration Service + description: Migrate on-premises servers to AWS url: https://console.aws.amazon.com/servermigration/home -- command: servicecatalog - description: Service Catalog - allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal. +- id: servicecatalog + name: Service Catalog + description: allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal. url: https://console.aws.amazon.com/servicecatalog/home -- command: ses - description: Simple Email Service - Email Sending and Receiving Service +- id: ses + name: Simple Email Service + short_name: SES + description: Email Sending and Receiving Service url: https://console.aws.amazon.com/ses/home -- command: swf - description: SWF - Workflow Service for Coordinating Application Components +- id: swf + name: Simple Workflow Service + short_name: SWF + description: Workflow Service for Coordinating Application Components url: https://console.aws.amazon.com/swf/home -- command: transfer - description: Transfer for SFTP - Fully-managed SFTP service for Amazon S3 +- id: transfer + name: Transfer for SFTP + description: Fully-managed SFTP service for Amazon S3 url: https://console.aws.amazon.com/transfer/home -- command: shield - description: WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic - url: https://console.aws.amazon.com/shield/home - -- command: singlesignon - description: Single Sign-On - Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications +- id: singlesignon + name: Single Sign-On + short_name: SSO + description: Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications url: https://console.aws.amazon.com/singlesignon/home -- command: snowball - description: Snowball - Large Scale Data Transport +- id: snowball + name: Snowball + description: Large Scale Data Transport url: https://console.aws.amazon.com/snowball/home -- command: sns - description: Simple Notification Service - SNS Pub/Sub, Mobile Push and SMS +- id: sns + name: Simple Notification Service + short_name: SNS + description: SNS Pub/Sub, Mobile Push and SMS url: https://console.aws.amazon.com/sns/home -- command: sqs - description: Simple Queue Service - SQS Managed Message Queues +- id: sqs + name: Simple Queue Service + short_name: SQS + description: SQS Managed Message Queues url: https://console.aws.amazon.com/sqs/home -- command: stepfunctions - description: Step Functions - Coordinate Distributed Applications +- id: stepfunctions + name: Step Functions + description: Coordinate Distributed Applications url: https://console.aws.amazon.com/states/home -- command: storagegateway - description: Storage Gateway - Hybrid Storage Integration +- id: storagegateway + name: Storage Gateway + description: Hybrid Storage Integration url: https://console.aws.amazon.com/storagegateway/home -- command: sumerian - description: Sumerian - Build VR, AR, and 3D applications +- id: sumerian + name: Sumerian + description: Build VR, AR, and 3D applications url: https://console.aws.amazon.com/sumerian/home -- command: systemsmanager - description: Systems Manager - a Central Place to View and Manage AWS Resources +- id: systemsmanager + name: Systems Manager + description: Gain operational insights and take action on AWS resources url: https://console.aws.amazon.com/systems-manager/home -- command: support - description: Support - Support the success and operational health of your AWS solutions +- id: support + name: Support + description: Support the success and operational health of your AWS solutions url: https://console.aws.amazon.com/support/home -- command: transcribe - description: Transcribe - Powerful Speech Recognition +- id: transcribe + name: Transcribe + description: Powerful Speech Recognition url: https://console.aws.amazon.com/transcribe/home -- command: translate - description: Translate - Translate Text in Real-time +- id: translate + name: Translate + description: Translate Text in Real-time url: https://console.aws.amazon.com/translate/home -- command: trustedadvisor - description: Trusted Advisor - Optimize Performance and Security +- id: trustedadvisor + name: Trusted Advisor + description: Optimize Performance and Security url: https://console.aws.amazon.com/trustedadvisor/home -- command: vpc - description: VPC - Isolated Cloud Resources +- id: vpc + name: Virtual Private Cloud + description: Isolated Cloud Resources url: https://console.aws.amazon.com/vpc/home -- command: waf - description: WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic +- id: waf + name: Web Application Firewall & Shield + short_name: WAF + description: Protects Against DDoS Attacks and Malicious Web Traffic url: https://console.aws.amazon.com/wafv2/home -- command: wellarchitectedtool - description: Well-Architected Tool - learn best practices, measure, and improve your workloads +- id: wellarchitectedtool + name: Well-Architected Tool + description: Learn best practices, measure, and improve your workloads url: https://console.aws.amazon.com/wellarchitected/home -- command: worklink - description: WorkLink - Enable secure mobile access to internal websites and web apps +- id: worklink + name: WorkLink + description: Enable secure mobile access to internal websites and web apps url: https://console.aws.amazon.com/worklink/home -- command: workmail - description: WorkMail - Secure Email and Calendaring Service +- id: workmail + name: WorkMail + description: Secure Email and Calendaring Service url: https://console.aws.amazon.com/workmail/home -- command: workspaces - description: WorkSpaces - Desktops in the Cloud +- id: workspaces + name: WorkSpaces + description: Desktops in the Cloud url: https://console.aws.amazon.com/workspaces/home -- command: xray - description: X-Ray - Analyze and Debug Your Applications +- id: xray + name: X-Ray + description: Analyze and Debug Your Applications url: https://console.aws.amazon.com/xray/home -- command: appmesh - description: Easily monitor and control microservices +- id: appmesh + name: App Mesh + description: Application-level networking for all your services url: https://console.aws.amazon.com/appmesh/home -- command: augmentedai +- id: augmentedai + name: Augmented AI description: Easy implement human review of machine learning predictions url: https://console.aws.amazon.com/a2i/home -- command: bracket - description: Service for exploring, evaluating, and experimenting with quantum computing +- id: bracket + name: Braket + description: Explore and experiment with quantum computing url: https://pages.awscloud.com/Amazon-Braket-Preview.html -- command: mcs - description: Serverless Cassandra-compatible database - url: https://console.aws.amazon.com/mcs/home +- id: mcs + name: Keyspaces (for Apache Cassandra) + description: A scalable, highly available, and managed Apache Cassandra–compatible database service + url: https://console.aws.amazon.com/keyspaces/home -- command: codeguru +- id: codeguru + name: CodeGuru description: Intelligent recommendations for building and running modern applications url: https://console.aws.amazon.com/codeguru/home -- command: computeoptimizer +- id: computeoptimizer + name: Compute Optimizer description: Recommend optimal AWS Compute resources for your workloads url: https://console.aws.amazon.com/compute-optimizer/home -- command: deepracer +- id: deepracer + name: DeepRacer description: Fully autonomous 1/18th scale race car, driven by machine learning url: https://console.aws.amazon.com/deepracer/home -- command: detective +- id: detective + name: Detective description: Investigate and analyse possible security issues url: https://console.aws.amazon.com/detective/home -- command: ec2imagebuilder - description: https://console.aws.amazon.com/imagebuilder/home - url: A managed service to automate build, customize and deploy OS images +- id: ec2imagebuilder + name: EC2 Image Builder + description: A managed service to automate build, customize and deploy OS images + url: https://console.aws.amazon.com/imagebuilder/home -- command: frauddetector +- id: frauddetector + name: Fraud Detector description: Detect more online fraud faster with machine learning url: https://console.aws.amazon.com/frauddetector/home -- command: kendra +- id: kendra + name: Kendra description: Highly accurate enterprise search powered by machine learning url: https://console.aws.amazon.com/kendra/home -- command: qldb +- id: qldb + name: QLDB description: Fully managed ledger database url: https://console.aws.amazon.com/qldb/home -- command: outpost +- id: outpost + name: Outposts description: Run AWS Services On Premises url: https://console.aws.amazon.com/outposts/home -- command: iq +- id: iq + name: IQ description: Complete projects faster with help from third-party AWS Certified experts url: https://iq.aws.amazon.com/ -- command: chatbot +- id: chatbot + name: Chatbot description: ChatOps for AWS url: https://console.aws.amazon.com/chatbot/home -- command: launchwizard +- id: launchwizard + name: Launch Wizard description: Size, configure, and deploy third-party applications on AWS url: https://console.aws.amazon.com/launchwizard/home diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..dd81d134 --- /dev/null +++ b/go.mod @@ -0,0 +1,8 @@ +module github.com/rkoval/alfred-aws-console-services-workflow + +go 1.14 + +require ( + github.com/deanishe/awgo v0.25.0 + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..baea403f --- /dev/null +++ b/go.sum @@ -0,0 +1,37 @@ +github.com/bmatcuk/doublestar v1.3.1/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deanishe/awgo v0.25.0 h1:r6/eJFETRB6Zex10XbjixSASGlc2a484b+FgRRAYY9g= +github.com/deanishe/awgo v0.25.0/go.mod h1:reRZEwXsMuJISYxmdqkn24KrHN+WV/ZQzRBXTtKDPHY= +github.com/deanishe/go-env v0.4.0 h1:tpu14o16gJGTN/w2gxntwxu2l5Eby30jSrnlgOfjzwk= +github.com/deanishe/go-env v0.4.0/go.mod h1:RgEcGAqdRnt8ybQteAbv1Ys2lWIRE7TlgON/sbdjuaY= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +howett.net/plist v0.0.0-20200419221736-3b63eb3a43b5/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= diff --git a/info.plist b/info.plist index 643e8203..0331d247 100644 --- a/info.plist +++ b/info.plist @@ -8,11 +8,11 @@ Tools connections - D2034C4B-F6D7-4F43-A9CC-2679EACDC081 + ED4983E7-5D59-45C5-AE7F-5D5570D0B499 destinationuid - 07488302-09AE-43E3-A8A7-D7C26317547C + D1D5721F-0D3B-42C3-95D8-8996D9725E0C modifiers 0 modifiersubtext @@ -35,48 +35,66 @@ config - browser - - spaces - - url - {query} - utf8 - - - type - alfred.workflow.action.openurl - uid - 07488302-09AE-43E3-A8A7-D7C26317547C - version - 1 - - - config - + alfredfiltersresults + + alfredfiltersresultsmatchmode + 0 argumenttrimmode 0 argumenttype 0 - fixedorder - - items - [{"title":"alexa","arg":"https://console.aws.amazon.com/a4b/home","subtitle":"Alexa for Business - Empower your organization with voice","imagefile":"alexa.png"},{"title":"amplify","arg":"https://console.aws.amazon.com/amplify/home","subtitle":"Amplify - Develop & deploy cloud-powered mobile and web apps","imagefile":"amplify.png"},{"title":"apigateway","arg":"https://console.aws.amazon.com/apigateway/home","subtitle":"API Gateway - Build, Deploy and Manage APIs","imagefile":"apigateway.png"},{"title":"appstream","arg":"https://console.aws.amazon.com/appstream2/home","subtitle":"AppStream 2.0 - Stream desktop applications securely to any web browser","imagefile":"appstream.png"},{"title":"appsync","arg":"https://console.aws.amazon.com/appsync/home","subtitle":"AppSync - Real-Time Data Sync Using GraphQL for Mobile & Web Apps, Online or Offline","imagefile":"appsync.png"},{"title":"artifact","arg":"https://console.aws.amazon.com/artifact/home","subtitle":"Artifact - AWS Compliance Reports and Agreements","imagefile":"artifact.png"},{"title":"athena","arg":"https://console.aws.amazon.com/athena/home","subtitle":"Athena - Query Data in S3 using SQL","imagefile":"athena.png"},{"title":"awsautoscaling","arg":"https://console.aws.amazon.com/awsautoscaling/home","subtitle":"Auto Scaling - AWS Auto Scaling enables you to quickly scale your entire application on AWS","imagefile":"awsautoscaling.png"},{"title":"backup","arg":"https://console.aws.amazon.com/backup/home","subtitle":"Backup - centrally manage and automate backups across AWS services","imagefile":"backup.png"},{"title":"batch","arg":"https://console.aws.amazon.com/batch/home","subtitle":"Batch - Run Batch Jobs at Any Scale","imagefile":"batch.png"},{"title":"blockchain","arg":"https://console.aws.amazon.com/blockchain/home","subtitle":"Blockchain - Easily create and manage scalable blockchain networks","imagefile":"blockchain.png"},{"title":"billing","arg":"https://console.aws.amazon.com/billing/home","subtitle":"Billing - Access, analyze, and control your AWS costs and usage","imagefile":"billing.png"},{"title":"budgets","arg":"https://console.aws.amazon.com/billing/home#/budgets#/home","subtitle":"Budgets - Set Custom Budgets and Receive Alerts","imagefile":"budgets.png"},{"title":"acm","arg":"https://console.aws.amazon.com/acm/home","subtitle":"Certificate Manager - Provision, Manage, and Deploy SSL/TLS Certificates","imagefile":"acm.png"},{"title":"chime","arg":"https://chime.aws.amazon.com/","subtitle":"Chime - Amazon Chime is a communications service that transforms online meetings","imagefile":"chime.png"},{"title":"cloud9","arg":"https://console.aws.amazon.com/cloud9/home","subtitle":"Cloud9 - A Cloud IDE for Writing, Running, and Debugging Code","imagefile":"cloud9.png"},{"title":"cloudformation","arg":"https://console.aws.amazon.com/cloudformation/home","subtitle":"CloudFormation - Create and Manage Resources with Templates","imagefile":"cloudformation.png"},{"title":"cloudfront","arg":"https://console.aws.amazon.com/cloudfront/home","subtitle":"CloudFront - Global Content Delivery Network","imagefile":"cloudfront.png"},{"title":"cloudhsm","arg":"https://console.aws.amazon.com/cloudhsm/home","subtitle":"CloudHSM - Managed Hardware Security Modules in the Cloud","imagefile":"cloudhsm.png"},{"title":"cloudmap","arg":"https://console.aws.amazon.com/cloudmap/home","subtitle":"Cloud Map - Build a dynamic map of your cloud","imagefile":"cloudmap.png"},{"title":"cloudsearch","arg":"https://console.aws.amazon.com/cloudsearch/home","subtitle":"CloudSearch - Managed Search Service","imagefile":"cloudsearch.png"},{"title":"cloudtrail","arg":"https://console.aws.amazon.com/cloudtrail/home","subtitle":"CloudTrail - Track User Activity and API Usage","imagefile":"cloudtrail.png"},{"title":"cloudwatch","arg":"https://console.aws.amazon.com/cloudwatch/home","subtitle":"CloudWatch - Monitor Resources and Applications","imagefile":"cloudwatch.png"},{"title":"codebuild","arg":"https://console.aws.amazon.com/codebuild/home","subtitle":"CodeBuild - Build and Test Code","imagefile":"codebuild.png"},{"title":"codecommit","arg":"https://console.aws.amazon.com/codecommit/home","subtitle":"CodeCommit - Store Code in Private Git Repositories","imagefile":"codecommit.png"},{"title":"codedeploy","arg":"https://console.aws.amazon.com/codedeploy/home","subtitle":"CodeDeploy - Automate Code Deployments","imagefile":"codedeploy.png"},{"title":"codepipeline","arg":"https://console.aws.amazon.com/codepipeline/home","subtitle":"CodePipeline - Release Software using Continuous Delivery","imagefile":"codepipeline.png"},{"title":"codestar","arg":"https://console.aws.amazon.com/codestar/home","subtitle":"Codestar - Develop, build and deploy applications","imagefile":"codestar.png"},{"title":"cognito","arg":"https://console.aws.amazon.com/cognito/home","subtitle":"Cognito - User Identity and App Data Synchronization","imagefile":"cognito.png"},{"title":"comprehend","arg":"https://console.aws.amazon.com/comprehend/home","subtitle":"Comprehend - Analyze Unstructured Text","imagefile":"comprehend.png"},{"title":"config","arg":"https://console.aws.amazon.com/config/home","subtitle":"Config - Track Resource Inventory and Changes","imagefile":"config.png"},{"title":"connect","arg":"https://console.aws.amazon.com/connect/home","subtitle":"Connect - managed contact center that enables engagement at any scale","imagefile":"connect.png"},{"title":"controltower","arg":"https://console.aws.amazon.com/controltower/home","subtitle":"Control Tower - set up and govern your multi-account AWS environment","imagefile":"controltower.png"},{"title":"costreports","arg":"https://console.aws.amazon.com/cost-reports/home","subtitle":"Cost Explorer - Visualize and Explore Your AWS Costs and Usage","imagefile":"costreports.png"},{"title":"datapipeline","arg":"https://console.aws.amazon.com/datapipeline/home","subtitle":"Data Pipeline - Orchestration for Data-Driven Workflows","imagefile":"datapipeline.png"},{"title":"datasync","arg":"https://console.aws.amazon.com/datasync/home","subtitle":"DataSync - DataSync simplifies, automates, and accelerates moving data","imagefile":"datasync.png"},{"title":"deeplens","arg":"https://console.aws.amazon.com/deeplens/home","subtitle":"DeepLens - Deep Learning Enabled Video Camera","imagefile":"deeplens.png"},{"title":"devicefarm","arg":"https://console.aws.amazon.com/devicefarm/home","subtitle":"Device Farm - Test Android, iOS, and Web Apps on Real Devices in the Cloud","imagefile":"devicefarm.png"},{"title":"directconnect","arg":"https://console.aws.amazon.com/directconnect/home","subtitle":"Direct Connect - Dedicated Network Connection to AWS","imagefile":"directconnect.png"},{"title":"directoryservice","arg":"https://console.aws.amazon.com/directoryservice/home","subtitle":"Directory Service - Host and Manage Active Directory","imagefile":"directoryservice.png"},{"title":"discovery","arg":"https://console.aws.amazon.com/discovery/home","subtitle":"Application Discovery Service - Discover on-premises application inventory and dependencies","imagefile":"discovery.png"},{"title":"dms","arg":"https://console.aws.amazon.com/dms/home","subtitle":"DMS - Managed Database Migration Service","imagefile":"dms.png"},{"title":"documentdb","arg":"https://console.aws.amazon.com/documentdb/home","subtitle":"DocumentDB - Fully-managed MongoDB-compatible database service","imagefile":"documentdb.png"},{"title":"dynamodb","arg":"https://console.aws.amazon.com/dynamodb/home","subtitle":"DynamoDB - Managed NoSQL Database","imagefile":"dynamodb.png"},{"title":"ec2","arg":"https://console.aws.amazon.com/ec2/home","subtitle":"EC2 - Virtual Servers in the Cloud","imagefile":"ec2.png"},{"title":"ecr","arg":"https://console.aws.amazon.com/ecr/home","subtitle":"ECR - Fully-managed Docker container registry","imagefile":"ecr.png"},{"title":"ecs","arg":"https://console.aws.amazon.com/ecs/home","subtitle":"ECS - Run and Manage Docker Containers","imagefile":"ecs.png"},{"title":"efs","arg":"https://console.aws.amazon.com/efs/home","subtitle":"EFS - Managed File Storage for EC2","imagefile":"efs.png"},{"title":"eks","arg":"https://console.aws.amazon.com/eks/home","subtitle":"EKS - Managed Kubernetes on AWS","imagefile":"eks.png"},{"title":"elasticache","arg":"https://console.aws.amazon.com/elasticache/home","subtitle":"ElastiCache - In-Memory Cache","imagefile":"elasticache.png"},{"title":"elasticbeanstalk","arg":"https://console.aws.amazon.com/elasticbeanstalk/home","subtitle":"Elastic Beanstalk - Run and Manage Web Apps","imagefile":"elasticbeanstalk.png"},{"title":"ess","arg":"https://console.aws.amazon.com/es/home","subtitle":"Elasticsearch Service - Run and Scale Elasticsearch Clusters","imagefile":"ess.png"},{"title":"elastictranscoder","arg":"https://console.aws.amazon.com/elastictranscoder/home","subtitle":"Elastic Transcoder - Easy-to-Use Scalable Media Transcoding","imagefile":"elastictranscoder.png"},{"title":"emr","arg":"https://console.aws.amazon.com/elasticmapreduce/home","subtitle":"EMR - Managed Hadoop Framework","imagefile":"emr.png"},{"title":"eventbridge","arg":"https://console.aws.amazon.com/events/home","subtitle":"EventBridge - Serverless event bus that connects application data from your own apps, SaaS, and AWS services","imagefile":"eventbridge.png"},{"title":"forecast","arg":"https://console.aws.amazon.com/forecast/home","subtitle":"Forecast - fully-managed service for accurate time-series forecasting","imagefile":"forecast.png"},{"title":"freertos","arg":"https://console.aws.amazon.com/freertos/home","subtitle":"FreeRTOS - IoT Operating System for Microcontrollers","imagefile":"freertos.png"},{"title":"fsx","arg":"https://console.aws.amazon.com/fsx/home","subtitle":"FSx - Fully managed third-party file systems optimized for a variety of workloads","imagefile":"fsx.png"},{"title":"gamelift","arg":"https://console.aws.amazon.com/gamelift/home","subtitle":"GameLift - Deploy and Scale Session-based Multiplayer Games","imagefile":"gamelift.png"},{"title":"glacier","arg":"https://console.aws.amazon.com/glacier/home","subtitle":"S3 Glacier - Archive Storage in the Cloud","imagefile":"glacier.png"},{"title":"globalaccelerator","arg":"https://us-west-2.console.aws.amazon.com/ec2/GlobalAccelerator/home?region=us-west-2","subtitle":"Global Accelerator - Improve your application’s availability and performance using the AWS Global Network","imagefile":"globalaccelerator.png"},{"title":"glue","arg":"https://console.aws.amazon.com/glue/home","subtitle":"Glue - fully managed ETL (extract, transform, and load) service","imagefile":"glue.png"},{"title":"groundstation","arg":"https://console.aws.amazon.com/groundstation/home","subtitle":"Ground Station - Communicate with satellites","imagefile":"groundstation.png"},{"title":"guardduty","arg":"https://console.aws.amazon.com/guardduty/home","subtitle":"GuardDuty - Intelligent Threat Detection to Protect Your AWS Accounts and Workloads","imagefile":"guardduty.png"},{"title":"iam","arg":"https://console.aws.amazon.com/iam/home","subtitle":"IAM - Manage User Access and Encryption Keys","imagefile":"iam.png"},{"title":"inspector","arg":"https://console.aws.amazon.com/inspector/home","subtitle":"Inspector - Analyze Application Security","imagefile":"inspector.png"},{"title":"iot1click","arg":"https://console.aws.amazon.com/iot1click/home","subtitle":"IoT 1-Click - Trigger AWS Lambda functions from simple devices","imagefile":"iot1click.png"},{"title":"iotanalytics","arg":"https://console.aws.amazon.com/iotanalytics/home","subtitle":"IoT Analytics - Collect, preprocess, store, analyze and visualize data of IoT devices","imagefile":"iotanalytics.png"},{"title":"iotcore","arg":"https://console.aws.amazon.com/iotcore/home","subtitle":"IoT Core - Connect Devices to the Cloud","imagefile":"iotcore.png"},{"title":"iotdevicedefender","arg":"https://console.aws.amazon.com/devicedefender/home","subtitle":"IoT Device Defender - Connect Devices to the Cloud","imagefile":"iotdevicedefender.png"},{"title":"iotdevicemanagement","arg":"https://console.aws.amazon.com/iotdm/home","subtitle":"IoT Device Management - Securely Manage Fleets as Small as One Device, or as Broad as Millions of Devices","imagefile":"iotdevicemanagement.png"},{"title":"iotevents","arg":"https://console.aws.amazon.com/iotevents/home","subtitle":"IoT Events - Monitor device fleets for changes and trigger alerts to respond","imagefile":"iotevents.png"},{"title":"iotgreengrass","arg":"https://console.aws.amazon.com/iotgreengrass/home","subtitle":"IoT Greengrass - Deploy and run code on your devices","imagefile":"iotgreengrass.png"},{"title":"iotsitewise","arg":"https://console.aws.amazon.com/iotsitewise/home","subtitle":"IoT SiteWise - Data driven decisions in Industrial operations","imagefile":"iotsitewise.png"},{"title":"iotthingsgraph","arg":"https://console.aws.amazon.com/thingsgraph/home","subtitle":"IoT Things Graph - Easily connect devices and web services to build IoT applications","imagefile":"iotthingsgraph.png"},{"title":"msk","arg":"https://console.aws.amazon.com/msk/home","subtitle":"MSK - Fully managed, highly available, and secure service for Apache Kafka","imagefile":"msk.png"},{"title":"kms","arg":"https://console.aws.amazon.com/kms/home","subtitle":"Key Management Service - Securely Generate and Manage AWS Encryption Keys","imagefile":"kms.png"},{"title":"kinesis","arg":"https://console.aws.amazon.com/kinesis/home","subtitle":"Kinesis - Work with Real-Time Streaming Data","imagefile":"kinesis.png"},{"title":"lambda","arg":"https://console.aws.amazon.com/lambda/home","subtitle":"Lambda - Run Code without Thinking about Servers","imagefile":"lambda.png"},{"title":"lex","arg":"https://console.aws.amazon.com/lex/home","subtitle":"Lex - Build Voice and Text Chatbots","imagefile":"lex.png"},{"title":"licensemanager","arg":"https://console.aws.amazon.com/license-manager/home","subtitle":"License Manager - Set rules to manage, discover, and report third-party license usage proactively","imagefile":"licensemanager.png"},{"title":"lightsail","arg":"https://lightsail.aws.amazon.com/ls/webapp/home","subtitle":"Lightsail - Launch and Manage Virtual Private Servers","imagefile":"lightsail.png"},{"title":"macie","arg":"https://us-east-1.redirection.macie.aws.amazon.com/","subtitle":"Macie - Amazon Macie classifies and secures your business-critical content.","imagefile":"macie.png"},{"title":"managedservices","arg":"https://console.aws.amazon.com/managedservices/home","subtitle":"Managed Services - IT operations management for AWS","imagefile":"managedservices.png"},{"title":"marketplace","arg":"https://console.aws.amazon.com/marketplace/home","subtitle":"Marketplace Subscriptions - Digital catalog where you can find, buy, and deploy software","imagefile":"marketplace.png"},{"title":"mediaconnect","arg":"https://console.aws.amazon.com/mediaconnect/home","subtitle":"MediaConnect - Reliable, secure, and flexible transport for live video","imagefile":"mediaconnect.png"},{"title":"mediaconvert","arg":"https://console.aws.amazon.com/mediaconvert/home","subtitle":"MediaConvert - Convert file-based content for broadcast and multiscreen delivery","imagefile":"mediaconvert.png"},{"title":"medialive","arg":"https://console.aws.amazon.com/medialive/home","subtitle":"MediaLive - Convert video inputs into live outputs for broadcast and streaming delivery","imagefile":"medialive.png"},{"title":"mediapackage","arg":"https://console.aws.amazon.com/mediapackage/home","subtitle":"MediaPackage - Deliver video to many devices using just-in-time format conversion","imagefile":"mediapackage.png"},{"title":"mediastore","arg":"https://console.aws.amazon.com/mediastore/home","subtitle":"MediaStore - Store and deliver video assets for live or on-demand media workflows","imagefile":"mediastore.png"},{"title":"mediatailor","arg":"https://console.aws.amazon.com/mediatailor/home","subtitle":"MediaTailor - Personalize and monetize multiscreen content with server-side ad insertion","imagefile":"mediatailor.png"},{"title":"migrationhub","arg":"https://console.aws.amazon.com/migrationhub/home","subtitle":"Migration Hub - Simplify and accelerate the migration of your data centers to AWS","imagefile":"migrationhub.png"},{"title":"mobilehub","arg":"https://console.aws.amazon.com/mobilehub/home","subtitle":"Mobile Hub - Build, Test, and Monitor Mobile Apps","imagefile":"mobilehub.png"},{"title":"mq","arg":"https://console.aws.amazon.com/amazon-mq/home","subtitle":"MQ - Managed message broker service for Apache ActiveMQ","imagefile":"mq.png"},{"title":"neptune","arg":"https://console.aws.amazon.com/neptune/home","subtitle":"Neptune - Fast, reliable graph database built for the cloud","imagefile":"neptune.png"},{"title":"opsworks","arg":"https://console.aws.amazon.com/opsworks/home","subtitle":"OpsWorks - Configuration Management with Chef and Puppet","imagefile":"opsworks.png"},{"title":"organizations","arg":"https://console.aws.amazon.com/organizations/home","subtitle":"Organizations - Policy-based management for multiple AWS accounts.","imagefile":"organizations.png"},{"title":"personalize","arg":"https://console.aws.amazon.com/personalize/home","subtitle":"Personalize - easily add real-time recommendations to your apps","imagefile":"personalize.png"},{"title":"pinpoint","arg":"https://console.aws.amazon.com/pinpoint/home","subtitle":"Pinpoint - Engage Users via Email, SMS, Push & Analytics","imagefile":"pinpoint.png"},{"title":"polly","arg":"https://console.aws.amazon.com/polly/home","subtitle":"Polly - Turn Text into Lifelike Speech","imagefile":"polly.png"},{"title":"quicksight","arg":"https://quicksight.aws.amazon.com/","subtitle":"QuickSight - Fast, easy to use business analytics","imagefile":"quicksight.png"},{"title":"rds","arg":"https://console.aws.amazon.com/rds/home","subtitle":"RDS - Managed Relational Database Service","imagefile":"rds.png"},{"title":"redshift","arg":"https://console.aws.amazon.com/redshift/home","subtitle":"Redshift - Fast, Simple, Cost-Effective Data Warehousing","imagefile":"redshift.png"},{"title":"rekognition","arg":"https://console.aws.amazon.com/rekognition/home","subtitle":"Rekognition - Search and Analyze Images","imagefile":"rekognition.png"},{"title":"ram","arg":"https://console.aws.amazon.com/ram/home","subtitle":"Resource Access Manager - Share AWS resources with other accounts or AWS Organizations","imagefile":"ram.png"},{"title":"robomaker","arg":"https://console.aws.amazon.com/robomaker/home","subtitle":"RoboMaker - Develop, test, and deploy intelligent robotics applications","imagefile":"robomaker.png"},{"title":"route53","arg":"https://console.aws.amazon.com/route53/home","subtitle":"Route 53 - Scalable DNS and Domain Name Registration","imagefile":"route53.png"},{"title":"s3","arg":"https://console.aws.amazon.com/s3/home","subtitle":"S3 - Scalable Storage in the Cloud","imagefile":"s3.png"},{"title":"sagemaker","arg":"https://console.aws.amazon.com/sagemaker/home","subtitle":"SageMaker - Build, Train, and Deploy Machine Learning Models","imagefile":"sagemaker.png"},{"title":"secretsmanager","arg":"https://console.aws.amazon.com/secretsmanager/home","subtitle":"Secrets Manager - Easily rotate, manage, and retrieve secrets throughout their lifecycle","imagefile":"secretsmanager.png"},{"title":"securityhub","arg":"https://console.aws.amazon.com/securityhub/home","subtitle":"Security Hub - AWS’s security and compliance center","imagefile":"securityhub.png"},{"title":"serverlessrepo","arg":"https://console.aws.amazon.com/serverlessrepo/home","subtitle":"Serverless Application Repository - Assemble, deploy, and share serverless applications within teams or publicly","imagefile":"serverlessrepo.png"},{"title":"servermigrationservice","arg":"https://console.aws.amazon.com/servermigration/home","subtitle":"Server Migration Service - Migrate on-premises servers to AWS","imagefile":"servermigrationservice.png"},{"title":"servicecatalog","arg":"https://console.aws.amazon.com/servicecatalog/home","subtitle":"Service Catalog - allows organizations to manage approved catalogs of IT resources and make them available to employees via a personalized portal.","imagefile":"servicecatalog.png"},{"title":"ses","arg":"https://console.aws.amazon.com/ses/home","subtitle":"Simple Email Service - Email Sending and Receiving Service","imagefile":"ses.png"},{"title":"swf","arg":"https://console.aws.amazon.com/swf/home","subtitle":"SWF - Workflow Service for Coordinating Application Components","imagefile":"swf.png"},{"title":"transfer","arg":"https://console.aws.amazon.com/transfer/home","subtitle":"Transfer for SFTP - Fully-managed SFTP service for Amazon S3","imagefile":"transfer.png"},{"title":"shield","arg":"https://console.aws.amazon.com/shield/home","subtitle":"WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic","imagefile":"shield.png"},{"title":"singlesignon","arg":"https://console.aws.amazon.com/singlesignon/home","subtitle":"Single Sign-On - Manage Single Sign-On (SSO) Access to AWS Accounts and Business Applications","imagefile":"singlesignon.png"},{"title":"snowball","arg":"https://console.aws.amazon.com/snowball/home","subtitle":"Snowball - Large Scale Data Transport","imagefile":"snowball.png"},{"title":"sns","arg":"https://console.aws.amazon.com/sns/home","subtitle":"Simple Notification Service - SNS Pub/Sub, Mobile Push and SMS","imagefile":"sns.png"},{"title":"sqs","arg":"https://console.aws.amazon.com/sqs/home","subtitle":"Simple Queue Service - SQS Managed Message Queues","imagefile":"sqs.png"},{"title":"stepfunctions","arg":"https://console.aws.amazon.com/states/home","subtitle":"Step Functions - Coordinate Distributed Applications","imagefile":"stepfunctions.png"},{"title":"storagegateway","arg":"https://console.aws.amazon.com/storagegateway/home","subtitle":"Storage Gateway - Hybrid Storage Integration","imagefile":"storagegateway.png"},{"title":"sumerian","arg":"https://console.aws.amazon.com/sumerian/home","subtitle":"Sumerian - Build VR, AR, and 3D applications","imagefile":"sumerian.png"},{"title":"systemsmanager","arg":"https://console.aws.amazon.com/systems-manager/home","subtitle":"Systems Manager - a Central Place to View and Manage AWS Resources","imagefile":"systemsmanager.png"},{"title":"support","arg":"https://console.aws.amazon.com/support/home","subtitle":"Support - Support the success and operational health of your AWS solutions","imagefile":"support.png"},{"title":"transcribe","arg":"https://console.aws.amazon.com/transcribe/home","subtitle":"Transcribe - Powerful Speech Recognition","imagefile":"transcribe.png"},{"title":"translate","arg":"https://console.aws.amazon.com/translate/home","subtitle":"Translate - Translate Text in Real-time","imagefile":"translate.png"},{"title":"trustedadvisor","arg":"https://console.aws.amazon.com/trustedadvisor/home","subtitle":"Trusted Advisor - Optimize Performance and Security","imagefile":"trustedadvisor.png"},{"title":"vpc","arg":"https://console.aws.amazon.com/vpc/home","subtitle":"VPC - Isolated Cloud Resources","imagefile":"vpc.png"},{"title":"waf","arg":"https://console.aws.amazon.com/wafv2/home","subtitle":"WAF & Shield - Protects Against DDoS Attacks and Malicious Web Traffic","imagefile":"waf.png"},{"title":"wellarchitectedtool","arg":"https://console.aws.amazon.com/wellarchitected/home","subtitle":"Well-Architected Tool - learn best practices, measure, and improve your workloads","imagefile":"wellarchitectedtool.png"},{"title":"worklink","arg":"https://console.aws.amazon.com/worklink/home","subtitle":"WorkLink - Enable secure mobile access to internal websites and web apps","imagefile":"worklink.png"},{"title":"workmail","arg":"https://console.aws.amazon.com/workmail/home","subtitle":"WorkMail - Secure Email and Calendaring Service","imagefile":"workmail.png"},{"title":"workspaces","arg":"https://console.aws.amazon.com/workspaces/home","subtitle":"WorkSpaces - Desktops in the Cloud","imagefile":"workspaces.png"},{"title":"xray","arg":"https://console.aws.amazon.com/xray/home","subtitle":"X-Ray - Analyze and Debug Your Applications","imagefile":"xray.png"},{"title":"appmesh","arg":"https://console.aws.amazon.com/appmesh/home","subtitle":"Easily monitor and control microservices","imagefile":"appmesh.png"},{"title":"augmentedai","arg":"https://console.aws.amazon.com/a2i/home","subtitle":"Easy implement human review of machine learning predictions","imagefile":"augmentedai.png"},{"title":"bracket","arg":"https://pages.awscloud.com/Amazon-Braket-Preview.html","subtitle":"Service for exploring, evaluating, and experimenting with quantum computing","imagefile":"bracket.png"},{"title":"mcs","arg":"https://console.aws.amazon.com/mcs/home","subtitle":"Serverless Cassandra-compatible database","imagefile":"mcs.png"},{"title":"codeguru","arg":"https://console.aws.amazon.com/codeguru/home","subtitle":"Intelligent recommendations for building and running modern applications","imagefile":"codeguru.png"},{"title":"computeoptimizer","arg":"https://console.aws.amazon.com/compute-optimizer/home","subtitle":"Recommend optimal AWS Compute resources for your workloads","imagefile":"computeoptimizer.png"},{"title":"deepracer","arg":"https://console.aws.amazon.com/deepracer/home","subtitle":"Fully autonomous 1/18th scale race car, driven by machine learning","imagefile":"deepracer.png"},{"title":"detective","arg":"https://console.aws.amazon.com/detective/home","subtitle":"Investigate and analyse possible security issues","imagefile":"detective.png"},{"title":"ec2imagebuilder","arg":"A managed service to automate build, customize and deploy OS images","subtitle":"https://console.aws.amazon.com/imagebuilder/home","imagefile":"ec2imagebuilder.png"},{"title":"frauddetector","arg":"https://console.aws.amazon.com/frauddetector/home","subtitle":"Detect more online fraud faster with machine learning","imagefile":"frauddetector.png"},{"title":"kendra","arg":"https://console.aws.amazon.com/kendra/home","subtitle":"Highly accurate enterprise search powered by machine learning","imagefile":"kendra.png"},{"title":"qldb","arg":"https://console.aws.amazon.com/qldb/home","subtitle":"Fully managed ledger database","imagefile":"qldb.png"},{"title":"outpost","arg":"https://console.aws.amazon.com/outposts/home","subtitle":"Run AWS Services On Premises","imagefile":"outpost.png"},{"title":"iq","arg":"https://iq.aws.amazon.com/","subtitle":"Complete projects faster with help from third-party AWS Certified experts","imagefile":"iq.png"},{"title":"chatbot","arg":"https://console.aws.amazon.com/chatbot/home","subtitle":"ChatOps for AWS","imagefile":"chatbot.png"},{"title":"launchwizard","arg":"https://console.aws.amazon.com/launchwizard/home","subtitle":"Size, configure, and deploy third-party applications on AWS","imagefile":"launchwizard.png"}] + escaping + 102 keyword aws + queuedelaycustom + 3 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 runningsubtext + script + ./alfred-aws-console-services-workflow "$1" + scriptargtype + 1 + scriptfile + subtext e.g., cloudformation, ec2, s3 ... title Search for an AWS Service ... + type + 0 withspace type - alfred.workflow.input.listfilter + alfred.workflow.input.scriptfilter + uid + ED4983E7-5D59-45C5-AE7F-5D5570D0B499 + version + 2 + + + config + + browser + + spaces + + url + {query} + utf8 + + + type + alfred.workflow.action.openurl uid - D2034C4B-F6D7-4F43-A9CC-2679EACDC081 + D1D5721F-0D3B-42C3-95D8-8996D9725E0C version 1 @@ -115,25 +133,23 @@ npm install To add entries to the Alfred Workflow, modify [the .yml config file](src/console-services.yml) and then run [this script](src/generate_items.js) from its directory. It will parse the .yml file and add elements in-place to the info.plist file, which Alfred reads. uidata - 07488302-09AE-43E3-A8A7-D7C26317547C + D1D5721F-0D3B-42C3-95D8-8996D9725E0C xpos - 250 + 230 ypos - 50 + 40 - D2034C4B-F6D7-4F43-A9CC-2679EACDC081 + ED4983E7-5D59-45C5-AE7F-5D5570D0B499 xpos - 80 - ypos 50 + ypos + 40 - variablesdontexport - version - 2.8 + 3.x webaddress https://ryankoval.com diff --git a/main.go b/main.go new file mode 100644 index 00000000..aed3b500 --- /dev/null +++ b/main.go @@ -0,0 +1,90 @@ +package main + +import ( + "io/ioutil" + "log" + "strings" + + aw "github.com/deanishe/awgo" + "gopkg.in/yaml.v2" +) + +var wf *aw.Workflow + +func init() { + wf = aw.New() +} + +type AwsService struct { + Id string `yaml:"id"` + Name string `yaml:"name"` + ShortName string `yaml:"short_name"` + Description string `yaml:"description"` + Url string `yaml:"url"` + ExtraSearchTerms []string `yaml:"extra_search_terms"` +} + +func parseYaml() []AwsService { + awsServices := []AwsService{} + yamlFile, err := ioutil.ReadFile("console-services.yml") + if err != nil { + log.Fatal(err) + } + err = yaml.Unmarshal(yamlFile, &awsServices) + if err != nil { + log.Fatal(err) + } + return awsServices +} + +func run() { + var query string + if args := wf.Args(); len(args) > 0 { + query = args[0] + } + + awsServices := parseYaml() + for _, awsService := range awsServices { + var title string + var match string + if awsService.ShortName != "" { + title = awsService.ShortName + " - " + awsService.Name + match = awsService.ShortName + } else { + title = awsService.Name + match = title + } + + if len(awsService.ExtraSearchTerms) > 0 { + match += " " + strings.Join(awsService.ExtraSearchTerms, " ") + } + + item := wf.NewItem(title). + UID(awsService.Id). + Arg(awsService.Url). + Subtitle(awsService.Description). + Match(match). + Valid(true) + + icon := &aw.Icon{Value: "images/" + awsService.Id + ".png"} + item.Icon(icon) + } + + if query != "" { + res := wf.Filter(query) + + log.Printf("%d results match %q", len(res), query) + + for i, r := range res { + log.Printf("%02d. score=%0.1f sortkey=%s", i+1, r.Score, wf.Feedback.Keywords(i)) + } + } + + wf.WarnEmpty("No matching services found", "Try a different query?") + + wf.SendFeedback() +} + +func main() { + wf.Run(run) +} diff --git a/release_tools/package.sh b/release_tools/package.sh index e00a0ecb..200fa003 100755 --- a/release_tools/package.sh +++ b/release_tools/package.sh @@ -7,11 +7,8 @@ echo -e "Current version: $CURRENT_VERSION\nInput new version: " read -r VERSION VERSION="v${VERSION//v/}" -generate_info_plist() { - cd src - npm install - ./generate_items.js - cd - +install_package() { + go build } bump_version_and_tag() { @@ -27,7 +24,7 @@ package_release() { local tmpdir tmpdir=$(mktemp -d) echo "Using tmp dir $tmpdir to stage release files ..." - cp -R "List Filter Images" icon.png info.plist LICENSE README.md "$tmpdir/" + cp -R images alfred-aws-console-services-workflow console-services.yml icon.png info.plist LICENSE README.md "$tmpdir/" ditto -ck "$tmpdir" "AWS Console Services ${VERSION}.alfredworkflow" } @@ -36,7 +33,7 @@ open_github() { open "https://github.com/rkoval/alfred-aws-console-services-workflow/releases/new?tag=${VERSION}&title=${VERSION}&body=Fill out the release" } -generate_info_plist +install_package bump_version_and_tag package_release open_github \ No newline at end of file diff --git a/src/generate_items.js b/src/generate_items.js deleted file mode 100755 index 808ff696..00000000 --- a/src/generate_items.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node - -YAML = require('yamljs'); -const consoleServices = YAML.load('console-services.yml'); -const listItems = generate(consoleServices); -injectIntoXml(listItems); - -function generate(consoleServices) { - return consoleServices.map(({command, description, icon, url}) => { - console.log(command); - - const consoleService = { - title: command, - arg: url, - subtitle: description, - imagefile: icon || `${command}.png`, - }; - - return consoleService; - }); -} - -function injectIntoXml(alfredProjects) { - const plist = require('plist'); - const fs = require('fs-extra'); - const path = require('path'); - - fs.copySync(path.resolve(`${__dirname}/../info.plist`), `${__dirname}/../info.plist.generatebackup`); - const file = fs.readFileSync(`${__dirname}/../info.plist.generatebackup`, 'utf-8'); - const plistJson = plist.parse(file); - plistJson.objects[1].config.items = JSON.stringify(alfredProjects); - fixedPlistJson = fixPlistLibraryNullKey(plistJson); - const updatedPlist = plist.build(fixedPlistJson) - fs.writeFileSync(`${__dirname}/../info.plist`, updatedPlist); -} - -function fixPlistLibraryNullKey(plistJson) { - const traverse = require('traverse'); - traverse(plistJson).forEach(function(node) { - if (node === null) { - this.update(''); - } - }) - return plistJson; -} diff --git a/src/package-lock.json b/src/package-lock.json deleted file mode 100644 index 3cda8e25..00000000 --- a/src/package-lock.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "name": "aws-console-services", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", - "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" - }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" - }, - "yamljs": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.2.10.tgz", - "integrity": "sha1-SBzHwlynOvWfWR8MluPOVsdXpA8=", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - } - } - } -} diff --git a/src/package.json b/src/package.json deleted file mode 100644 index 64efab73..00000000 --- a/src/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "aws-console-services", - "version": "0.0.1", - "description": "Very simple workflow to quickly open up AWS Console Services in your browser", - "main": "generate_items.js", - "scripts": { - "generate": "./generate_items.js" - }, - "author": "Ryan Koval ", - "license": "MIT", - "dependencies": { - "fs-extra": "^1.0.0", - "plist": "^2.1.0", - "traverse": "^0.6.6", - "yamljs": "^0.2.10" - } -} diff --git a/src/update-script.js b/src/update-script.js deleted file mode 100644 index 52af8e8a..00000000 --- a/src/update-script.js +++ /dev/null @@ -1,26 +0,0 @@ -// this is a hacked-together script that will pluck out service links and their descriptions to JSON -// for later adding to the csv -// -// to use it, run it on the AWS homepage dashboard -var texts = $('.servicesContainer').find('a').find('.serviceName, .serviceCaption').map((a, b) => { - return { - text: b.textContent, - href: b.parentElement.href - } -}); -var outputs = [] -var string; -for (var i = 0; i < texts.length; i++) { - var obj = texts[i]; - if (i % 2 === 0) { - string = obj.text; - } else { - var {text, href} = obj; - var regex = /\.com\/(.*?)\//g; - var urlKey = regex.exec(href)[1]; - var formattedHref = `https://console.aws.amazon.com/${urlKey}/home` - var output = `"${urlKey}","${string} - ${text}","${formattedHref}"`; - outputs.push(output); - } -} -JSON.stringify(outputs) diff --git a/test.sh b/test.sh new file mode 100755 index 00000000..69716f79 --- /dev/null +++ b/test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +root=".alfred" +export alfred_version= +export alfred_workflow_bundleid="com.ryankoval.awsconsoleservices" +export alfred_workflow_data="${root}/data" +export alfred_workflow_cache="${root}/cache" + +go run main.go "$1" \ No newline at end of file