module Bauk::Gen

Constants

VERSION

Public Class Methods

config(generators = []) click to toggle source
# File lib/bauk/gen.rb, line 35
def self.config(generators = [])
  config = Bauk::Gen::Configs::Files.new.generate_config
  generators = parse_generators generators, config

  unless log.info?
    puts YAML.dump config
    return
  end

  config = {}
  Dir.chdir(config[:base_dir] || '.') do
    generators.each do |generator|
      config[generator] = load_generator(generator, config.deep_merge!(config[:generators]&.[](generator) || {})).config
    end
  end
  puts YAML.dump config
end
generate(generators = []) click to toggle source
# File lib/bauk/gen.rb, line 23
def self.generate(generators = [])
  config = Bauk::Gen::Configs::Files.new.generate_config
  log.debug "Using generated config: #{config}"
  generators = parse_generators generators, config

  Dir.chdir(config[:base_dir] || '.') do
    generators.each do |generator|
      load_generator(generator, config.deep_merge!(config[:generators]&.[](generator) || {})).generate
    end
  end
end
init(generators = []) click to toggle source
# File lib/bauk/gen.rb, line 53
def self.init(generators = [])
  generators = parse_generators generators
  if generators.empty?
    log.error "Adding default generator (You can specify init with a custom generator using the -g/--generator flag)"
    generators = ['bauk_gen']
  end
  generators.each do |generator|
    load_generator(generator, {}).init
  end
end
load_generator(module_name, config) click to toggle source
# File lib/bauk/gen.rb, line 94
def self.load_generator(module_name, config)
  parts = module_name.to_s.split(%r{-|/|::|\s+|_})
  require "#{parts.join('/').downcase}/generator"
  Object.const_get("#{parts.map(&:capitalize).join('::')}::Generator").new config
end
parse() click to toggle source
# File lib/bauk/gen.rb, line 64
def self.parse()
  generators = []
  Bauk::Utils::BaseParser.new(
    opts: lambda do |opts|
      opts.on('-c', '--config key[=val]', 'Override config items from the command-line') do |conf|
        # TODO
        raise "--config argument is not yet implemented"
      end
      opts.on('-g', '--generator [generator-module]', 'The generators to run') do |gen|
        generators << gen
      end
    end,
    generate: {
      aliases: %i[gen g],
      info: 'Run the generation',
      action: -> { generate generators }
    },
    config: {
      aliases: %i[conf c],
      info: 'Dump the config. Add one verbose level to dump the fully generated config',
      action: -> { config generators }
    },
    init: {
      aliases: %i[i],
      info: 'Initialise the generator here with some basic examples',
      action: -> { init generators }
    }
  ).parse
end
parse_generators(generators = [], config = {}) click to toggle source
# File lib/bauk/gen.rb, line 15
def self.parse_generators(generators = [], config = {})
  if generators.empty?
    generators = config[:generators]&.keys || []
  end
  log.error "No generators found" if generators.empty?
  generators
end