mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	* Remove trailing spaces * Setup Bundler in some scripts * Update grammar index * Make prune-grammars script to be callable in a script directory * Prune unused xquery grammar repo source.xq by language-jsoniq is actual tm_scope for XQuery. * Remove xquery submodule git submodule deinit vendor/grammars/xquery/ git rm vendor/grammars/xquery/ * Fix invocation of script/list-grammars This fixes #3339. * Make add-grammars script to be callable in a script directory * Generate samples.json before running list-grammars list-grammars requires linguist.
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env ruby
 | |
| 
 | |
| require 'bundler/setup'
 | |
| require 'yaml'
 | |
| require 'pry'
 | |
| 
 | |
| header = <<-EOF
 | |
| # Defines all Languages known to GitHub.
 | |
| #
 | |
| # type              - Either data, programming, markup, prose, or nil
 | |
| # aliases           - An Array of additional aliases (implicitly
 | |
| #                     includes name.downcase)
 | |
| # ace_mode          - A String name of the Ace Mode used for highlighting whenever
 | |
| #                     a file is edited. This must match one of the filenames in http://git.io/3XO_Cg.
 | |
| #                     Use "text" if a mode does not exist.
 | |
| # codemirror_mode   - A String name of the CodeMirror Mode used for highlighting whenever a file is edited.
 | |
| #                     This must match a mode from https://git.io/vi9Fx
 | |
| # wrap              - Boolean wrap to enable line wrapping (default: false)
 | |
| # extensions        - An Array of associated extensions (the first one is
 | |
| #                     considered the primary extension, the others should be
 | |
| #                     listed alphabetically)
 | |
| # interpreters      - An Array of associated interpreters
 | |
| # searchable        - Boolean flag to enable searching (defaults to true)
 | |
| # search_term       - Deprecated: Some languages may be indexed under a
 | |
| #                     different alias. Avoid defining new exceptions.
 | |
| # language_id       - Integer used as a language-name-independent indexed field so that we can rename
 | |
| #                     languages in Linguist without reindexing all the code on GitHub. Must not be
 | |
| #                     changed for existing languages without the explicit permission of GitHub staff.
 | |
| # color             - CSS hex color to represent the language. Only used if type is "programming" or "prose".
 | |
| # tm_scope          - The TextMate scope that represents this programming
 | |
| #                     language. This should match one of the scopes listed in
 | |
| #                     the grammars.yml file. Use "none" if there is no grammar
 | |
| #                     for this language.
 | |
| # group             - Name of the parent language. Languages in a group are counted
 | |
| #                     in the statistics as the parent language.
 | |
| #
 | |
| # Any additions or modifications (even trivial) should have corresponding
 | |
| # test changes in `test/test_blob.rb`.
 | |
| #
 | |
| # Please keep this list alphabetized. Capitalization comes before lowercase.
 | |
| 
 | |
| EOF
 | |
| require 'digest'
 | |
| 
 | |
| generated = true if ARGV[0] == "--force"
 | |
| update = true if ARGV[0] == "--update"
 | |
| 
 | |
| def generate_language_id(language)
 | |
|   Digest::SHA256.hexdigest(language).to_i(16) % (2**30 - 1)
 | |
| end
 | |
| 
 | |
| if generated
 | |
|   puts "You're regenerating all of the language_id attributes for all Linguist "
 | |
|   puts "languages defined in languages.yml. This is almost certainly NOT what"
 | |
|   puts "you meant to do!"
 | |
| 
 | |
|   languages = YAML.load(File.read("lib/linguist/languages.yml"))
 | |
|   languages.each do |name, vals|
 | |
|     vals.merge!('language_id' => generate_language_id(name))
 | |
|   end
 | |
| 
 | |
|   File.write("lib/linguist/languages.yml", header + YAML.dump(languages))
 | |
| elsif update
 | |
|   puts "Adding new language_id attributes to languages.yml that don't have one set"
 | |
|   languages = YAML.load(File.read("lib/linguist/languages.yml"))
 | |
| 
 | |
|   missing_count = 0
 | |
| 
 | |
|   languages.each do |name, vals|
 | |
|     unless vals.has_key?('language_id')
 | |
|       missing_count += 1
 | |
|       vals.merge!('language_id' => generate_language_id(name))
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   File.write("lib/linguist/languages.yml", header + YAML.dump(languages))
 | |
|   puts "Updated language_id attributes for #{missing_count} languages"
 | |
| else
 | |
|   puts "Whatever you want me to do, I can't figure it out. Giving up..."
 | |
| end
 |