require 'gli' require 'fileutils' module GLI class Scaffold def self.create_scaffold(root_dir,create_test_dir,create_ext_dir,project_name,commands,force=false,dry_run=false) dirs = [File.join(root_dir,project_name,'lib')] dirs << File.join(root_dir,project_name,'bin') dirs << File.join(root_dir,project_name,'test') if create_test_dir dirs << File.join(root_dir,project_name,'ext') if create_ext_dir if mkdirs(dirs,force,dry_run) mk_binfile(root_dir,create_ext_dir,force,dry_run,project_name,commands) mk_readme(root_dir,dry_run,project_name) mk_gemspec(root_dir,dry_run,project_name) mk_rakefile(root_dir,dry_run,project_name,create_test_dir) end end def self.mk_readme(root_dir,dry_run,project_name) return if dry_run File.open("#{root_dir}/#{project_name}/README.rdoc",'w') do |file| file << "= #{project_name}\n\n" file << "Describe your project here\n\n" file << ":include:#{project_name}.rdoc\n\n" end File.open("#{root_dir}/#{project_name}/#{project_name}.rdoc",'w') do |file| file << "= #{project_name}\n\n" file << "Generate this with\n #{project_name} rdoc\nAfter you have described your command line interface" end end def self.mk_gemspec(root_dir,dry_run,project_name) return if dry_run File.open("#{root_dir}/#{project_name}/#{project_name}.gemspec",'w') do |file| file.puts < :test EOS File.open("#{root_dir}/#{project_name}/test/tc_nothing.rb",'w') do |test_file| test_file.puts < :package\n" end end end def self.mk_binfile(root_dir,create_ext_dir,force,dry_run,project_name,commands) bin_file = File.join(root_dir,project_name,'bin',project_name) if !File.exist?(bin_file) || force if !dry_run File.open(bin_file,'w') do |file| file.chmod(0755) file.puts '#!/usr/bin/ruby' file.puts '$: << File.expand_path(File.dirname(__FILE__) + \'/../lib\')' file.puts '$: << File.expand_path(File.dirname(__FILE__) + \'/../ext\')' if create_ext_dir file.puts <