Class: GitLab::Monitor::CLI::GIT
- Inherits:
-
Object
- Object
- GitLab::Monitor::CLI::GIT
- Defined in:
- lib/gitlab_monitor/cli.rb
Overview
Git runner.
Takes something that behaves like ARGV with optparse included as an argument.
It will take 2 positional arguments once parsed, the first one for the repository location, the optional second one is an IO like object to write to
Constant Summary collapse
- COMMAND_NAME =
"git".freeze
Instance Attribute Summary collapse
-
#labels ⇒ Object
readonly
Returns the value of attribute labels.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
-
#target ⇒ Object
readonly
Returns the value of attribute target.
Instance Method Summary collapse
- #help ⇒ Object
-
#initialize(args) ⇒ GIT
constructor
A new instance of GIT.
- #options(args) ⇒ Object
- #run ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize(args) ⇒ GIT
Returns a new instance of GIT.
42 43 44 45 46 47 48 |
# File 'lib/gitlab_monitor/cli.rb', line 42 def initialize(args) @options = (args) args = @options.parse! @source = args.shift @target = args.shift || STDOUT @labels ||= {} end |
Instance Attribute Details
#labels ⇒ Object (readonly)
Returns the value of attribute labels.
40 41 42 |
# File 'lib/gitlab_monitor/cli.rb', line 40 def labels @labels end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
40 41 42 |
# File 'lib/gitlab_monitor/cli.rb', line 40 def source @source end |
#target ⇒ Object (readonly)
Returns the value of attribute target.
40 41 42 |
# File 'lib/gitlab_monitor/cli.rb', line 40 def target @target end |
Instance Method Details
#help ⇒ Object
69 70 71 |
# File 'lib/gitlab_monitor/cli.rb', line 69 def help @options.help end |
#options(args) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/gitlab_monitor/cli.rb', line 59 def (args) args. do |opts| opts. = "Usage: #{EXECUTABLE_NAME} #{COMMAND_NAME} [options] repository_path [target_file]" opts.on("-l", "--labels=key=value,key2=value2", "Labels to append to the metrics") do |val| @labels = val.split(",").map { |value| value.split("=").tap { |aa| aa[0] = aa[0].to_sym } }.to_h end opts end end |
#run ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/gitlab_monitor/cli.rb', line 50 def run validate! ::GitLab::Monitor::GitProber.new(labels: labels, source: source) .probe_pull .probe_push .write_to(@target) end |
#validate! ⇒ Object
73 74 75 76 |
# File 'lib/gitlab_monitor/cli.rb', line 73 def validate! fail InvalidCLICommand.new(help) if @source.nil? fail InvalidCLICommand.new("Can't find repository #{@source}\n\n#{help}") unless File.directory? @source end |