module ProjectId

Constants

VERSION

Public Class Methods

run!(argv) click to toggle source
# File lib/project_id.rb, line 6
def self.run!(argv)
        argv << '-h' if argv.empty?

        options = {}
        opt_parser =OptionParser.new do |opts|
                opts.banner = "Usage: project_id [options]"

                options[:key] = nil
                opts.on("-k", "--key [JIRA KEY]", String, "Project key in Jira") do |k|
                        if k.nil?
                                puts opt_parser
                        else
                                options[:key] = k
                        end
                end

                opts.on("-h", "--help", "Show help") do |h|
                        options[:help] = h
                        puts opt_parser
                        exit
                end

                opts.on("-v", "--version", "Show version") do |v|
                        options[:version] = v
                        puts ProjectId::VERSION
                        exit
                end
        end

        begin
                opt_parser.parse!(argv)

                if (options[:key])
                        begin
                                pkey = options[:key]
                                digest = Digest::SHA256.new

                                num = digest.hexdigest(pkey).hex % (10 ** 5)
                                new_id = num.abs

                                puts "#{pkey} => #{new_id}"

                        rescue
                                puts "[Error] Unable to generate project id"
                                exit 1
                        end
                end
        rescue OptionParser::InvalidOption, OptionParser::MissingArgument
                puts $!.to_s
                puts opt_parser
                exit
        end
end