module Graphql::Generators::Core

Public Class Methods

included(base) click to toggle source
# File lib/generators/graphql/core.rb, line 7
def self.included(base)
  base.send(
    :class_option,
    :directory,
    type: :string,
    default: "app/graphql",
    desc: "Directory where generated files should be saved"
  )
end

Public Instance Methods

create_dir(dir) click to toggle source
# File lib/generators/graphql/core.rb, line 32
def create_dir(dir)
  empty_directory(dir)
  if !options[:skip_keeps]
    create_file("#{dir}/.keep")
  end
end
insert_root_type(type, name) click to toggle source
# File lib/generators/graphql/core.rb, line 17
def insert_root_type(type, name)
  log :add_root_type, type
  sentinel = /< GraphQL::Schema\s*\n/m

  in_root do
    if File.exist?(schema_file_path)
      inject_into_file schema_file_path, "  #{type}(Types::#{name})\n", after: sentinel, verbose: false, force: false
    end
  end
end
module_namespacing_when_supported() { || ... } click to toggle source
# File lib/generators/graphql/core.rb, line 39
def module_namespacing_when_supported
  if defined?(module_namespacing)
    module_namespacing { yield }
  else
    yield
  end
end
schema_file_path() click to toggle source
# File lib/generators/graphql/core.rb, line 28
def schema_file_path
  "#{options[:directory]}/#{schema_name.underscore}.rb"
end

Private Instance Methods

parent_name() click to toggle source
# File lib/generators/graphql/core.rb, line 59
def parent_name
  require File.expand_path("config/application", destination_root)
  if Rails.application.class.respond_to?(:module_parent_name)
    Rails.application.class.module_parent_name
  else
    Rails.application.class.parent_name
  end
end
schema_name() click to toggle source
# File lib/generators/graphql/core.rb, line 49
def schema_name
  @schema_name ||= begin
    if options[:schema]
      options[:schema]
    else
      "#{parent_name}Schema"
    end
  end
end