summaryrefslogtreecommitdiffstats
path: root/scripts/build
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build')
-rwxr-xr-xscripts/build42
1 files changed, 26 insertions, 16 deletions
diff --git a/scripts/build b/scripts/build
index 3ec5b50c..a2f43fb2 100755
--- a/scripts/build
+++ b/scripts/build
@@ -12,14 +12,6 @@ Dir.chdir(File.dirname(__dir__))
BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master'
-def read_section(name)
- section = File.read('polyglot.vim').split('""" ').find { |e| e.start_with?(name) }
- if section.nil?
- raise StandardError.new("Section not found: #{name}")
- end
- "\" Please do not edit this file directly, instead modify polyglot.vim or scripts/build\n" + section[(section.index("\n") + 1)..-1]
-end
-
def camelize(str)
str.split(/[-_\.]/).map { |a| a.capitalize }.join("")
end
@@ -431,7 +423,7 @@ def rule_to_code(rule)
end
def extract(packages)
- all_dirs = %w(syntax indent doc compiler autoload ftplugin ctags extras after)
+ all_dirs = %w(syntax indent doc compiler ftplugin ctags extras after)
default_dirs = %w(
syntax indent doc compiler autoload ftplugin ctags extras
@@ -440,6 +432,12 @@ def extract(packages)
FileUtils.rm_rf(all_dirs)
+ for dir in Dir.glob("*", base: "autoload")
+ if dir != "polyglot"
+ FileUtils.rm_rf("autoload/" + dir)
+ end
+ end
+
output = []
packages.map do |package|
repo, branch, path, dir = parse_remote(package["remote"])
@@ -582,17 +580,20 @@ def generate_ftdetect(packages, heuristics)
output << "endif\n\n"
end
end
-
+
show_warnings(all_filetypes, expected_filetypes)
- ftdetect = read_section('ftdetect/polyglot.vim')
+ ftdetect = File.read('ftdetect/polyglot.vim')
+
+ starting = '" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE'
+ ending = '" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE'
File.write(
'ftdetect/polyglot.vim',
- ftdetect.gsub('" scripts/build inserts here filetype detection autocommands') { output }
+ ftdetect.gsub(/(?<=#{starting}\n)(.*)(?=#{ending})/m) { output }
)
- output = []
+ output = ["\" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE\n"]
for heuristic in heuristics
output << <<~EOS
@@ -616,8 +617,13 @@ def generate_ftdetect(packages, heuristics)
output << " \\ }"
- autoload_script = read_section('autoload/polyglot/shebang.vim')
- File.write('autoload/polyglot/shebang.vim', autoload_script + "\n\n" + output)
+ inject_code('autoload/polyglot/shebang.vim', output)
+end
+
+def inject_code(path, code)
+ header = "\" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE\n"
+ normal, generated = File.read(path).split(header)
+ File.write(path, [normal, generated].join(header))
end
def generate_tests(packages)
@@ -734,7 +740,11 @@ def detect_filetypes(glob)
end
def generate_plugins(packages)
- output = "let s:globs = {\n"
+ output = <<~EOS
+ " DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
+
+ let s:globs = {
+ EOS
patterns = Hash.new { |h, k| h[k] = [] }