Class: GitlabInternalEventsCli::Flows::MetricDefiner

Inherits:
Object
  • Object
show all
Includes:
Helpers, Text::MetricDefiner
Defined in:
lib/gitlab_internal_events_cli/flows/metric_definer.rb

Constant Summary collapse

STEPS =
[
  'New Metric',
  'Type',
  'Config',
  'Scope',
  'Description',
  'Defaults',
  'Group',
  'Categories',
  'URL',
  'Tiers',
  'Save files'
].freeze

Constants included from Text::MetricDefiner

Text::MetricDefiner::ALL_METRICS_EXIST_NOTICE, Text::MetricDefiner::DATABASE_INSTRUMENTATION_FILES_NEXT_STEPS, Text::MetricDefiner::DATABASE_METRIC_DESCRIPTION_INTRO, Text::MetricDefiner::DATABASE_METRIC_NAME_HELP, Text::MetricDefiner::DESCRIPTION_HELP, Text::MetricDefiner::EVENT_METRIC_DESCRIPTION_INTRO, Text::MetricDefiner::INSTRUMENTATION_CLASS_ERROR, Text::MetricDefiner::INSTRUMENTATION_CLASS_HELP, Text::MetricDefiner::INSTRUMENTATION_CLASS_INTRO, Text::MetricDefiner::NAME_CONFLICT_HELP, Text::MetricDefiner::NAME_ERROR, Text::MetricDefiner::NAME_FILTER_HELP, Text::MetricDefiner::NAME_LENGTH_HELP, Text::MetricDefiner::NAME_REQUIREMENT_REASONS, Text::MetricDefiner::OPERATION_INTRO

Constants included from Helpers::Formatting

Helpers::Formatting::DEFAULT_WINDOW_HEIGHT, Helpers::Formatting::DEFAULT_WINDOW_WIDTH

Constants included from Helpers

Helpers::NAME_REGEX

Constants included from Helpers::Files

Helpers::Files::MAX_FILENAME_LENGTH

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers::Formatting

#clear_format, #counter, #divider, #format_error, #format_heading, #format_help, #format_info, #format_prefix, #format_prompt, #format_selection, #format_subheader, #format_warning, #progress_bar

Methods included from Helpers

#feedback_notice, #milestone, #new_page!

Methods included from Helpers::ServicePingDashboards

#metric_exploration_group_path, #metric_trend_path

Methods included from Helpers::MetricOptions

#get_metric_options

Methods included from Helpers::EventOptions

#events_by_filepath, #generate_ai_event_suggestion, #generate_python_advice, #get_event_options

Methods included from Helpers::GroupOwnership

#find_categories, #find_section, #find_stage, #known_categories, #prompt_for_feature_categories, #prompt_for_group_ownership

Methods included from Helpers::Files

#absolute_path, #file_saved_message, #prompt_to_save_file, #write_to_file

Methods included from Helpers::CliInputs

#disableable_option, #disabled_format_callback, #filter_opts, #format_disabled_options_as_dividers, #input_optional_text, #input_opts, #input_required_text, #multiselect_opts, #prompt_for_array_selection, #prompt_for_text, #select_option_divider, #select_opts, #yes_no_opts

Constructor Details

#initialize(cli, starting_event = nil) ⇒ MetricDefiner

Returns a new instance of MetricDefiner.



33
34
35
36
37
38
# File 'lib/gitlab_internal_events_cli/flows/metric_definer.rb', line 33

def initialize(cli, starting_event = nil)
  @cli = cli
  @selected_event_paths = Array(starting_event)
  @metric = nil
  @selected_filters = nil
end

Instance Attribute Details

#cliObject (readonly)

Returns the value of attribute cli.



31
32
33
# File 'lib/gitlab_internal_events_cli/flows/metric_definer.rb', line 31

def cli
  @cli
end

Class Method Details

.schemaObject



10
11
12
13
14
15
# File 'lib/gitlab_internal_events_cli/flows/metric_definer.rb', line 10

def self.schema
  @schema ||= Helpers::SchemaLoader.load(
    GitlabInternalEventsCli.configuration.metric_schema_url,
    'metric'
  )
end

Instance Method Details

#runObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/gitlab_internal_events_cli/flows/metric_definer.rb', line 40

def run
  type = prompt_for_metric_type

  prompt_for_configuration(type)

  return unless metric

  metric.milestone = milestone
  prompt_for_description
  prompt_for_metric_name
  defaults = prompt_for_copying_event_properties
  prompt_for_product_group(defaults)
  prompt_for_product_categories(defaults)
  prompt_for_url(defaults)
  prompt_for_tier(defaults)
  outcome = create_metric_file
  prompt_for_next_steps(outcome)
end