class MapTool::Tag

Usage

Constants

TAG_FILE

Attributes

name[RW]
stage[RW]
suffix[RW]
version[RW]

Public Class Methods

new(argv) click to toggle source

初始化

Calls superclass method
# File lib/maptool/tag/tag.rb, line 39
def initialize(argv)
    super
    self.version = argv.option('version')
    self.stage = argv.option('stage')
    self.suffix = argv.option('suffix')
end
options() click to toggle source
Calls superclass method MapTool::Command::options
# File lib/maptool/tag/tag.rb, line 25
def self.options
    [['--version', '版本号:x.xx.xxx,默认 1.00.000'],
    ['--stage', '用于区分是否正式: 开发阶段/提测后 (dev/release),默认 release'],
    ['--suffix', '可扩展的后缀']] + super
end

Public Instance Methods

commit_file() click to toggle source
# File lib/maptool/tag/tag.rb, line 81
def commit_file
    puts "update #{TAG_FILE}".green
    localChanges = !(`git stash` =~ /No local changes to save/)
    self.write_file
    `git add .`
    `git commit -m "update #{TAG_FILE}"`
    `git push`
    `git stash pop` if localChanges
end
commit_tag() click to toggle source
# File lib/maptool/tag/tag.rb, line 100
def commit_tag
    tag = "#{self.name}-#{self.version}-"
    tag << "#{self.stage}-" if self.stage && self.stage.size > 0
    tag << Time.now.strftime("%Y%m%d%H%M")
    tag << "-#{self.suffix}" if self.suffix && self.suffix.size > 0
    puts "build tag #{tag}".green
    system("yjcocoa git tag --add=#{tag}")
end
read_file() click to toggle source
# File lib/maptool/tag/tag.rb, line 73
def read_file
    hash = JSON.parse(File.read(TAG_FILE))
    self.name = hash["name"]
    self.version = hash["version"] unless self.version
    self.stage = hash["stage"] unless self.stage
    self.suffix = hash["suffix"] unless self.suffix
end
run() click to toggle source
# File lib/maptool/tag/tag.rb, line 59
def run
    if File.exist?(TAG_FILE) # 文件存在
        save = self.version || self.stage || self.suffix
        self.read_file
        self.commit_file if save
    else
        self.name = File.basename(Dir.pwd)
        self.version = "1.00.000" unless self.version
        self.stage = "release" unless self.stage
        self.commit_file
    end
    self.commit_tag
end
validate!() click to toggle source

businrss

Calls superclass method
# File lib/maptool/tag/tag.rb, line 47
def validate!
    super
    unless File.exist?('.git')
        puts "需在项目根目录执行".red
        self.banner!
    end
    if self.version && self.version.size < 8 #x.xx.xxx
        puts "版本号 #{self.version} 不符合规范 x.xx.xxx".red
        self.banner!
    end
end
write_file() click to toggle source
# File lib/maptool/tag/tag.rb, line 91
def write_file
    params = {}
    params["name"] = self.name
    params["version"] = self.version
    params["stage"] = self.stage
    params["suffix"] = self.suffix
    File.write(TAG_FILE, JSON.pretty_generate(params))
end