def renomeia(lista,tipo) lista.each{|file| nome = File.basename(file) puts "ren #{T2T_VER}\\#{file} #{nome}.#{tipo}" system("ren #{T2T_VER}\\#{file} #{nome}.#{tipo}") } end # converte termino de linha unix2dos # renomeia alguns arquivos def preprocessamento print "\n\nPre-processamento de #{T2T_VER}\n\n" dir = ['/', '/doc/','/doc/pt_BR/','/doc/userguide/','/extras/', '/samples/', '/samples/css/'] #bat = File.new('converte.bat','w') dir.each {|d| f = "#{T2T_VER}#{d}*" puts "Converting: #{f}" Dir[f].each {|file| ext = File.basename(file).split('.') flag = false if ext.size==1 then flag = true else flag = ['css','html','t2t','txt','rb','php'].include?(ext[-1]) end if File.stat(file).directory? then flag = false end system("unix2dos -o -k #{file}") if flag } } d=['extras\t2tconv', 'txt2tags'] renomeia(d,'pyw') d=['Changelog','COPYING','README','README-FIRST','TEAM','TODO','extras\README'] renomeia(d,'txt') exit end # rotina para escolha de opção ou zero para encerrar def escolha(titulo,opcoes,flag) puts "-" * 40, titulo.center(40), "=" * 40 opcoes.each_index {|ix| printf("%i - %s\n",ix+1,opcoes[ix]) } nop = opcoes.size if flag puts "0 - Encerrar" nop = nop + 1 end puts "-" * 40 while true print "Opcao: " op = gets.chomp break if op =~ /^\d+/ end op = op.to_i exit if flag and op == 0 return op - 1 end # executa um comando def exec_cmd (titulo, comando) puts "-" * 40, "* #{titulo} *\n", comando, "=" * 40 if !system(comando) print "Erro: ", $? exit(1) end puts "~" * 40 end puts "\n\nGeracao de executaveis para Windoze" # definição dos caminhos necessários menu = [] Dir["txt2*"].each { |file| menu << file if File.directory?(file) } T2T_VER = menu[escolha('Versao', menu, true)] HOME = Dir.pwd.gsub(/\//,"\\") # parece que o installer não aceita / no diretório T2T_HOME = " #{HOME}\\#{T2T_VER}\\" INST_HOME = "C:\\Python22\\Installer\\" T2T = T2T_HOME + "txt2tags.pyw" INSTALLER = "c:\\python22\\python " + INST_HOME OUT_DIR = T2T_HOME + "win-inst\\temp\\" NSIS_DIR = "\"C:\\Arquivos de programas\\NSIS\\makensis.exe\" " NSIS_SCPT = HOME + "\\txt2tags.nsi" # definição do tipo de instalação (standalone ou não) op = escolha('Tipo',['Incluir Python','Sem Python','Pre-processamento'],true) if op==2 then preprocessamento exit end standalone = op==0 ? '/DSTD_ALONE' : '' #pre-processamento dos arquivos #T2T = t2t + ".pyw" #File.rename(t2t,"txt2tags.pyw") if !FileTest.exist?(T2T) # criando .spec do projeto cmd= INSTALLER + "Makespec.py --onefile --tk --noconsole " + "--icon " + T2T_HOME + "t2t.ico " + "--out " + OUT_DIR + T2T exec_cmd('Criando spec',cmd) # criando o projeto cmd= INSTALLER + "Build.py " + OUT_DIR + "txt2tags.spec" exec_cmd('Criando projeto', cmd) # criando instalação cmd = "#{NSIS_DIR} #{standalone} /DT2T_VER=#{T2T_VER} #{NSIS_SCPT}" exec_cmd('Criando executável',cmd) # criando instalação pt_BR cmd = "#{NSIS_DIR} #{standalone} /DT2T_VER=#{T2T_VER} /DPTBR #{NSIS_SCPT}" exec_cmd('Criando executável',cmd) # isto é tudo puts "\n\n\** Done tche!!\n"