Mina: рдорджрдж рдЪрд╛рд╣рд┐рдП: рд╡рд┐рдВрдбреЛрдЬ mingw32 рдЦреЛрд▓ (рдЧрд┐рдЯ рдмреИрд╢) - рд╕реАрдЖрд░рдПрд▓рдПрдл

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬрдире░ 2013  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mina-deploy/mina

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЪреАрдЬрд╝реЗрдВ - рдорд╣рд╛рди рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж: +1:

рдореИрдВ рдЕрдм рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рд╣рд╛рдБ ...) рдФрд░ рдореАрдирд╛ рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдЧрд┐рдЯ рдмреИрд╢ (mingw32 рдорд╛рдирдХ рдЦреЛрд▓) рдкрд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реАрдЖрд░рдПрд▓рдПрдл рд▓рд╛рдЗрди рдПрдВрдбрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд┐рдирдХреНрд╕ рдПрд▓рдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдИрдУрдПрдл" рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓рд╛рдЗрди рдПрдВрдбрд┐рдВрдЧреНрд╕ рдХреЛ рдПрд▓рдПрдл рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдореАрдирд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдпрд╛ рдПрдХ mingw32 рдмрдЧ рдпрд╛ рдЧрд▓рдд рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ? :)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВред
рд░реВрдмреА рдХреЗ рд▓рд┐рдП Shellwords.escape рд╡рд┐рдзрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ lib/mina.rb рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдб рдЬреЛрдбрд╝рд╛ред
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВ!

рдореИрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП.... рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

# lib/mina.rb
module Mina
  #if windows os
  require 'rbconfig'
  is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/) 
  if is_windows
    module Shellwords
      def shellescape(str)
          '"' + str.gsub(/\\(?=\\*\")/, "\\\\\\").gsub(/\"/, "\\\"").gsub(/\\$/, "\\\\\\").gsub("%", "%%") + '"'
      end

      module_function :shellescape
      class << self
        alias escape shellescape
      end
    end
  end
...

рд╕рднреА 12 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдореНрдоред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ?

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджтАФрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рдорд╢реАрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕реБрдзрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред Win7x64 рдкрд░ CentOS рдкрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ

 bash: -c line 106: unexpected EOF while looking for a matching `"'

рдореЗрд░реЗ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдХреЛ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред рд╡рд╣ Git Bash (mingw32) рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрдЯрд╛ (рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ) рдкрд░ рд╣реИ рдФрд░ рд╣рдо рдореАрдирд╛ 0.3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬ 8.1 x64 рдкрд░ @rezen рдЬреИрд╕реА рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рдЬреЛ рдЙрдмрдВрдЯреВ рдПрд▓рдЯреАрдПрд╕ 12.04.3 x64 рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

@reterius рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИред
рдЗрд╕ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрд╕реНрдХрд╛рд░рд┐рдд рдХрд░реЗрдВ, рд▓рд╛рдЗрди рдПрдВрдбрд┐рдВрдЧреНрд╕ рдХреЛ рдПрд▓рдПрдл рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

рдЕрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВред
рд░реВрдмреА рдХреЗ рд▓рд┐рдП Shellwords.escape рд╡рд┐рдзрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ lib/mina.rb рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдб рдЬреЛрдбрд╝рд╛ред
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВ!

рдореИрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП.... рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

# lib/mina.rb
module Mina
  #if windows os
  require 'rbconfig'
  is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/) 
  if is_windows
    module Shellwords
      def shellescape(str)
          '"' + str.gsub(/\\(?=\\*\")/, "\\\\\\").gsub(/\"/, "\\\"").gsub(/\\$/, "\\\\\\").gsub("%", "%%") + '"'
      end

      module_function :shellescape
      class << self
        alias escape shellescape
      end
    end
  end
...

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !! рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдирд╣реАрдВ .... рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ

рдХреНрдпрд╛ рдЗрд╕ рдЯреНрд╡реАрдХ рдиреЗ рдЗрд╕реЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдореИрдВ @insub рдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдареАрдХ рдХрд░ рджреВрдВ?

@coredevelopers : рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ рдЙрдард╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ? рдЗрдирд╕рдм рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдзрд╛рдиред рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рдореБрджрд╛рдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдореВрд▓реА рдкреИрдЪ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдЬреАрдердм рдорд╛рд╕реНрдЯрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕