Class: Pindo::Command

Inherits:
CLAide::Command
  • Object
show all
Includes:
Funlog::Mixin, Pindoconfig::Mixin
Defined in:
lib/pindo/command.rb,
lib/pindo/command/env.rb,
lib/pindo/command/ios.rb,
lib/pindo/command/jps.rb,
lib/pindo/command/web.rb,
lib/pindo/command/repo.rb,
lib/pindo/command/gplay.rb,
lib/pindo/command/setup.rb,
lib/pindo/command/unity.rb,
lib/pindo/command/utils.rb,
lib/pindo/command/android.rb,
lib/pindo/command/web/run.rb,
lib/pindo/command/appstore.rb,
lib/pindo/command/ios/cert.rb,
lib/pindo/command/jps/bind.rb,
lib/pindo/command/gplay/iap.rb,
lib/pindo/command/ios/build.rb,
lib/pindo/command/jps/login.rb,
lib/pindo/command/jps/media.rb,
lib/pindo/command/utils/tag.rb,
lib/pindo/command/jps/resign.rb,
lib/pindo/command/jps/upload.rb,
lib/pindo/command/repo/clone.rb,
lib/pindo/command/repo/login.rb,
lib/pindo/command/utils/boss.rb,
lib/pindo/command/utils/icon.rb,
lib/pindo/command/ios/fixproj.rb,
lib/pindo/command/ios/podlint.rb,
lib/pindo/command/ios/podpush.rb,
lib/pindo/command/jps/apptest.rb,
lib/pindo/command/jps/comment.rb,
lib/pindo/command/repo/create.rb,
lib/pindo/command/repo/search.rb,
lib/pindo/command/utils/tgate.rb,
lib/pindo/command/appstore/iap.rb,
lib/pindo/command/appstore/pem.rb,
lib/pindo/command/appstore/tag.rb,
lib/pindo/command/env/quarkenv.rb,
lib/pindo/command/env/swarkenv.rb,
lib/pindo/command/env/workhard.rb,
lib/pindo/command/gplay/itcapp.rb,
lib/pindo/command/gplay/upload.rb,
lib/pindo/command/ios/applovin.rb,
lib/pindo/command/jps/download.rb,
lib/pindo/command/utils/device.rb,
lib/pindo/command/utils/fabric.rb,
lib/pindo/command/appstore/cert.rb,
lib/pindo/command/ios/autobuild.rb,
lib/pindo/command/ios/podupdate.rb,
lib/pindo/command/web/autobuild.rb,
lib/pindo/command/gplay/metadata.rb,
lib/pindo/command/ios/autoresign.rb,
lib/pindo/command/unity/packinit.rb,
lib/pindo/command/unity/packpush.rb,
lib/pindo/command/utils/repoinit.rb,
lib/pindo/command/utils/xcassets.rb,
lib/pindo/command/appstore/itcapp.rb,
lib/pindo/command/appstore/upload.rb,
lib/pindo/command/env/dreamstudio.rb,
lib/pindo/command/unity/autobuild.rb,
lib/pindo/command/unity/packbuild.rb,
lib/pindo/command/utils/clearcert.rb,
lib/pindo/command/utils/renewcert.rb,
lib/pindo/command/utils/renewproj.rb,
lib/pindo/command/android/keystore.rb,
lib/pindo/command/appstore/itcinfo.rb,
lib/pindo/command/appstore/quswark.rb,
lib/pindo/command/gplay/pullconfig.rb,
lib/pindo/command/android/autobuild.rb,
lib/pindo/command/appstore/bundleid.rb,
lib/pindo/command/appstore/metadata.rb,
lib/pindo/command/appstore/quswauth.rb,
lib/pindo/command/gplay/screenshots.rb,
lib/pindo/command/android/autoresign.rb,
lib/pindo/command/appstore/autobuild.rb,
lib/pindo/command/utils/updateconfig.rb,
lib/pindo/command/appstore/adhocbuild.rb,
lib/pindo/command/appstore/autoresign.rb,
lib/pindo/command/appstore/configproj.rb,
lib/pindo/command/appstore/getitcinfo.rb,
lib/pindo/command/appstore/initconfig.rb,
lib/pindo/command/appstore/pullconfig.rb,
lib/pindo/command/appstore/screenshots.rb

Direct Known Subclasses

Android, Appstore, Env, Gplay, Ios, Jps, Repo, Setup, Unity, Utils, Web

Defined Under Namespace

Classes: Android, Appstore, Env, Gplay, Ios, Jps, Repo, Setup, Unity, Utils, Web

Constant Summary collapse

DEFAULT_ROOT_OPTIONS =
[
  ['--version', '查看pindo版本'],
]
DEFAULT_OPTIONS =
[
  ['--help',    '查看命令行用法'],
  ['--verbose', '显示详细的调试信息'],
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Funlog::Mixin

#pindo_log_instance

Methods included from Pindoconfig::Mixin

#pindo_single_config

Constructor Details

#initialize(argv) ⇒ Command

Returns a new instance of Command.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/pindo/command.rb', line 124

def initialize(argv)
    super
    @args_help_flag = argv.flag?('help', false)
    @args_verbose_flag = argv.flag?('verbose', false)

    # 检查是否是 help 请求(检查原始命令行参数)
    original_args = ARGV.join(' ')
    is_help_request = @args_help_flag ||
                    original_args.include?('--help') ||
                    original_args.include?('-h') ||
                    argv.remainder.include?('--help') ||
                    argv.remainder.include?('-h')

    # 设置全局 verbose 标志
    ENV['PINDO_VERBOSE'] = '1' if @args_verbose_flag
end

Instance Attribute Details

#args_help_flagObject Also known as: args_help_flag?

Returns the value of attribute args_help_flag.



49
50
51
# File 'lib/pindo/command.rb', line 49

def args_help_flag
  @args_help_flag
end

Class Method Details

.command_nameString

自动推导命令名称

Returns:

  • (String)

    命令名称,例如:Pindo::Command::Ios::Autobuild → ‘ios:autobuild’



64
65
66
67
68
69
70
71
# File 'lib/pindo/command.rb', line 64

def self.command_name
  @command_name ||= begin
    # 从类名推导,例如:
    # Pindo::Command::Ios::Autobuild → ['Ios', 'Autobuild'] → 'ios:autobuild'
    parts = name.split('::').drop(2)  # 去掉 'Pindo' 和 'Command'
    parts.map(&:downcase).join(':')
  end
end

.optionsObject

].concat(super) end



107
108
109
110
111
112
113
# File 'lib/pindo/command.rb', line 107

def self.options
  if root_command?
    DEFAULT_ROOT_OPTIONS + DEFAULT_OPTIONS
  else
    DEFAULT_OPTIONS
  end
end

.run(argv) ⇒ Object



120
121
122
# File 'lib/pindo/command.rb', line 120

def self.run(argv)
    super(argv)
end

.use_cache?Boolean

缓存配置:子类可以重写此方法来启用缓存

Returns:

  • (Boolean)


58
59
60
# File 'lib/pindo/command.rb', line 58

def self.use_cache?
  false  # 默认不使用缓存
end

Instance Method Details

#initialize_options(argv, command_name: nil, directory: nil, enable_cache: nil) ⇒ OptionConfiguration

初始化参数(便捷方法)

Parameters:

  • argv (CLAide::ARGV)

    命令行参数

  • command_name (String, nil) (defaults to: nil)

    命令名称(可选,默认自动推导)

  • directory (String, nil) (defaults to: nil)

    工作目录(可选,默认当前目录)

  • enable_cache (Boolean, nil) (defaults to: nil)

    是否启用缓存(可选,默认使用 use_cache?)

Returns:

  • (OptionConfiguration)

    参数配置对象



79
80
81
82
83
84
85
86
87
88
# File 'lib/pindo/command.rb', line 79

def initialize_options(argv, command_name: nil, directory: nil, enable_cache: nil)
  Pindo::Options::OptionInitializer.initialize(
    self,
    argv,
    self.class.option_items,
    command_name || self.class.command_name,
    directory: directory,
    enable_cache: enable_cache.nil? ? self.class.use_cache? : enable_cache
  )
end

#validate!Object



115
116
117
118
# File 'lib/pindo/command.rb', line 115

def validate!
    super
    help! if args_help_flag?
end