Sha256: a6c0abd82c33c83369a2c0a04b4c24b2b5e620be29c5defa0871d06ef02c7241

Contents?: true

Size: 1.44 KB

Versions: 72

Compression:

Stored size: 1.44 KB

Contents

require 'rails/generators'
require 'fileutils'

module GovukPublishingComponents
  class ComponentGenerator < ::Rails::Generators::NamedBase
    source_root File.expand_path('../templates', __FILE__)

    def copy_component_files
      static = GovukPublishingComponents::Config.static

      @public_name = file_name.dasherize
      @component_prefix = static ? 'pub-c-' : 'app-c-'
      component_directory_name = GovukPublishingComponents::Config.component_directory_name

      template_dir = "app/views/#{component_directory_name}/"
      docs_dir = "app/views/#{component_directory_name}/docs/"
      scss_dir = "app/assets/stylesheets/#{component_directory_name.dasherize}/"

      create_directory_if_not_exists(template_dir)
      create_directory_if_not_exists(docs_dir)
      create_directory_if_not_exists(scss_dir)

      if static
        template '_component.html.erb', "#{template_dir}#{@public_name.underscore}.raw.html.erb"
        template 'component.yml.erb', "#{docs_dir}#{@public_name.underscore}.yml"
      else
        template '_component.html.erb', "#{template_dir}_#{@public_name}.html.erb"
        template 'component.yml.erb', "#{docs_dir}#{@public_name}.yml"
      end

      template '_component.scss', "#{scss_dir}_#{@public_name}.scss"
    end

  private

    def create_directory_if_not_exists(dir)
      if not File.directory?(dir)
        puts("Directory #{dir} not found, creating")
        FileUtils::mkdir_p dir
      end
    end
  end
end

Version data entries

72 entries across 72 versions & 1 rubygems

Version Path
govuk_publishing_components-9.2.3 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.2.2 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.2.1 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.2.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.1.1 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.1.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.0.1 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-9.0.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-8.2.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-8.1.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-8.0.1 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-8.0.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-7.3.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-7.2.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-7.1.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-7.0.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-6.7.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-6.6.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-6.5.0 lib/generators/govuk_publishing_components/component_generator.rb
govuk_publishing_components-6.4.0 lib/generators/govuk_publishing_components/component_generator.rb