yast/yast-installation

View on GitHub
src/lib/installation/clients/proxy_finish.rb

Summary

Maintainability
A
1 hr
Test Coverage
# ------------------------------------------------------------------------------
# Copyright (c) 2006-2012 Novell, Inc. All Rights Reserved.
#
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of version 2 of the GNU General Public License as published by the
# Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail, you may find
# current contact information at www.novell.com.
# ------------------------------------------------------------------------------

# File:
#  proxy_finish.ycp
#
# Module:
#  Step of base installation finish
#
# Authors:
#  Jiri Srain <jsrain@suse.cz>
#
# $Id$
#
module Yast
  class ProxyFinishClient < Client
    include Yast::Logger

    def main
      textdomain "installation"

      Yast.import "Stage"
      Yast.import "Proxy"

      @ret = nil
      @func = ""
      @param = {}

      # Check arguments
      if Ops.greater_than(Builtins.size(WFM.Args), 0) &&
          Ops.is_string?(WFM.Args(0))
        @func = Convert.to_string(WFM.Args(0))
        if Ops.greater_than(Builtins.size(WFM.Args), 1) &&
            Ops.is_map?(WFM.Args(1))
          @param = Convert.to_map(WFM.Args(1))
        end
      end

      Builtins.y2milestone("starting proxy_finish")
      Builtins.y2debug("func=%1", @func)
      Builtins.y2debug("param=%1", @param)

      case @func
      when "Info"
        return {
          "steps" => 1,
          # progress step title
          "title" => _("Saving proxy configuration..."),
          "when"  => [:installation, :update, :autoinst]
        }
      when "Write"
        if write_to_target?
          proxy_settings = Proxy.Export

          log.info("Writing proxy settings to the target system: #{proxy_settings.inspect}")

          Proxy.Import(proxy_settings)
          Proxy.WriteSysconfig
          Proxy.WriteCurlrc
        end
      else
        Builtins.y2error("unknown function: %1", @func)
        @ret = nil
      end

      Builtins.y2debug("ret=%1", @ret)
      Builtins.y2milestone("proxy_finish finished")
      deep_copy(@ret)
    end

  private

    # Whether the configuration should be written to the target system or not
    #
    #  @return [Boolean]
    def write_to_target?
      return false unless Stage.initial

      # In case of AutoYaST the configuration could have been imported but not written yet
      Proxy.modified || Proxy.to_target
    end
  end
end