Sha256: 75a01124c6694a085502261cc133b54885205e2fa99fc74e4e2681fb756ae85e

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module Runbook
  class Installer < Thor::Group
    include Thor::Actions

    source_root File.join(
      File.dirname(__FILE__),
      "generators",
      "project",
    )

    add_runtime_options!
    check_unknown_options!

    def create_runbookfile
      template(
        "templates/Runbookfile.tt",
        "Runbookfile",
      )
    end

    def create_runbooks_directory
      target = "runbooks"
      empty_directory(target)
      _keep_dir(target)
    end

    def create_lib_directory
      dirs = [
        "lib",
        "runbook",
      ]
      target = File.join(*dirs)

      empty_directory(target)
      _keep_dir(target)
    end

    def create_extensions_directory
      dirs = [
        "lib",
        "runbook",
        "extensions",
      ]
      target = File.join(*dirs)

      empty_directory(target)
      _keep_dir(target)
    end

    def create_generators_directory
      dirs = [
        "lib",
        "runbook",
        "generators",
      ]
      target = File.join(*dirs)

      empty_directory(target)
      _keep_dir(target)
    end

    def runbook_installation_overview
      msg = [
        "",
        "Runbook was successfully installed",
        "Add runbooks to the `runbooks` directory.",
        "Add shared code to `lib/runbook`.",
        "Execute runbooks using `bundle exec runbook exec <RUNBOOK_PATH>`",
        "from your project root.",
        "\n",
      ]

      say(msg.join("\n"))
    end

    private

    def _keep_dir(dir)
      create_file(
        File.join(dir, ".keep"),
        verbose: false,
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
runbook-0.13.0 lib/runbook/installer.rb