Class: GitlabInternalEventsCli::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab_internal_events_cli/configuration.rb

Constant Summary collapse

DEFAULT_STAGES_URL =
'https://gitlab.com/gitlab-com/www-gitlab-com/-/raw/master/data/stages.yml'
DEFAULT_EVENT_SCHEMA_URL =
'https://gitlab.com/gitlab-org/gitlab/-/raw/master/config/events/schema.json'
DEFAULT_METRIC_SCHEMA_URL =
'https://gitlab.com/gitlab-org/gitlab/-/raw/master/config/metrics/schema/base.json'
DEFAULT_FEATURE_CATEGORIES_URL =
'https://gitlab.com/gitlab-org/gitlab/-/raw/master/config/feature_categories.yml'
DEFAULT_VERSION_URL =
'https://gitlab.com/gitlab-org/gitlab/-/raw/master/VERSION'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 26

def initialize
  @project_root = Dir.pwd
  @event_paths = [
    'config/events/*.yml',
    'ee/config/events/*.yml'
  ]
  @metric_paths = [
    'config/metrics/counts_all/*.yml',
    'config/metrics/counts_7d/*.yml',
    'config/metrics/counts_28d/*.yml',
    'ee/config/metrics/counts_all/*.yml',
    'ee/config/metrics/counts_7d/*.yml',
    'ee/config/metrics/counts_28d/*.yml'
  ]
  @feature_categories_path = 'config/feature_categories.yml'
  @feature_categories_url = DEFAULT_FEATURE_CATEGORIES_URL
  @event_schema_url = DEFAULT_EVENT_SCHEMA_URL
  @metric_schema_url = DEFAULT_METRIC_SCHEMA_URL
  @stages_url = DEFAULT_STAGES_URL
  @python_filepaths = [
    'poetry.lock',
    'pyproject.toml',
    '.python-version',
    'requirements.txt'
  ]
end

Instance Attribute Details

#event_pathsObject

Returns the value of attribute event_paths.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def event_paths
  @event_paths
end

#event_schema_urlObject

Returns the value of attribute event_schema_url.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def event_schema_url
  @event_schema_url
end

#feature_categories_pathObject

Returns the value of attribute feature_categories_path.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def feature_categories_path
  @feature_categories_path
end

#feature_categories_urlObject

Returns the value of attribute feature_categories_url.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def feature_categories_url
  @feature_categories_url
end

#metric_pathsObject

Returns the value of attribute metric_paths.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def metric_paths
  @metric_paths
end

#metric_schema_urlObject

Returns the value of attribute metric_schema_url.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def metric_schema_url
  @metric_schema_url
end

#milestoneObject



53
54
55
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 53

def milestone
  @milestone ||= milestone_from_version_file || milestone_from_remote || 'TODO'
end

#project_rootObject

Returns the value of attribute project_root.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def project_root
  @project_root
end

#stages_urlObject

Returns the value of attribute stages_url.



16
17
18
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 16

def stages_url
  @stages_url
end

Instance Method Details

#absolute_path(relative_path) ⇒ Object



65
66
67
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 65

def absolute_path(relative_path)
  File.join(project_root, relative_path)
end

#load_from_file(config_path = nil) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 69

def load_from_file(config_path = nil)
  config_path ||= File.join(project_root, '.gitlab_internal_events_cli.yml')
  return unless File.exist?(config_path)

  config = YAML.safe_load_file(config_path, symbolize_names: true)
  apply_config(config)
end

#python_project?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 77

def python_project?
  @python_filepaths.any? { |f| File.exist?(absolute_path(f)) }
end

#resolve_event_pathsObject



57
58
59
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 57

def resolve_event_paths
  event_paths.flat_map { |pattern| Dir[File.join(project_root, pattern)] }
end

#resolve_metric_pathsObject



61
62
63
# File 'lib/gitlab_internal_events_cli/configuration.rb', line 61

def resolve_metric_paths
  metric_paths.flat_map { |pattern| Dir[File.join(project_root, pattern)] }
end