Sha256: fffad4a367b401be62274d097c0be5017efe1359425e15b639b83974cce81181

Contents?: true

Size: 874 Bytes

Versions: 2

Compression:

Stored size: 874 Bytes

Contents

require_relative 'make_menu/color_string'
require_relative 'make_menu/menu'

require 'tty-screen'

module MakeMenu
  String.include MakeMenu::ColorString

  def self.run
    # Allows CTRL+C to return to the menu instead of exiting the script
    trap('SIGINT') { throw StandardError }

    makefile = ENV.fetch('MAKEFILE', './Makefile')

    if (menu_name = ENV.fetch('MENU', nil))
      require "./#{menu_name.downcase}_menu.rb"
      Object.const_get("#{menu_name.capitalize}Menu").new(makefile).run
    else
      MakeMenu::Menu.new(makefile).run
    end

  rescue LoadError, NameError => _e
    puts
    puts 'No customisation class found!'.red.bold
    puts
    puts 'Expected file:'
    puts "    ./#{menu_name.downcase}_menu.rb".cyan
    puts
    puts 'To define class:'
    puts "    #{menu_name.capitalize}Menu < MakeMenu::Menu".yellow
    puts
    exit 1
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
make_menu-0.1.1 lib/make_menu.rb
make_menu-0.1.0 lib/make_menu.rb