require 'internet'
require 'settings_file'
require 'io/directory_info'

module Idonethis::Adapters
  class Cli
    class << self
      def run(argv={})
        adapters = {
          internet: Internet,
          git:      Git,
          fs:       IO::DirectoryInfo,
          views:    {
            list:   Views::Cli::List.method(:apply),
            teams:  Views::Cli::Teams.method(:apply) },
          settings: Settings,
          log:      ->(msg){puts "[LOG] #{msg}"}}

        Idonethis::UseCases::App.apply argv, adapters
      end
    end
  end
end