Sha256: c727b2b7218ef7b99f741cd5a92c5382eb7c9741fc072f9ea8c81a67163b518c

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

require "yaml"

module Lono::Builder
  class Template < Lono::CLI::Base
    extend Memoist

    def run
      check_blueprint_exist!
      data = dsl.run # The generator strategy classes write templates to disk
      write_output(data)
    end

  private
    def check_blueprint_exist!
      return if @blueprint.exist?
      logger.error "ERROR: Blueprint #{@blueprint.name} not found.".color(:red)
      logger.error <<~EOL
        Searched:

            app/blueprints
            vendor/blueprints

        Are you sure it exists? To check, you can run:

            lono list

      EOL
      exit 1
    end

    def write_output(data)
      path = @blueprint.output_path
      ensure_parent_dir(path)
      text = YAML.dump(data)
      IO.write(path, text)

      Lono::Yamler::Validator.new(path).validate!

      unless @options[:quiet]
        pretty_path = path.sub("#{Lono.root}/",'')
        logger.info "    #{pretty_path}"
      end
    end

    def ensure_parent_dir(path)
      dir = File.dirname(path)
      FileUtils.mkdir_p(dir) unless File.exist?(dir)
    end

    def dsl
      Dsl.new(@options)
    end
    memoize :dsl
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lono-8.0.0.pre.rc3 lib/lono/builder/template.rb
lono-8.0.0.pre.rc2 lib/lono/builder/template.rb
lono-8.0.0.pre.rc1 lib/lono/builder/template.rb