mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
* Remove deprecated find_by_shebang * Remove deprecated ace_modes function * Remove deprecated primary_extension function Gists don't have a language dropdown anymore * Remove deprecated Linguist::Language.detect function * Remove deprecated search_term field
79 lines
3.3 KiB
Ruby
Executable File
79 lines
3.3 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)
|
|
# 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
|