class GitlabAwesomeRelease::CLI
Constants
- DEFAULT_VERSION_FORMAT
- GITLAB_API_DESCRIPTION
- GITLAB_API_PRIVATE_TOKEN_DESCRIPTION
- GITLAB_API_PROJECT_NAME
- GITLAB_ENV_FILES
- LOG_LEVEL_DESCRIPTION
Public Instance Methods
create_latest_note()
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 53 def create_latest_note Dotenv.load(*GITLAB_ENV_FILES) project = create_project tag_names = project.release_tag_names changelog = if tag_names.count >= 2 project.generate_change_log(tag_names[-2], tag_names[-1]) elsif tag_names.count == 1 project.generate_change_log(tag_names[0], tag_names[0]) end write_changelog(changelog) if changelog @logger.info "finish!" end
create_note()
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 31 def create_note Dotenv.load(*GITLAB_ENV_FILES) project = create_project tag_names = project.release_tag_names oldest_tag = option_or_env(:from_tag) || tag_names.first newest_tag = option_or_env(:to_tag) || tag_names.last changelog = project.generate_change_log(oldest_tag, newest_tag) write_changelog(changelog) @logger.info "finish!" end
marking()
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 79 def marking Dotenv.load(*GITLAB_ENV_FILES) from_tag = option_or_env!(:from_tag) to_tag = option_or_env!(:to_tag) label = option_or_env(:label) || to_tag project = create_project project.merge_request_iids_between(from_tag, to_tag).each do |iid| mr = project.merge_request(iid) project.add_merge_request_label(mr, label) if mr end @logger.info "finish!" end
version()
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 18 def version puts GitlabAwesomeRelease::VERSION end
Private Instance Methods
create_project()
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 113 def create_project gitlab_api_endpoint = option_or_env!(:gitlab_api_endpoint) gitlab_api_private_token = option_or_env!(:gitlab_api_private_token) gitlab_project_name = option_or_env!(:gitlab_project_name) allow_tag_format = option_or_env(:allow_tag_format, DEFAULT_VERSION_FORMAT) @logger = Logger.new(STDOUT) @logger.level = logger_level(option_or_env(:log_level)) @logger.formatter = proc {|severity, datetime, _progname, message| "[#{datetime}] #{severity} #{message}\n" } Gitlab::Request.logger = @logger GitlabAwesomeRelease::Project.new( api_endpoint: gitlab_api_endpoint, private_token: gitlab_api_private_token, project_name: gitlab_project_name, allow_tag_format: /#{allow_tag_format}/, logger: @logger, ) end
logger_level(log_level)
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 147 def logger_level(log_level) case log_level.to_sym when :debug Logger::DEBUG when :error Logger::ERROR when :fatal Logger::FATAL when :info Logger::INFO when :unknown Logger::UNKNOWN when :warn Logger::WARN else raise "Unknown log_level: #{log_level}" end end
option_or_env(name, default = nil)
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 97 def option_or_env(name, default = nil) upper_name = name.to_s.upcase return options[name] if options[name] && !options[name].to_s.empty? return ENV[upper_name] if ENV[upper_name] && !ENV[upper_name].empty? default end
option_or_env!(name)
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 105 def option_or_env!(name) value = option_or_env(name) return value if value puts "--#{name.to_s.tr("_", "-")} or #{name.to_s.upcase} is either required!" exit! end
write_changelog(changelog)
click to toggle source
# File lib/gitlab_awesome_release/cli.rb, line 135 def write_changelog(changelog) filename = option_or_env(:filename) if filename File.open(filename, "wb") do |f| f.write(changelog) end @logger.info "Write to #{filename}" else puts changelog end end