Class: Pindo::Command
- Inherits:
-
CLAide::Command
- Object
- CLAide::Command
- Pindo::Command
- Includes:
- Funlog::Mixin, Githelper, 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/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/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/utils/feishu.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
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
-
#args_help_flag ⇒ Object
(also: #args_help_flag?)
Returns the value of attribute args_help_flag.
Class Method Summary collapse
-
.command_name ⇒ String
自动推导命令名称.
-
.options ⇒ Object
].concat(super) end.
- .run(argv) ⇒ Object
-
.use_cache? ⇒ Boolean
缓存配置:子类可以重写此方法来启用缓存.
Instance Method Summary collapse
-
#initialize(argv) ⇒ Command
constructor
A new instance of Command.
-
#initialize_options(argv, command_name: nil, directory: nil, enable_cache: nil) ⇒ OptionConfiguration
初始化参数(便捷方法).
- #validate! ⇒ Object
Methods included from Funlog::Mixin
Methods included from Pindoconfig::Mixin
Methods included from Githelper
#add_branch, #add_tag, #add_tag_with_check, #clone_clang_repo, #clone_devclang_repo, #clone_pindo_common_config_repo, #clone_pindo_env_config_repo, #clong_buildconfig_repo, #get_repo_base_name, #getcode_to_dir, #git_addpush_repo, #git_latest_commit_id, #git_root_directory, #is_git_directory?, #local_branch_exists?, #local_tag_exists?, #prepare_gitenv, #process_need_add_files, #remote_branch_exists?, #remote_tag_exists?, #remove_branch, #remove_tag
Methods included from Executable
capture_command, #executable, execute_command, popen3, reader, which, which!
Constructor Details
#initialize(argv) ⇒ Command
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/pindo/command.rb', line 131 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 # 在非抽象命令初始化时设置上下文(但不在显示帮助时) if !self.class.abstract_command? && !is_help_request context = Pindo::PindoContext.instance # 只在上下文未设置时才设置(避免重复设置) if context.instance_variable_get(:@current_command).nil? # 获取完整的命令路径 command_parts = [] current = self.class while current < Pindo::Command if current.command && current.command != 'pindo' command_parts.unshift(current.command) end current = current.superclass end command_name = command_parts.empty? ? self.class.command : command_parts.join(':') # 配置选项 cache_enabled_value = self.class.respond_to?(:use_cache?) ? self.class.use_cache? : false = { cache_enabled: cache_enabled_value, verbose: @args_verbose_flag } # 获取项目根目录(Git仓库根目录或当前目录) project_dir = get_project_root_directory(Dir.pwd) context.set_context(command_name, project_dir, ) end end end |
Instance Attribute Details
#args_help_flag ⇒ Object Also known as: args_help_flag?
Returns the value of attribute args_help_flag.
52 53 54 |
# File 'lib/pindo/command.rb', line 52 def args_help_flag @args_help_flag end |
Class Method Details
.command_name ⇒ String
自动推导命令名称
69 70 71 72 73 74 75 76 |
# File 'lib/pindo/command.rb', line 69 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 |
.options ⇒ Object
].concat(super) end
112 113 114 115 116 117 118 |
# File 'lib/pindo/command.rb', line 112 def self. if root_command? DEFAULT_ROOT_OPTIONS + DEFAULT_OPTIONS else DEFAULT_OPTIONS end end |
.run(argv) ⇒ Object
125 126 127 128 129 |
# File 'lib/pindo/command.rb', line 125 def self.run(argv) # 直接调用父类的 run 方法 # PindoContext 的设置在 initialize 中处理 super(argv) end |
.use_cache? ⇒ Boolean
缓存配置:子类可以重写此方法来启用缓存
61 62 63 |
# File 'lib/pindo/command.rb', line 61 def self.use_cache? false # 默认不使用缓存 end |
Instance Method Details
#initialize_options(argv, command_name: nil, directory: nil, enable_cache: nil) ⇒ OptionConfiguration
初始化参数(便捷方法)
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/pindo/command.rb', line 84 def (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
120 121 122 123 |
# File 'lib/pindo/command.rb', line 120 def validate! super help! if args_help_flag? end |