diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:44:42 +0100 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:44:42 +0100 | 
| commit | 39036a553f353ffb70ec4ad25c0789567fb3518d (patch) | |
| tree | 9993c4d2ce0fddc3b014e39f18014d6af54a93bb /syntax | |
| parent | e685e4b431ab017d1aec9f9668fbeeeb6e7113e6 (diff) | |
| download | vim-polyglot-39036a553f353ffb70ec4ad25c0789567fb3518d.tar.gz vim-polyglot-39036a553f353ffb70ec4ad25c0789567fb3518d.zip | |
Add terraform, closes #163
Diffstat (limited to 'syntax')
| -rw-r--r-- | syntax/terraform.vim | 675 | 
1 files changed, 675 insertions, 0 deletions
| diff --git a/syntax/terraform.vim b/syntax/terraform.vim new file mode 100644 index 00000000..0ae9e191 --- /dev/null +++ b/syntax/terraform.vim @@ -0,0 +1,675 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1 +   +" Forked from Larry Gilbert's syntax file +" github.com/L2G/vim-syntax-terraform + +if exists("b:current_syntax") +  finish +endif + +syn case match + +syn keyword terraSection connection output provider variable data terraform +syn keyword terraValueBool true false on off yes no + +""" data +syn keyword terraDataTypeBI +          \ archive_file +          \ atlas_artifact +          \ aws_acm_certificate +          \ aws_alb +          \ aws_alb_listener +          \ aws_ami +          \ aws_availability_zone +          \ aws_availability_zones +          \ aws_billing_service_account +          \ aws_caller_identity +          \ aws_cloudformation_stack +          \ aws_ebs_snapshot +          \ aws_ebs_volume +          \ aws_ecs_container_definition +          \ aws_eip +          \ aws_elb_service_account +          \ aws_iam_account_alias +          \ aws_iam_policy_document +          \ aws_iam_server_certificate +          \ aws_ip_ranges +          \ aws_prefix_list +          \ aws_redshift_service_account +          \ aws_region +          \ aws_route53_zone +          \ aws_route_table +          \ aws_s3_bucket_object +          \ aws_security_group +          \ aws_subnet +          \ aws_vpc +          \ aws_vpc_endpoint_service +          \ aws_vpc_peering_connection +          \ azurerm_client_config +          \ consul_keys +          \ docker_registry_image +          \ external +          \ fastly_ip_ranges +          \ google_iam_policy +          \ newrelic_application +          \ null_data_source +          \ opsgenie_user +          \ pagerduty_user +          \ pagerduty_vendor +          \ scaleway_bootscript +          \ scaleway_image +          \ template_cloudinit_config +          \ template_file +          \ terraform_remote_state +""" end data sources + +""" resource +syn keyword terraResourceTypeBI +          \ arukas_container +          \ atlas_artifact +          \ aws_alb +          \ aws_alb_listener +          \ aws_alb_listener_rule +          \ aws_alb_target_group +          \ aws_alb_target_group_attachment +          \ aws_ami +          \ aws_ami_copy +          \ aws_ami_from_instance +          \ aws_ami_launch_permission +          \ aws_api_gateway_account +          \ aws_api_gateway_api_key +          \ aws_api_gateway_authorizer +          \ aws_api_gateway_base_path_mapping +          \ aws_api_gateway_client_certificate +          \ aws_api_gateway_deployment +          \ aws_api_gateway_domain_name +          \ aws_api_gateway_integration +          \ aws_api_gateway_integration_response +          \ aws_api_gateway_method +          \ aws_api_gateway_method_response +          \ aws_api_gateway_model +          \ aws_api_gateway_resource +          \ aws_api_gateway_rest_api +          \ aws_app_cookie_stickiness_policy +          \ aws_appautoscaling_policy +          \ aws_appautoscaling_target +          \ aws_autoscaling_attachment +          \ aws_autoscaling_group +          \ aws_autoscaling_lifecycle_hook +          \ aws_autoscaling_notification +          \ aws_autoscaling_policy +          \ aws_autoscaling_schedule +          \ aws_cloudformation_stack +          \ aws_cloudfront_distribution +          \ aws_cloudfront_origin_access_identity +          \ aws_cloudtrail +          \ aws_cloudwatch_event_rule +          \ aws_cloudwatch_event_target +          \ aws_cloudwatch_log_group +          \ aws_cloudwatch_log_metric_filter +          \ aws_cloudwatch_log_stream +          \ aws_cloudwatch_log_subscription_filter +          \ aws_cloudwatch_metric_alarm +          \ aws_codecommit_repository +          \ aws_codecommit_trigger +          \ aws_codedeploy_app +          \ aws_codedeploy_deployment_config +          \ aws_codedeploy_deployment_group +          \ aws_customer_gateway +          \ aws_db_event_subscription +          \ aws_db_instance +          \ aws_db_option_group +          \ aws_db_parameter_group +          \ aws_db_security_group +          \ aws_db_subnet_group +          \ aws_default_network_acl +          \ aws_default_route_table +          \ aws_default_security_group +          \ aws_directory_service_directory +          \ aws_dynamodb_table +          \ aws_ebs_snapshot +          \ aws_ebs_volume +          \ aws_ecr_repository +          \ aws_ecr_repository_policy +          \ aws_ecs_cluster +          \ aws_ecs_service +          \ aws_ecs_task_definition +          \ aws_efs_file_system +          \ aws_efs_mount_target +          \ aws_eip +          \ aws_eip_association +          \ aws_elastic_beanstalk_application +          \ aws_elastic_beanstalk_configuration_template +          \ aws_elastic_beanstalk_environment +          \ aws_elasticache_cluster +          \ aws_elasticache_parameter_group +          \ aws_elasticache_replication_group +          \ aws_elasticache_security_group +          \ aws_elasticache_subnet_group +          \ aws_elasticsearch_domain +          \ aws_elastictranscoder_pipeline +          \ aws_elastictranscoder_preset +          \ aws_elb +          \ aws_elb_attachment +          \ aws_emr_cluster +          \ aws_emr_instance_group +          \ aws_flow_log +          \ aws_glacier_vault +          \ aws_iam_access_key +          \ aws_iam_account_password_policy +          \ aws_iam_group +          \ aws_iam_group_membership +          \ aws_iam_group_policy +          \ aws_iam_group_policy_attachment +          \ aws_iam_instance_profile +          \ aws_iam_policy +          \ aws_iam_policy_attachment +          \ aws_iam_role +          \ aws_iam_role_policy +          \ aws_iam_role_policy_attachment +          \ aws_iam_saml_provider +          \ aws_iam_server_certificate +          \ aws_iam_user +          \ aws_iam_user_login_profile +          \ aws_iam_user_policy +          \ aws_iam_user_policy_attachment +          \ aws_iam_user_ssh_key +          \ aws_instance +          \ aws_internet_gateway +          \ aws_key_pair +          \ aws_kinesis_firehose_delivery_stream +          \ aws_kinesis_stream +          \ aws_kms_alias +          \ aws_kms_key +          \ aws_lambda_alias +          \ aws_lambda_event_source_mapping +          \ aws_lambda_function +          \ aws_lambda_permission +          \ aws_launch_configuration +          \ aws_lb_cookie_stickiness_policy +          \ aws_lb_ssl_negotiation_policy +          \ aws_lightsail_domain +          \ aws_lightsail_instance +          \ aws_lightsail_key_pair +          \ aws_load_balancer_backend_server_policy +          \ aws_load_balancer_listener_policy +          \ aws_load_balancer_policy +          \ aws_main_route_table_association +          \ aws_nat_gateway +          \ aws_network_acl +          \ aws_network_acl_rule +          \ aws_network_interface +          \ aws_opsworks_application +          \ aws_opsworks_custom_layer +          \ aws_opsworks_ganglia_layer +          \ aws_opsworks_haproxy_layer +          \ aws_opsworks_instance +          \ aws_opsworks_java_app_layer +          \ aws_opsworks_memcached_layer +          \ aws_opsworks_mysql_layer +          \ aws_opsworks_nodejs_app_layer +          \ aws_opsworks_permission +          \ aws_opsworks_php_app_layer +          \ aws_opsworks_rails_app_layer +          \ aws_opsworks_rds_db_instance +          \ aws_opsworks_stack +          \ aws_opsworks_static_web_layer +          \ aws_opsworks_user_profile +          \ aws_placement_group +          \ aws_proxy_protocol_policy +          \ aws_rds_cluster +          \ aws_rds_cluster_instance +          \ aws_rds_cluster_parameter_group +          \ aws_redshift_cluster +          \ aws_redshift_parameter_group +          \ aws_redshift_security_group +          \ aws_redshift_subnet_group +          \ aws_route +          \ aws_route53_delegation_set +          \ aws_route53_health_check +          \ aws_route53_record +          \ aws_route53_zone +          \ aws_route53_zone_association +          \ aws_route_table +          \ aws_route_table_association +          \ aws_s3_bucket +          \ aws_s3_bucket_notification +          \ aws_s3_bucket_object +          \ aws_s3_bucket_policy +          \ aws_security_group +          \ aws_security_group_rule +          \ aws_ses_active_receipt_rule_set +          \ aws_ses_configuration_set +          \ aws_ses_event_destination +          \ aws_ses_receipt_filter +          \ aws_ses_receipt_rule +          \ aws_ses_receipt_rule_set +          \ aws_simpledb_domain +          \ aws_snapshot_create_volume_permission +          \ aws_sns_topic +          \ aws_sns_topic_policy +          \ aws_sns_topic_subscription +          \ aws_spot_datafeed_subscription +          \ aws_spot_fleet_request +          \ aws_spot_instance_request +          \ aws_sqs_queue +          \ aws_sqs_queue_policy +          \ aws_ssm_activation +          \ aws_ssm_association +          \ aws_ssm_document +          \ aws_subnet +          \ aws_volume_attachment +          \ aws_vpc +          \ aws_vpc_dhcp_options +          \ aws_vpc_dhcp_options_association +          \ aws_vpc_endpoint +          \ aws_vpc_endpoint_route_table_association +          \ aws_vpc_peering_connection +          \ aws_vpn_connection +          \ aws_vpn_connection_route +          \ aws_vpn_gateway +          \ aws_vpn_gateway_attachment +          \ aws_waf_byte_match_set +          \ aws_waf_ipset +          \ aws_waf_rule +          \ aws_waf_size_constraint_set +          \ aws_waf_sql_injection_match_set +          \ aws_waf_web_acl +          \ aws_waf_xss_match_set +          \ azure_affinity_group +          \ azure_data_disk +          \ azure_dns_server +          \ azure_hosted_service +          \ azure_instance +          \ azure_local_network_connection +          \ azure_security_group +          \ azure_security_group_rule +          \ azure_sql_database_server +          \ azure_sql_database_server_firewall_rule +          \ azure_sql_database_service +          \ azure_storage_blob +          \ azure_storage_container +          \ azure_storage_queue +          \ azure_storage_service +          \ azure_virtual_network +          \ azurerm_availability_set +          \ azurerm_cdn_endpoint +          \ azurerm_cdn_profile +          \ azurerm_container_registry +          \ azurerm_dns_a_record +          \ azurerm_dns_aaaa_record +          \ azurerm_dns_cname_record +          \ azurerm_dns_mx_record +          \ azurerm_dns_ns_record +          \ azurerm_dns_srv_record +          \ azurerm_dns_txt_record +          \ azurerm_dns_zone +          \ azurerm_eventhub +          \ azurerm_eventhub_authorization_rule +          \ azurerm_eventhub_consumer_group +          \ azurerm_eventhub_namespace +          \ azurerm_key_vault +          \ azurerm_lb +          \ azurerm_lb_backend_address_pool +          \ azurerm_lb_nat_pool +          \ azurerm_lb_nat_rule +          \ azurerm_lb_probe +          \ azurerm_lb_rule +          \ azurerm_local_network_gateway +          \ azurerm_network_interface +          \ azurerm_network_security_group +          \ azurerm_network_security_rule +          \ azurerm_public_ip +          \ azurerm_redis_cache +          \ azurerm_resource_group +          \ azurerm_route +          \ azurerm_route_table +          \ azurerm_search_service +          \ azurerm_servicebus_namespace +          \ azurerm_servicebus_subscription +          \ azurerm_servicebus_topic +          \ azurerm_sql_database +          \ azurerm_sql_firewall_rule +          \ azurerm_sql_server +          \ azurerm_storage_account +          \ azurerm_storage_blob +          \ azurerm_storage_container +          \ azurerm_storage_queue +          \ azurerm_storage_share +          \ azurerm_storage_table +          \ azurerm_subnet +          \ azurerm_template_deployment +          \ azurerm_traffic_manager_endpoint +          \ azurerm_traffic_manager_profile +          \ azurerm_virtual_machine +          \ azurerm_virtual_machine_extension +          \ azurerm_virtual_machine_scale_set +          \ azurerm_virtual_network +          \ azurerm_virtual_network_peering +          \ bitbucket_default_reviewers +          \ bitbucket_hook +          \ bitbucket_repository +          \ chef_acl +          \ chef_client +          \ chef_cookbook +          \ chef_data_bag +          \ chef_data_bag_item +          \ chef_environment +          \ chef_node +          \ chef_role +          \ clc_group +          \ clc_load_balancer +          \ clc_load_balancer_pool +          \ clc_public_ip +          \ clc_server +          \ cloudflare_record +          \ cloudstack_affinity_group +          \ cloudstack_disk +          \ cloudstack_egress_firewall +          \ cloudstack_firewall +          \ cloudstack_instance +          \ cloudstack_ipaddress +          \ cloudstack_loadbalancer_rule +          \ cloudstack_network +          \ cloudstack_network_acl +          \ cloudstack_network_acl_rule +          \ cloudstack_nic +          \ cloudstack_port_forward +          \ cloudstack_private_gateway +          \ cloudstack_secondary_ipaddress +          \ cloudstack_security_group +          \ cloudstack_security_group_rule +          \ cloudstack_ssh_keypair +          \ cloudstack_static_nat +          \ cloudstack_static_route +          \ cloudstack_template +          \ cloudstack_vpc +          \ cloudstack_vpn_connection +          \ cloudstack_vpn_customer_gateway +          \ cloudstack_vpn_gateway +          \ cobbler_distro +          \ cobbler_kickstart_file +          \ cobbler_profile +          \ cobbler_snippet +          \ cobbler_system +          \ consul_agent_service +          \ consul_catalog_entry +          \ consul_key_prefix +          \ consul_keys +          \ consul_node +          \ consul_prepared_query +          \ consul_service +          \ datadog_monitor +          \ datadog_timeboard +          \ digitalocean_domain +          \ digitalocean_droplet +          \ digitalocean_floating_ip +          \ digitalocean_record +          \ digitalocean_ssh_key +          \ digitalocean_tag +          \ digitalocean_volume +          \ dme_record +          \ dnsimple_record +          \ docker_container +          \ docker_image +          \ docker_network +          \ docker_volume +          \ dyn_record +          \ fastly_service_v1 +          \ github_issue_label +          \ github_membership +          \ github_repository +          \ github_repository_collaborator +          \ github_team +          \ github_team_membership +          \ github_team_repository +          \ google_compute_address +          \ google_compute_autoscaler +          \ google_compute_backend_service +          \ google_compute_disk +          \ google_compute_firewall +          \ google_compute_forwarding_rule +          \ google_compute_global_address +          \ google_compute_global_forwarding_rule +          \ google_compute_health_check +          \ google_compute_http_health_check +          \ google_compute_https_health_check +          \ google_compute_image +          \ google_compute_instance +          \ google_compute_instance_group +          \ google_compute_instance_group_manager +          \ google_compute_instance_template +          \ google_compute_network +          \ google_compute_project_metadata +          \ google_compute_region_backend_service +          \ google_compute_route +          \ google_compute_ssl_certificate +          \ google_compute_subnetwork +          \ google_compute_target_http_proxy +          \ google_compute_target_https_proxy +          \ google_compute_target_pool +          \ google_compute_url_map +          \ google_compute_vpn_gateway +          \ google_compute_vpn_tunnel +          \ google_container_cluster +          \ google_dns_managed_zone +          \ google_dns_record_set +          \ google_project +          \ google_pubsub_subscription +          \ google_pubsub_topic +          \ google_service_account +          \ google_sql_database +          \ google_sql_database_instance +          \ google_sql_user +          \ google_storage_bucket +          \ google_storage_bucket_acl +          \ google_storage_bucket_object +          \ google_storage_object_acl +          \ heroku_addon +          \ heroku_app +          \ heroku_cert +          \ heroku_domain +          \ heroku_drain +          \ icinga2_checkcommand +          \ icinga2_host +          \ icinga2_hostgroup +          \ icinga2_service +          \ ignition_config +          \ ignition_disk +          \ ignition_file +          \ ignition_filesystem +          \ ignition_group +          \ ignition_networkd_unit +          \ ignition_raid +          \ ignition_systemd_unit +          \ ignition_user +          \ influxdb_continuous_query +          \ influxdb_database +          \ influxdb_user +          \ librato_alert +          \ librato_service +          \ librato_space +          \ librato_space_chart +          \ logentries_log +          \ logentries_logset +          \ mailgun_domain +          \ mysql_database +          \ mysql_grant +          \ mysql_user +          \ newrelic_alert_channel +          \ newrelic_alert_condition +          \ newrelic_alert_policy +          \ newrelic_alert_policy_channel +          \ nomad_job +          \ null_resource +          \ openstack_blockstorage_volume_attach_v2 +          \ openstack_blockstorage_volume_v1 +          \ openstack_blockstorage_volume_v2 +          \ openstack_compute_floatingip_v2 +          \ openstack_compute_instance_v2 +          \ openstack_compute_keypair_v2 +          \ openstack_compute_secgroup_v2 +          \ openstack_compute_servergroup_v2 +          \ openstack_compute_volume_attach_v2 +          \ openstack_fw_firewall_v1 +          \ openstack_fw_policy_v1 +          \ openstack_fw_rule_v1 +          \ openstack_lb_listener_v2 +          \ openstack_lb_loadbalancer_v2 +          \ openstack_lb_member_v1 +          \ openstack_lb_member_v2 +          \ openstack_lb_monitor_v1 +          \ openstack_lb_monitor_v2 +          \ openstack_lb_pool_v1 +          \ openstack_lb_pool_v2 +          \ openstack_lb_vip_v1 +          \ openstack_networking_floatingip_v2 +          \ openstack_networking_network_v2 +          \ openstack_networking_port_v2 +          \ openstack_networking_router_interface_v2 +          \ openstack_networking_router_route_v2 +          \ openstack_networking_router_v2 +          \ openstack_networking_secgroup_rule_v2 +          \ openstack_networking_secgroup_v2 +          \ openstack_networking_subnet_v2 +          \ openstack_objectstorage_container_v1 +          \ opsgenie_team +          \ opsgenie_user +          \ packet_device +          \ packet_project +          \ packet_ssh_key +          \ packet_volume +          \ pagerduty_escalation_policy +          \ pagerduty_schedule +          \ pagerduty_service +          \ pagerduty_service_integration +          \ pagerduty_team +          \ pagerduty_user +          \ postgresql_database +          \ postgresql_extension +          \ postgresql_role +          \ postgresql_schema +          \ powerdns_record +          \ rabbitmq_binding +          \ rabbitmq_exchange +          \ rabbitmq_permissions +          \ rabbitmq_policy +          \ rabbitmq_queue +          \ rabbitmq_user +          \ rabbitmq_vhost +          \ rancher_environment +          \ rancher_registration_token +          \ rancher_registry +          \ rancher_registry_credential +          \ rancher_stack +          \ random_id +          \ random_shuffle +          \ rundeck_job +          \ rundeck_private_key +          \ rundeck_project +          \ rundeck_public_key +          \ scaleway_ip +          \ scaleway_security_group +          \ scaleway_security_group_rule +          \ scaleway_server +          \ scaleway_volume +          \ scaleway_volume_attachment +          \ softlayer_ssh_key +          \ softlayer_virtual_guest +          \ statuscake_test +          \ tls_cert_request +          \ tls_locally_signed_cert +          \ tls_private_key +          \ tls_self_signed_cert +          \ triton_fabric +          \ triton_firewall_rule +          \ triton_key +          \ triton_machine +          \ triton_vlan +          \ ultradns_dirpool +          \ ultradns_probe_http +          \ ultradns_probe_ping +          \ ultradns_record +          \ ultradns_tcpool +          \ vcd_dnat +          \ vcd_firewall_rules +          \ vcd_network +          \ vcd_snat +          \ vcd_vapp +          \ vsphere_file +          \ vsphere_folder +          \ vsphere_virtual_disk +          \ vsphere_virtual_machine +""" end resources + +syn keyword terraTodo         contained TODO FIXME XXX BUG +syn cluster terraCommentGroup contains=terraTodo +syn region  terraComment      start="/\*" end="\*/" contains=@terraCommentGroup,@Spell +syn region  terraComment      start="#" end="$" contains=@terraCommentGroup,@Spell +syn region  terraComment      start="//" end="$" contains=@terraCommentGroup,@Spell + +syn match  terraResource        /\<resource\>/ nextgroup=terraResourceTypeStr skipwhite +syn region terraResourceTypeStr start=/"/ end=/"/ contains=terraResourceTypeBI +                              \ nextgroup=terraResourceName skipwhite +syn region terraResourceName    start=/"/ end=/"/ +                              \ nextgroup=terraResourceBlock skipwhite + +syn match  terraData        /\<data\>/ nextgroup=terraDataTypeStr skipwhite +syn region terraDataTypeStr start=/"/ end=/"/ contains=terraDataTypeBI +                              \ nextgroup=terraDataName skipwhite +syn region terraDataName    start=/"/ end=/"/ +                              \ nextgroup=terraDataBlock skipwhite + +""" provider +syn match  terraProvider      /\<provider\>/ nextgroup=terraProviderName skipwhite +syn region terraProviderName  start=/"/ end=/"/ nextgroup=terraProviderBlock skipwhite + +""" provisioner +syn match  terraProvisioner     /\<provisioner\>/ nextgroup=terraProvisionerName skipwhite +syn region terraProvisionerName start=/"/ end=/"/ nextgroup=terraProvisionerBlock skipwhite + +""" module +syn match  terraModule     /\<module\>/ nextgroup=terraModuleName skipwhite +syn region terraModuleName start=/"/ end=/"/ nextgroup=terraModuleBlock skipwhite + +""" misc. +syn match terraValueDec      "\<[0-9]\+\([kKmMgG]b\?\)\?\>" +syn match terraValueHexaDec  "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>" +syn match terraBraces        "[{}\[\]]" + +""" skip \" in strings. +""" we may also want to pass \\" into a function to escape quotes. +syn region terraValueString   start=/"/ skip=/\\\+"/ end=/"/ contains=terraStringInterp +syn region terraStringInterp  matchgroup=terraBrackets start=/\${/ end=/}/ contains=terraValueFunction contained +"" TODO match keywords here, not a-z+ +syn region terraValueFunction matchgroup=terraBrackets start=/[a-z]\+(/ end=/)/ contains=terraValueString,terraValueFunction contained + +hi def link terraComment           Comment +hi def link terraTodo              Todo +hi def link terraBrackets          Operator +hi def link terraProvider          Structure +hi def link terraBraces            Delimiter +hi def link terraProviderName      String +hi def link terraResource          Structure +hi def link terraResourceName      String +hi def link terraResourceTypeBI    Tag +hi def link terraResourceTypeStr   String +hi def link terraData              Structure +hi def link terraDataName          String +hi def link terraDataTypeBI        Tag +hi def link terraDataTypeStr       String +hi def link terraSection           Structure +hi def link terraStringInterp      Identifier +hi def link terraValueBool         Boolean +hi def link terraValueDec          Number +hi def link terraValueHexaDec      Number +hi def link terraValueString       String +hi def link terraProvisioner       Structure +hi def link terraProvisionerName   String +hi def link terraModule            Structure +hi def link terraModuleName        String +hi def link terraValueFunction     Identifier + +let b:current_syntax = "terraform" + +endif | 
