mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Improve Terraform (.tf) / HCL (.hcl) syntax highlighting (#3392)
* Add Terraform grammar, and change .tf and .hcl files from using Ruby to Terraform sublime syntax * Expand Terraform sample to demonstrate more language features * Revert terraform sample change * Add terraform sample - Dokku AWS deploy * Updated to latest Terraform * Update terraform string interpolation * Update terraform to latest
This commit is contained in:
		
				
					committed by
					
						 Colin Seymour
						Colin Seymour
					
				
			
			
				
	
			
			
			
						parent
						
							f7fe1fee66
						
					
				
				
					commit
					b66fcb2529
				
			
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -818,3 +818,6 @@ | |||||||
| [submodule "vendor/grammars/language-regexp"] | [submodule "vendor/grammars/language-regexp"] | ||||||
| 	path = vendor/grammars/language-regexp | 	path = vendor/grammars/language-regexp | ||||||
| 	url = https://github.com/Alhadis/language-regexp | 	url = https://github.com/Alhadis/language-regexp | ||||||
|  | [submodule "vendor/grammars/Terraform.tmLanguage"] | ||||||
|  | 	path = vendor/grammars/Terraform.tmLanguage | ||||||
|  | 	url = https://github.com/alexlouden/Terraform.tmLanguage | ||||||
| @@ -130,6 +130,8 @@ vendor/grammars/TLA: | |||||||
| - source.tla | - source.tla | ||||||
| vendor/grammars/TXL: | vendor/grammars/TXL: | ||||||
| - source.txl | - source.txl | ||||||
|  | vendor/grammars/Terraform.tmLanguage: | ||||||
|  | - source.terraform | ||||||
| vendor/grammars/Textmate-Gosu-Bundle: | vendor/grammars/Textmate-Gosu-Bundle: | ||||||
| - source.gosu.2 | - source.gosu.2 | ||||||
| vendor/grammars/UrWeb-Language-Definition: | vendor/grammars/UrWeb-Language-Definition: | ||||||
|   | |||||||
| @@ -1588,7 +1588,7 @@ HCL: | |||||||
|   ace_mode: ruby |   ace_mode: ruby | ||||||
|   codemirror_mode: ruby |   codemirror_mode: ruby | ||||||
|   codemirror_mime_type: text/x-ruby |   codemirror_mime_type: text/x-ruby | ||||||
|   tm_scope: source.ruby |   tm_scope: source.terraform | ||||||
|   language_id: 144 |   language_id: 144 | ||||||
| HLSL: | HLSL: | ||||||
|   type: programming |   type: programming | ||||||
|   | |||||||
							
								
								
									
										135
									
								
								samples/HCL/main.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								samples/HCL/main.tf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,135 @@ | |||||||
|  | resource "aws_security_group" "elb_sec_group" { | ||||||
|  |   description = "Allow traffic from the internet to ELB port 80" | ||||||
|  |   vpc_id = "${var.vpc_id}" | ||||||
|  |  | ||||||
|  |   ingress { | ||||||
|  |       from_port = 80 | ||||||
|  |       to_port = 80 | ||||||
|  |       protocol = "tcp" | ||||||
|  |       cidr_blocks = ["${split(",", var.allowed_cidr_blocks)}"] | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   egress { | ||||||
|  |       from_port = 0 | ||||||
|  |       to_port = 0 | ||||||
|  |       protocol = "-1" | ||||||
|  |       cidr_blocks = ["0.0.0.0/0"] | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_security_group" "dokku_allow_ssh_from_internal" { | ||||||
|  |   description = "Allow git access over ssh from the private subnet" | ||||||
|  |   vpc_id = "${var.vpc_id}" | ||||||
|  |  | ||||||
|  |   ingress { | ||||||
|  |       from_port = 22 | ||||||
|  |       to_port = 22 | ||||||
|  |       protocol = "tcp" | ||||||
|  |       cidr_blocks = ["${var.private_subnet_cidr}"] | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   egress { | ||||||
|  |       from_port = 0 | ||||||
|  |       to_port = 0 | ||||||
|  |       protocol = "-1" | ||||||
|  |       cidr_blocks = ["0.0.0.0/0"] | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_security_group" "allow_from_elb_to_instance" { | ||||||
|  |   description = "Allow traffic from the ELB to the private instance" | ||||||
|  |   vpc_id = "${var.vpc_id}" | ||||||
|  |  | ||||||
|  |   ingress { | ||||||
|  |       security_groups = ["${aws_security_group.elb_sec_group.id}"] | ||||||
|  |       from_port = 80 | ||||||
|  |       to_port = 80 | ||||||
|  |       protocol = "tcp" | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   egress { | ||||||
|  |       from_port = 0 | ||||||
|  |       to_port = 0 | ||||||
|  |       protocol = "-1" | ||||||
|  |       cidr_blocks = ["0.0.0.0/0"] | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_instance" "dokku" { | ||||||
|  |   ami = "ami-47a23a30" | ||||||
|  |   instance_type = "${var.instance_type}" | ||||||
|  |   associate_public_ip_address = false | ||||||
|  |   key_name = "${var.key_name}" | ||||||
|  |   subnet_id = "${var.private_subnet_id}" | ||||||
|  |   vpc_security_group_ids = [ | ||||||
|  |     "${var.bastion_sec_group_id}", | ||||||
|  |     "${aws_security_group.allow_from_elb_to_instance.id}", | ||||||
|  |     "${aws_security_group.dokku_allow_ssh_from_internal.id}" | ||||||
|  |   ] | ||||||
|  |   tags { | ||||||
|  |     Name = "${var.name}" | ||||||
|  |   } | ||||||
|  |   connection { | ||||||
|  |     user = "ubuntu" | ||||||
|  |     private_key = "${var.private_key}" | ||||||
|  |     bastion_host = "${var.bastion_host}" | ||||||
|  |     bastion_port = "${var.bastion_port}" | ||||||
|  |     bastion_user = "${var.bastion_user}" | ||||||
|  |     bastion_private_key = "${var.bastion_private_key}" | ||||||
|  |   } | ||||||
|  |   provisioner "file" { | ||||||
|  |     source = "${path.module}/../scripts/install-dokku.sh" | ||||||
|  |     destination = "/home/ubuntu/install-dokku.sh" | ||||||
|  |   } | ||||||
|  |   provisioner "remote-exec" { | ||||||
|  |     inline = [ | ||||||
|  |       "chmod +x /home/ubuntu/install-dokku.sh", | ||||||
|  |       "HOSTNAME=${var.hostname} /home/ubuntu/install-dokku.sh" | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_elb" "elb_dokku" { | ||||||
|  |   name = "elb-dokku-${var.name}" | ||||||
|  |   subnets = ["${var.public_subnet_id}"] | ||||||
|  |   security_groups = ["${aws_security_group.elb_sec_group.id}"] | ||||||
|  |  | ||||||
|  |   listener { | ||||||
|  |     instance_port = 80 | ||||||
|  |     instance_protocol = "http" | ||||||
|  |     lb_port = 80 | ||||||
|  |     lb_protocol = "http" | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   health_check { | ||||||
|  |     healthy_threshold = 2 | ||||||
|  |     unhealthy_threshold = 2 | ||||||
|  |     timeout = 3 | ||||||
|  |     target = "HTTP:80/" | ||||||
|  |     interval = 30 | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   instances = ["${aws_instance.dokku.id}"] | ||||||
|  |   cross_zone_load_balancing = false | ||||||
|  |   idle_timeout = 400 | ||||||
|  |  | ||||||
|  |   tags { | ||||||
|  |     Name = "elb-dokku-${var.name}" | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_route53_record" "dokku-deploy" { | ||||||
|  |    zone_id = "${var.zone_id}" | ||||||
|  |    name = "deploy.${var.hostname}" | ||||||
|  |    type = "A" | ||||||
|  |    ttl = "300" | ||||||
|  |    records = ["${aws_instance.dokku.private_ip}"] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | resource "aws_route53_record" "dokku-wildcard" { | ||||||
|  |    zone_id = "${var.zone_id}" | ||||||
|  |    name = "*.${var.hostname}" | ||||||
|  |    type = "CNAME" | ||||||
|  |    ttl = "300" | ||||||
|  |    records = ["${aws_elb.elb_dokku.dns_name}"] | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							| @@ -142,7 +142,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting | |||||||
| - **Harbour:** [hernad/atom-language-harbour](https://github.com/hernad/atom-language-harbour) | - **Harbour:** [hernad/atom-language-harbour](https://github.com/hernad/atom-language-harbour) | ||||||
| - **Haskell:** [atom-haskell/language-haskell](https://github.com/atom-haskell/language-haskell) | - **Haskell:** [atom-haskell/language-haskell](https://github.com/atom-haskell/language-haskell) | ||||||
| - **Haxe:** [clemos/haxe-sublime-bundle](https://github.com/clemos/haxe-sublime-bundle) | - **Haxe:** [clemos/haxe-sublime-bundle](https://github.com/clemos/haxe-sublime-bundle) | ||||||
| - **HCL:** [aroben/ruby.tmbundle](https://github.com/aroben/ruby.tmbundle) | - **HCL:** [alexlouden/Terraform.tmLanguage](https://github.com/alexlouden/Terraform.tmLanguage) | ||||||
| - **HTML:** [textmate/html.tmbundle](https://github.com/textmate/html.tmbundle) | - **HTML:** [textmate/html.tmbundle](https://github.com/textmate/html.tmbundle) | ||||||
| - **HTML+Django:** [textmate/python-django.tmbundle](https://github.com/textmate/python-django.tmbundle) | - **HTML+Django:** [textmate/python-django.tmbundle](https://github.com/textmate/python-django.tmbundle) | ||||||
| - **HTML+ECR:** [atom-crystal/language-crystal](https://github.com/atom-crystal/language-crystal) | - **HTML+ECR:** [atom-crystal/language-crystal](https://github.com/atom-crystal/language-crystal) | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/grammars/Terraform.tmLanguage
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/Terraform.tmLanguage
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/grammars/Terraform.tmLanguage added at 93b11ff8ab
									
								
							
							
								
								
									
										26
									
								
								vendor/licenses/grammar/Terraform.tmLanguage.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/licenses/grammar/Terraform.tmLanguage.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | --- | ||||||
|  | type: grammar | ||||||
|  | name: Terraform.tmLanguage | ||||||
|  | license: mit | ||||||
|  | --- | ||||||
|  | MIT License | ||||||
|  |  | ||||||
|  | Copyright (c) 2016 Alex Louden | ||||||
|  |  | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  |  | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  |  | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
		Reference in New Issue
	
	Block a user