self.get

in lib/between_meals/repo.rb [34:75]


    def self.get(type, repo_path, logger)
      case type
      when 'auto'
        unless File.directory?(repo_path)
          logger.warn("#{repo_path} does not point to a repo")
          exit(1)
        end
        logger.info('Trying to detect repo type')
        require 'between_meals/repo/git'
        require 'between_meals/repo/hg'
        require 'between_meals/repo/svn'
        [
          BetweenMeals::Repo::Git,
          BetweenMeals::Repo::Hg,
          BetweenMeals::Repo::Svn,
        ].each do |klass|
          begin
            r = klass.new(repo_path, logger)
            if r.exists?
              logger.info("Repo found to be #{klass.to_s.split('::').last}")
              return r
            end
          rescue StandardError
            logger.debug("Skipping #{klass}")
          end
        end
        logger.warn("Failed detecting repo type at #{repo_path}")
        exit(1)
      when 'svn'
        require 'between_meals/repo/svn'
        BetweenMeals::Repo::Svn.new(repo_path, logger)
      when 'git'
        require 'between_meals/repo/git'
        BetweenMeals::Repo::Git.new(repo_path, logger)
      when 'hg'
        require 'between_meals/repo/hg'
        BetweenMeals::Repo::Hg.new(repo_path, logger)
      else
        fail "Do not know repo type #{type}"
      end
    end