dotfiles/.vim/bundle/vim-terraform/update_commands.rb
2017-05-19 14:03:13 +02:00

36 lines
987 B
Ruby
Executable file

#!/usr/bin/env ruby
# Use this script to update the commands auto-completed in plugin/terraform.vim.
require 'open3'
command_re = /^\s\s\s\s(\S+)/
plugin_file = 'plugin/terraform.vim'
# Create the list of commands.
stdout, stderr, _status = Open3.capture3('terraform list-commands')
output = if stderr == ''
stdout.split("\n")
else
stderr.split("\n")
end
commands = output.collect do |l|
match = command_re.match(l)
" \\ \"#{match[1]}\"" if match
end.reject(&:nil?).join(",\n")
# Read in the existing plugin file.
plugin = File.open(plugin_file, 'r').readlines
# Replace the terraResourceTypeBI lines with our new list.
first = plugin.index { |l| /^ return join\(\[/.match(l) } + 1
last = plugin.index { |l| /^ \\ \], "\\n"\)/.match(l) }
plugin.slice!(first, last - first)
commands.split("\n").reverse_each do |r|
plugin.insert(first, r)
end
# Write the plugin file back out.
File.open(plugin_file, 'w') do |f|
f.puts plugin
end