require 'thor'

require 'yk_command/analyze/analyze'
require 'yk_command/analyze/request'
require 'yk_command/module/yk_module'

require_relative 'component_manage/component_manage_platform'

module YkCommand

  class CLI < Thor
    include Thor::Actions

    desc 'generate <Path> <Module Name> <Language> <Prefix - 前缀> <Author - 作者>', '直接生成项目 例子: yk_command generate  . HomeModule oc MT Tom.Liu '
    method_option :generate, aliases: '-g'

    def generate(path = nil, name, lang, class_prefix, author)

      YkModule.new(self .args,self .options).generate(path, name, lang, class_prefix, author)
    end

    desc 'create <Path>', '在某个路径下交互式生成项目'
    method_option :create, aliases: '-c'

    def create(path = nil)
      YkModule.new(self .args,self .options ).create(path,false )
    end

    desc 'create_simple_project <Path>', '在某个路径下交互式生成一个简单的demo项目'
    method_option :create, aliases: '-c'

    def create_simple_project(path = nil)
      YkModule.new(self .args,self .options ).create(path,true )
    end

    desc 'dependency <Podfile.lock Path>', '解析Podfile.lock'
    method_option :dependency, aliases: '-d'

    def dependency(path = nil)
      Analyzer.new(path).dependency path
    end

    desc 'workspace_analyze <AppHost Path>', '遍历项目目录 批量上传项目依赖信息'
    method_option :workspace_analyze, aliases: '-w'

    def workspace_analyze(path = nil)
      Analyzer.new(path).workspace_analyze path
    end


    desc 'platform_refresh ', '更新平台的app和组件数据'
    method_option :platform_refresh, aliases: '-pr'

    def platform_refresh
      p = ComponentManagePlatform.new
      p.update_app_data
      p.update_component_data

    end

    desc 'platform_create_component ', '创建新的公共组件'
    method_option :platform_create_component, aliases: '-pcc'

    def platform_create_component(path = nil,name,desc)
      p = ComponentManagePlatform.new
      p.create_new_component(name,desc)

    end

    desc 'platform_delete_component ', '删除YKComponents下的组件'
    method_option :platform_delete_component, aliases: '-pcc'

    def platform_delete_component(name)
      p = ComponentManagePlatform.new
      p.delete_component(name)

    end







  end
end