Sha256: a3a031d9b28c3e4cbba83af84fd57ed0945f821d876c635f723cde5127d96327

Contents?: true

Size: 1.91 KB

Versions: 5

Compression:

Stored size: 1.91 KB

Contents

# -*- encoding: UTF-8 -*-

module CSD
  class << self
    
    # This method holds the user interface instance.
    #
    def ui
      # In testmode we don't want to perform caching
      return choose_ui if Options.testmode
      # Otherwise we choose and cache the UI here
      @@ui ||= choose_ui
    end
    
    # This method chooses an user interface instance according to the Options and returns a new instance of it.
    #
    def choose_ui
      if Options.silent
        UserInterface::Silent.new
      else
        UserInterface::CLI.new
      end
    end
  
    # This method chooses and holds the command execution instance.
    #
    def cmd
      @@cmd ||= Commands.new
    end
  
    # This holds the container for paths.
    #
    def path
      @@path ||= PathContainer.new
    end
  
    # This holds the container for argument options.
    #
    def options
      @@options ||= OptionsParser.new
    end
  end

  # A wrapper for the UI class to be able to run all methods as class methods.
  #
  class UI
    def self.method_missing(meth, *args, &block)
      ::CSD.ui.send(meth, *args, &block)
    end
  end

  # A wrapper for the Commands class to be able to run all methods as class methods.
  #
  class Cmd
    def self.method_missing(meth, *args, &block)
      ::CSD.cmd.send(meth, *args, &block)
    end
  end

  # A wrapper for the Path class to be able to run all methods as class methods.
  #
  class Path
    def self.method_missing(meth, *args, &block)
      ::CSD.path.send(meth, *args, &block)
    end
  end

  # A wrapper for the Options class to be able to run all methods as class methods.
  #
  class Options
    # Because the Options class will respond to clear, we must pass it on explicitly to the OptionsParser instance residing in CSD.options
    #
    def self.clear
      ::CSD.options.clear
    end
    def self.method_missing(meth, *args, &block)
      ::CSD.options.send(meth, *args, &block)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
csd-0.1.13 lib/csd/container.rb
csd-0.1.12 lib/csd/container.rb
csd-0.1.11 lib/csd/container.rb
csd-0.1.10 lib/csd/container.rb
csd-0.1.9 lib/csd/container.rb