Class: Antoinette::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/antoinette/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_routes ⇒ Object



69
70
71
72
73
74
75
# File 'lib/generators/antoinette/install_generator.rb', line 69

def add_routes
  route_content = <<~RUBY
    get "/antoinette", to: "antoinette/graph#show"
  RUBY

  route route_content
end

#copy_controller ⇒ Object



39
40
41
# File 'lib/generators/antoinette/install_generator.rb', line 39

def copy_controller
  copy_file "graph_controller.rb", "app/controllers/antoinette/graph_controller.rb"
end

#copy_elm_files ⇒ Object



26
27
28
29
# File 'lib/generators/antoinette/install_generator.rb', line 26

def copy_elm_files
  copy_file "BundleGraph.elm", "app/client/BundleGraph.elm"
  copy_file "Sankey.elm", "app/client/Sankey.elm"
end

#copy_view ⇒ Object



43
44
45
# File 'lib/generators/antoinette/install_generator.rb', line 43

def copy_view
  copy_file "show.html.erb", "app/views/antoinette/graph/show.html.erb"
end

#create_antoinette_binstub ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/generators/antoinette/install_generator.rb', line 47

def create_antoinette_binstub
  create_file "bin/antoinette", <<~RUBY
    #!/usr/bin/env ruby
    require_relative "../config/environment"
    Dry::CLI.new(Antoinette::CLI::Commands).call
  RUBY
  chmod "bin/antoinette", 0o755
end

#create_assets_directory ⇒ Object



56
57
58
# File 'lib/generators/antoinette/install_generator.rb', line 56

def create_assets_directory
  empty_directory "app/assets/javascripts/antoinette"
end

#create_client_directory ⇒ Object



22
23
24
# File 'lib/generators/antoinette/install_generator.rb', line 22

def create_client_directory
  empty_directory "app/client"
end

#create_config_file ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/generators/antoinette/install_generator.rb', line 13

def create_config_file
  create_file "config/antoinette.json", <<~JSON
    {
      "elm_path": "elm",
      "bundles": []
    }
  JSON
end

#install_elm_dependencies ⇒ Object



31
32
33
34
35
36
37
# File 'lib/generators/antoinette/install_generator.rb', line 31

def install_elm_dependencies
  say "Installing Elm dependencies..."
  run "elm install elm/browser"
  run "elm install elm/html"
  run "elm install elm/json"
  run "elm install elm/svg"
end

#show_post_install_message ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/generators/antoinette/install_generator.rb', line 77

def show_post_install_message
  say ""
  say "Antoinette has been installed!", :green
  say ""
  say "Next steps:"
  say "  1. Run `bin/antoinette config` to generate bundle configuration"
  say "  2. Run `bin/antoinette build` to compile Elm bundles"
  say ""
end

#update_gitignore ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/generators/antoinette/install_generator.rb', line 60

def update_gitignore
  gitignore_path = Rails.root.join(".gitignore")
  ignore_line = "app/assets/javascripts/antoinette/"

  if File.exist?(gitignore_path) && !File.read(gitignore_path).include?(ignore_line)
    append_to_file ".gitignore", "#{ignore_line}\n"
  end
end