#!/usr/bin/env ruby # # Script for quick opening non-NetBeans Ruby project in NetBeans. # # Usage: nb_ruby_project [--rails] # # See the blog entry for more: # http://blogs.sun.com/martink/entry/open_simply_whatever_non_netbeans # # ========== User configuration ============ NB_BIN = '/path/to/netbeans/bin/netbeans' # NB_USER_DIR = '/path/to/optional/userdir' # ========================================== is_rails = ARGV.delete('--rails') if ARGV.empty? puts "Usage: #{File.basename(__FILE__)} [--rails]" exit 1 end prj_dir = File.expand_path(ARGV[0]) raise "#{prj_dir} must be a valid directory" unless File.directory?(prj_dir) prj_name = File.basename(prj_dir) # ========== NetBeans metadata start ========== prj_xml = if is_rails < org.netbeans.modules.ruby.railsprojects #{prj_name} DOC else < org.netbeans.modules.ruby.rubyproject #{prj_name} DOC end prj_props = <\" to agree: " exit 2 unless $stdin.gets.chomp == 'y' Dir.mkdir(nbproject_path) dump = lambda do |f, content| File.open(File.join(nbproject_path, f), 'w') { |f| f.write(content) } end dump.call('project.xml', prj_xml) dump.call('project.properties', prj_props) puts 'Mentioned NetBeans metadata created' end # Open file in NetBeans, preferring Rakefile Dir.chdir(prj_dir) do |path| file = 'Rakefile' # prefer Rakefile file = Dir.new(path).find{|f| File.file?(f)} unless File.file?(file) if file puts "\nOpening '#{File.basename(file)}' in NetBeans..." user_dir_token = defined?(NB_USER_DIR) ? "--userdir '#{NB_USER_DIR}'" : '' system("#{NB_BIN} #{user_dir_token} --open '#{File.expand_path(file)}'") end end