tmatilai/vagrant-proxyconf

View on GitHub
lib/vagrant-proxyconf/action/configure_svn_proxy.rb

Summary

Maintainability
A
0 mins
Test Coverage
require_relative 'base'
require_relative '../userinfo_uri'

module VagrantPlugins
  module ProxyConf
    class Action
      # Action for configuring Svn on the guest
      class ConfigureSvnProxy < Base
        def config_name
          'svn_proxy'
        end

        private

        def configure_machine
          return if !supported?

          write_config(svn_config, path: '/etc/subversion/servers')

          true
        end

        def unconfigure_machine
          return if !supported?

          @machine.communicate.tap do |comm|
            comm.sudo("touch /etc/subversion/servers")
            comm.sudo("sed -i.bak -e '/^http-proxy-/d' /etc/subversion/servers")
            comm.sudo("chown root:root /etc/subversion/servers")
            comm.sudo("chmod 0644 /etc/subversion/servers")
          end
          true
        end

        def svn_config
          u = UserinfoURI.new(config.http)

          <<-CONFIG.gsub(/^. */, '')
          [global]
          http-proxy-host=#{u.host}
          http-proxy-port=#{u.port}
          http-proxy-username=#{u.user}
          http-proxy-password=#{u.pass}
          http-proxy-exceptions=#{config.no_proxy}
          CONFIG
        end
      end
    end
  end
end