Class: Pindo::Command::Utils::Tag

Inherits:
Pindo::Command::Utils show all
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

#args_help_flag

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Pindo::Command

run, use_cache?, #validate!

Methods included from Funlog::Mixin

#pindo_log_instance

Methods included from Pindoconfig::Mixin

#pindo_single_config

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, which, which!

Constructor Details

#initialize(argv) ⇒ Tag

Returns a new instance of Tag.



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/pindo/command/utils/tag.rb', line 49

def initialize(argv)
  @mode = argv.option('mode') || 'minor'
  @force_retag = argv.flag?('retag', false)
  @custom_tag = argv.option('tag')

  # 如果指定了自定义tag,不需要验证mode
  unless @custom_tag || ['major', 'minor', 'patch'].include?(@mode)
    raise Informative, "mode参数必须是 major, minor 或 patch"
  end

  super
  @additional_args = argv.remainder!
end

Class Method Details

.optionsObject

命令的选项列表



41
42
43
44
45
46
47
# File 'lib/pindo/command/utils/tag.rb', line 41

def self.options
  [
    ['--mode',   '指定版本号增加模式(major/minor/patch),默认minor'],
    ['--retag',  '强制重新打最新的tag'],
    ['--tag',    '直接指定tag版本号(如 1.1.3),会自动添加v前缀']
  ].concat(super)
end

Instance Method Details

#runObject



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/pindo/command/utils/tag.rb', line 63

def run
  current_project_dir = Dir.pwd

  GitRepoHelper.share_instance.create_and_push_tag(
    project_dir: current_project_dir,
    mode: @mode,
    force_retag: @force_retag,
    custom_tag: @custom_tag,
    release_branch: 'master'
  )
end