class ArethusaPluginGenerator::CLI

Constants

DIRECTORIES

Attributes

name[R]
namespace[R]

Public Class Methods

source_root() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 9
def self.source_root
  File.dirname(__FILE__)
end

Public Instance Methods

add_minification() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 81
def add_minification
  insert_into_file(gruntfile, after: /pluginFiles\(.*?core.*?\).*?\n/, force: false) do
    %[      #{name}: { files: pluginFiles('#{namespaced_name}') },\n]
  end
end
add_minification_task() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 87
def add_minification_task
  insert_into_file(gruntfile, after: /registerTask.*?minify.*?\n/, force: false) do
    %{    'uglify:#{name}',\n}
  end
end
add_module() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 71
def add_module
  insert_into_file(arethusa_main, before: /\n\]/, force: false) do
    ",\n  '#{namespaced_name}'"
  end
end
add_to_index() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 97
def add_to_index
  insert_into_file(index_file, after: /script.*?core.*?script>\n/) do
    %{  <script src="../dist/#{namespaced_name}.min.js"></script>\n}
  end
end
arethusa_main() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 77
def arethusa_main
  js_dir('arethusa.js')
end
commit_changes() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 140
def commit_changes
  message = %{"Add skeleton for #{namespaced_name}"}
  `git add -A`
  `git commit -m #{message}`
  sha = `git rev-parse --short HEAD`.chomp
  puts
  say_status(:commited, %(#{sha} #{message}))
end
create_directories() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 49
def create_directories
  DIRECTORIES.each { |dir| empty_directory(send(dir)) }
end
create_files() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 53
def create_files
  create_module
  create_service
  create_html_template
end
create_html_template() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 67
def create_html_template
  template('templates/html_template.tt', html_template_file)
end
create_module() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 59
def create_module
  template('templates/module.tt', js_dir("#{namespaced_name}.js"))
end
create_service() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 63
def create_service
  template('templates/service.tt', plugin_dir("#{name}.js"))
end
give_conf_instructions() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 107
      def give_conf_instructions
        text = <<-EOF
Now add your new #{name} plugin to a conf file and add a configuration for it.
It could look like this:

 "#{name}" : {
   "name" : "#{name}",
   "template" : "#{html_template_file.slice(/template.*/)}"
 }
        EOF
        puts text.lines.map { |line| "\t#{line}" }.join
      end
gruntfile() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 93
def gruntfile
  File.join(destination_root, 'Gruntfile.js')
end
html_template_file() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 128
def html_template_file
  template_dir("#{name}.html")
end
index_file() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 103
def index_file
  File.join(destination_root, 'app', 'index.html')
end
js_dir(file = '') click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 132
def js_dir(file = '')
  File.join(destination_root, 'app/js', file)
end
namespaced_name() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 44
def namespaced_name
  [namespace, name].compact.join('.')
end
new(name) click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 18
def new(name)
  @name = name
  @namespace = options[:namespace]

  create_directories
  create_files

  try('insert module into arethusa', :add_module)
  try('add minification routine', :add_minification)
  try('add minification task', :add_minification_task)
  try('add module to index.html', :add_to_index)

  commit_changes if options[:commit]

  puts
  say_status(:success, "Created #{namespaced_name}")
  give_conf_instructions
end
plugin_dir(file = '') click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 120
def plugin_dir(file = '')
  File.join(js_dir, namespaced_name, file)
end
temp_dir() click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 136
def temp_dir
  File.join(destination_root, 'app/templates')
end
template_dir(file = '') click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 124
def template_dir(file = '')
  File.join(temp_dir, namespaced_name, file)
end
try(message, method) click to toggle source
# File lib/arethusa_plugin_generator/cli.rb, line 38
def try(message, method)
  puts
  say_status('trying', "to #{message}...", :yellow)
  send(method)
end