#!/usr/bin/env ruby shared = 'shared' # Directorio protegido sobre el que jamás se ejecutara nada. # Lista de directorios con elementos externos: elementos_externos = { # 'directorio' => {'elemento_externo => 'URL del repositorio'} 'public/images' => {'_app' => 'svn://server/rails_app/public/images/_gw'}, 'public/javascripts' => {'_app' => 'svn://server/paxx/public/gooworks/rails_app/public/javascripts/_gw'}, 'public/stylesheets' => {'_app' => 'svn://server/rails_app/public/stylesheets/_gw'}, 'vendor' => {'rails' => 'http://dev.rubyonrails.com/svn/rails/trunk'} # 'dir' => ['ext' => 'url', 'ext2' => 'url'] <-- para varios externos en un mismo directorio } if ARGV[0].nil? puts "Especifica el directorio en el que quieres trabajar: #{$0} <directorio>" exit end max_dir_size = 0; max_ext_size = 0 elementos_externos.each do |dir, extlist| max_dir_size = dir.size if dir.size > max_dir_size extlist.each do |ext, url| max_ext_size = ext.size if ext.size > max_ext_size end end script_dir = Dir.pwd tmp_file = "#{script_dir}/_svnext_temp_file" # Esto permite usar comodines, como '*' ARGV.each do |wd| if FileTest.directory?(wd) && wd.chomp('/') != 'gooworks' puts "".ljust(80, '=') puts "Trabajando en #{wd}:" Dir.chdir(wd) elementos_externos.sort.each do |dir, extlist| file = File.open(tmp_file, 'w') if extlist.size > 1 extlist.sort.each do |ext, url| if file.nil? out = %x[svn ps svn:externals '#{ext} #{url}' #{dir}] else file.puts "#{ext} #{url}" out = 'Escribiendo archivo temporal...' end puts "Configurando #{ext.ljust(max_ext_size)}: #{out}" end unless file.nil? file.close # Ejecutamos Subversion para que lea los elementos del archivo que creamos: out = %x[svn ps svn:externals -F #{tmp_file} #{dir}] puts "Configurado (#{extlist.size} elementos): #{out}" File.delete(tmp_file) end end Dir.chdir(script_dir) end end
You need to create an account or log in to post comments to this site.