require 'internet'
require 'views/cli'
require 'use_cases/new'
require 'use_cases/list'
require 'settings_file'
require 'io/directory_info'

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

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