class Ronin::Gen::Generators::Library

Generates a completely new Ronin library.

Constants

COMMANDS_DIR

Directory to store command classes in

DEFAULT_LICENSE

Default license of the library

GENERATORS_DIR

Directory to store generator classes in

Public Instance Methods

generate() click to toggle source

Generates top-level files.

# File lib/ronin/gen/generators/library.rb, line 94
def generate
  run 'git', 'init' if git?

  template 'Gemfile.erb', 'Gemfile'
  cp 'Rakefile'

  template 'name.gemspec.erb', "#{@name}.gemspec"
  template 'gemspec.yml.erb', 'gemspec.yml'

  cp '.gitignore' if git?
  cp '.rspec'
  cp '.document'
  template '.yardopts.erb', '.yardopts'

  cp 'COPYING.txt'

  template 'ChangeLog.md.erb', 'ChangeLog.md'
  template 'README.md.erb', 'README.md'

  mkdir 'bin'

  template File.join('bin','ronin-name.erb'), @bin_script
  chmod 0755, @bin_script

  mkdir_p File.join('lib','ronin',@dir_name)

  template File.join('lib','ronin','name.rb.erb'),
           File.join('lib','ronin',"#{@dir_name}.rb")

  template File.join('lib','ronin','name','version.rb.erb'),
           File.join('lib','ronin',@dir_name,'version.rb')

  mkdir 'data'

  mkdir 'spec'
  template File.join('spec','spec_helper.rb.erb'),
           File.join('spec','spec_helper.rb')

  mkdir File.join('spec',@dir_name)
  template File.join('spec','name','name_spec.rb.erb'),
           File.join('spec',@dir_name,"#{@dir_name}_spec.rb")

  generate_commands   unless @commands.empty?
  generate_generators unless @generators.empty?

  if git?
    run 'git', 'add', '.'
    run 'git', 'commit', '-m', 'Initial commit.'
  end
end
generate_commands() click to toggle source

Generates any optional commands for the library.

# File lib/ronin/gen/generators/library.rb, line 148
def generate_commands
  mkdir COMMANDS_DIR

  @commands.each do |name|
    @command_file  = name.downcase.gsub(/[_-]+/,'_')
    @command_class = @command_file.to_const_string

    template File.join('bin','ronin-command.erb'),
             File.join('bin','ronin-' + @command_file.gsub('_','-'))

    template File.join(COMMANDS_DIR,'command.rb.erb'),
             File.join(COMMANDS_DIR,"#{@command_file}.rb")
  end
end
generate_generators() click to toggle source

Generates any optional generators for the library.

# File lib/ronin/gen/generators/library.rb, line 166
def generate_generators
  mkdir GENERATORS_DIR

  @generators.each do |name|
    @generator_file  = name.downcase.gsub(/[_-]+/,'_')
    @generator_class = @generator_file.to_const_string

    template File.join(GENERATORS_DIR,'generator.rb.erb'),
             File.join(GENERATORS_DIR,"#{@generator_file}.rb")
  end
end
setup() click to toggle source

Sets up the library generator.

Calls superclass method
# File lib/ronin/gen/generators/library.rb, line 73
def setup
  super

  @name      ||= File.basename(@path)
  @dir_name    = @name.gsub(/^ronin[-_]/,'')
  @module_name = @dir_name.capitalize

  @title = @name.split(/[\s_-]+/).map { |word|
    word.capitalize
  }.join(' ')

  @license = DEFAULT_LICENSE

  @safe_email = @email.gsub(/\s*@\s*/,' at ')

  @bin_script = File.join('bin',"ronin-#{@dir_name}")
end