#!/usr/bin/env ruby require 'rubygems' require 'commander' program :name, 'commander' program :version, Commander::VERSION program :description, 'Commander utility program.' command :init do |c| c.syntax = 'commander init ' c.summary = 'Initialize a commander template' c.description = 'Initialize an empty file with a commander template, allowing extremely quick creation of commader executables.' c.example 'Create a new file with a commander template.', 'commander init ./bin/my_executable' c.when_called do |args, options| abort "Provide a filepath." if args.empty? name = ask 'Machine name of program: ' description = ask 'Describe your program: ' commands = ask 'List the sub-commands you wish to create: ', Array begin File.open(args.first, 'w') do |f| f.write <<-CODE #!/usr/bin/env ruby require 'rubygems' require 'commander' require '#{name}' program :name, '#{name}' program :version, #{name.camelcase}::VERSION program :description, '#{description}' CODE commands.each do |command| f.write <<-CODE command :#{command} do |c| c.syntax = '' c.description = '' c.example 'description', 'command example' c.option '--some-switch', 'Some switch that does something' c.when_called do |args, options| # Do something or c.when_called #{name.camelcase}::Commands::#{command.camelcase} end end CODE end end say "Initialized template in #{args.first}" rescue Exception => e abort e end end end