Store and revert changes made to vendor/README.md

This commit is contained in:
Alhadis
2018-04-14 04:54:05 +10:00
parent 741bb6a76b
commit f810d7fe7d

View File

@@ -47,10 +47,9 @@ def command(*args)
log "$ #{args.join(' ')}" log "$ #{args.join(' ')}"
output, status = Open3.capture2e(*args) output, status = Open3.capture2e(*args)
if !status.success? if !status.success?
output.each_line do |line| warn "Command failed. Aborting."
log " > #{line}" error.output = output.each_line { |line| " > #{line}" }
end raise { output: output, status: status }
raise "Command failed. Aborting."
end end
end end
@@ -65,7 +64,6 @@ EOH
$replace = nil $replace = nil
$verbose = true $verbose = true
$compile = false
OptionParser.new do |opts| OptionParser.new do |opts|
opts.banner = usage opts.banner = usage
@@ -75,9 +73,6 @@ OptionParser.new do |opts|
opts.on("-rSUBMODULE", "--replace=SUBMODDULE", "Replace an existing grammar submodule.") do |name| opts.on("-rSUBMODULE", "--replace=SUBMODDULE", "Replace an existing grammar submodule.") do |name|
$replace = name $replace = name
end end
opts.on("-C", "--compile", "Compile grammar using the new grammar-compiler.") do
$compile = true
end
end.parse! end.parse!
@@ -90,14 +85,13 @@ unless $url
end end
# Flags to track which changes should be reverted on an error # Flags to track which changes should be reverted on an error
did_remove? = false $gitmodules = File.read("#{ROOT}/.gitmodules")
did_add? = false $git_config = File.read("#{ROOT}/.git/config")
gitmodules = File.read("#{ROOT}/.gitmodules") $vendor_list = File.read("#{ROOT}/vendor/README.md")
git_config = File.read("#{ROOT}/.git/config")
def restore_configs def restore_configs
File.write("#{ROOT}/.gitmodules", gitmodules) File.write("#{ROOT}/.gitmodules", $gitmodules)
File.write("#{ROOT}/.git/config", git_config) File.write("#{ROOT}/.git/config", $git_config)
end end
begin begin
@@ -115,14 +109,12 @@ begin
if repo_old if repo_old
log "Deregistering: #{repo_old}" log "Deregistering: #{repo_old}"
removed = repo_old
command('git', 'submodule', 'deinit', repo_old) command('git', 'submodule', 'deinit', repo_old)
command('git', 'rm', '-rf', repo_old) command('git', 'rm', '-rf', repo_old)
command('script/grammar-compiler', 'update', '-f') command('script/grammar-compiler', 'update', '-f')
end end
log "Registering new submodule: #{repo_new}" log "Registering new submodule: #{repo_new}"
added = repo_new
command('git', 'submodule', 'add', '-f', https, repo_new) command('git', 'submodule', 'add', '-f', https, repo_new)
command('script/grammar-compiler', 'add', repo_new) command('script/grammar-compiler', 'add', repo_new)
@@ -138,19 +130,17 @@ begin
command('script/sort-submodules') command('script/sort-submodules')
command('script/list-grammars') command('script/list-grammars')
rescue => ex rescue => ex
if did_add? if repo_new
`git submodule deinit #{repo_new}` `git submodule deinit #{repo_new}`
`rm -rf #{repo_new}` `rm -rf #{repo_new}`
`rm -rf .git/modules/#{repo_new}/` `rm -rf .git/modules/#{repo_new}/`
end
restore_configs()
if did_remove?
`rm -rf #{repo_old}`
`git submodule add -f "#{https}", "#{repo_old}"`
# Revert twice. Make no assumpsions about
# badly-mangled the working tree is.
restore_configs() restore_configs()
end end
if repo_old
`rm -rf #{repo_old}`
`git submodule add -f "#{https}", "#{repo_old}"`
restore_configs()
end
File.write("#{ROOT}/vendor/README.md", $vendor_list)
exit 1 exit 1
end end