Class: Pindo::Command::Utils::Tag
- Inherits:
-
Pindo::Command::Utils
- Object
- CLAide::Command
- Pindo::Command
- Pindo::Command::Utils
- Pindo::Command::Utils::Tag
- Defined in:
- lib/pindo/command/utils/tag.rb
Constant Summary
Constants inherited from Pindo::Command
DEFAULT_OPTIONS, DEFAULT_ROOT_OPTIONS
Instance Attribute Summary
Attributes inherited from Pindo::Command
Class Method Summary collapse
-
.option_items ⇒ Object
定义此命令使用的参数项.
-
.options ⇒ Object
命令的选项列表.
Instance Method Summary collapse
-
#initialize(argv) ⇒ Tag
constructor
A new instance of Tag.
- #run ⇒ Object
Methods inherited from Pindo::Command
command_name, #initialize_options, run, use_cache?, #validate!
Methods included from Funlog::Mixin
Methods included from Pindoconfig::Mixin
Constructor Details
#initialize(argv) ⇒ Tag
Returns a new instance of Tag.
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pindo/command/utils/tag.rb', line 55 def initialize(argv) @options = (argv) # Git 参数 @args_release_branch = @options[:release_branch] || 'master' @args_ver_inc = Pindo::Options::GitOptions.parse_version_increase_type(@options[:ver_inc] || 'mini') @args_tag_type = Pindo::Options::GitOptions.parse_create_tag_type(@options[:tag_type] || 'new') @args_tag_pre = @options[:tag_pre] || 'v' super @additional_args = argv.remainder! end |
Class Method Details
.option_items ⇒ Object
定义此命令使用的参数项
46 47 48 |
# File 'lib/pindo/command/utils/tag.rb', line 46 def self.option_items @option_items ||= Pindo::Options::GitOptions.all end |
.options ⇒ Object
命令的选项列表
51 52 53 |
# File 'lib/pindo/command/utils/tag.rb', line 51 def self. option_items.map(&:to_claide_option).concat(super) end |
Instance Method Details
#run ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/pindo/command/utils/tag.rb', line 68 def run pindo_project_dir = Dir.pwd # 验证是否是 Git 仓库 unless Pindo::GitHandler.is_git_directory?(local_repo_dir: pindo_project_dir) raise Informative, "当前目录不是 Git 仓库" end # 创建任务列表 tasks = [] # 1. Git 提交任务 git_commit_task = Pindo::TaskSystem::GitCommitTask.new( pindo_project_dir, release_branch: @args_release_branch, ver_inc: @args_ver_inc, tag_type: @args_tag_type, tag_pre: @args_tag_pre ) tasks << git_commit_task # 2. Git 标签任务(依赖提交任务) git_tag_task = Pindo::TaskSystem::GitTagTask.new( pindo_project_dir, release_branch: @args_release_branch, ver_inc: @args_ver_inc, tag_type: @args_tag_type, tag_pre: @args_tag_pre ) git_tag_task.dependencies << git_commit_task.id tasks << git_tag_task # 添加到任务管理器并执行 task_manager = Pindo::TaskSystem::TaskManager.instance task_manager.clear_all tasks.each { |task| task_manager.add_task(task) } task_manager.start end |