Class: Extension::Models::Type

Inherits:
Object
  • Object
show all
Defined in:
lib/project_types/extension/models/type.rb

Constant Summary collapse

TYPES_PATH =
%w(lib project_types extension models types *.rb)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.inherited(klass) ⇒ Object



14
15
16
17
18
# File 'lib/project_types/extension/models/type.rb', line 14

def inherited(klass)
  super
  @all_extension_types ||= []
  @all_extension_types << klass
end

.load_allObject



9
10
11
12
# File 'lib/project_types/extension/models/type.rb', line 9

def load_all
  return unless @all_extension_types.nil? || @all_extension_types.empty?
  Dir.glob(File.join(ShopifyCli::ROOT, TYPES_PATH)).map { |file_path| load(file_path) }
end

.load_type(identifier) ⇒ Object



32
33
34
# File 'lib/project_types/extension/models/type.rb', line 32

def load_type(identifier)
  repository[identifier]
end

.repositoryObject



24
25
26
27
28
29
30
# File 'lib/project_types/extension/models/type.rb', line 24

def repository
  load_all if @all_extension_types.empty?

  @repository ||= @all_extension_types.map(&:new).each_with_object({}) do |type, hash|
    hash[type.identifier] = type
  end
end

.valid?(identifier) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/project_types/extension/models/type.rb', line 20

def valid?(identifier)
  repository.key?(identifier)
end

Instance Method Details

#config(_context) ⇒ Object

Raises:

  • (NotImplementedError)


53
54
55
# File 'lib/project_types/extension/models/type.rb', line 53

def config(_context)
  raise NotImplementedError, "'#{__method__}' must be implemented for #{self.class}"
end

#create(_directory_name, _context) ⇒ Object

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/project_types/extension/models/type.rb', line 57

def create(_directory_name, _context)
  raise NotImplementedError, "'#{__method__}' must be implemented for #{self.class}"
end

#extension_context(_context) ⇒ Object



61
62
63
# File 'lib/project_types/extension/models/type.rb', line 61

def extension_context(_context)
  nil
end

#graphql_identifierObject



41
42
43
# File 'lib/project_types/extension/models/type.rb', line 41

def graphql_identifier
  identifier
end

#identifierObject



37
38
39
# File 'lib/project_types/extension/models/type.rb', line 37

def identifier
  self.class::IDENTIFIER
end

#nameObject



45
46
47
# File 'lib/project_types/extension/models/type.rb', line 45

def name
  message('name')
end

#taglineObject



49
50
51
# File 'lib/project_types/extension/models/type.rb', line 49

def tagline
  message('tagline') || ""
end

#valid_extension_contextsObject



65
66
67
# File 'lib/project_types/extension/models/type.rb', line 65

def valid_extension_contexts
  []
end