#!/usr/bin/env ruby require './lib/facets/core/file/self/read_list' #DATPATH = "data/facets" #ETCPATH = "conf/facets" #REQPATH = "facets/core" #GENPATH = "lib/facets/core" # REAP doesn't accept a default. Should it? #task :default => [ :tasks ] # THIS IS WHAT IT DOES BY DEFAULT. # # Three stages to release. # desc %{First stage (redirect,extest,test)} task '1stage' => [ :redirect, :extest, :test ] desc %{Second stage (rdoc-core,rdoc-more,package)} task '2stage' => [ :'rdoc-core', :'rdoc-more', :package ] desc %{Final stage (publish,release)} task '3stage' => [ :puplish, :release ] # # Generate facet/ redirection folder. # LIBDIR = 'lib' REDIR = 'facet' SRCDIR = 'facets' desc %{Build facet redirect directory} task :redirect do #puts "Creating redirection folder #{REDIR}/ ..." count = 0 dest = File.join( LIBDIR, REDIR ) FileUtils.rm_r(dest) if File.directory?(dest) Dir.chdir( LIBDIR ) do ['core','more'].each{ |d| from = File.join( SRCDIR, d ) files = Dir.glob( File.join( from, '**/*.rb' ) ) files.each { |e| re = Regexp.new( Regexp.escape( from + '/' ) ) link = e.sub( re, 'facet/') FileUtils.mkdir_p( File.dirname( link ) ) File.open( link, "w+" ) { |w| w << "require '#{e}'" } count += 1 } } end puts "Created #{count} redirection files in #{REDIR}/ folder." end # # Read in the facets directory and sort-out per class # Methods = {} MTHPATH = "lib/facets/core" task :index_methods do Dir.chdir(MTHPATH) do dg = Dir.glob('*/**/*.rb') dg.each { |f| klass, *meth= f.split('/') Methods[ klass ] ||= [] Methods[ klass ] << "#{meth.join('/').chomp('.rb')}" } Methods.keys.each { |k| Methods[k].sort! } end end # # List Methods # desc %{Output a list of all methods} task :list => [ :index_methods ] do puts method_list_outline end # # Make sure there are no remarked test comments. # #desc "Check for open comment tests" #task :testchk do # system %q{grep -r ^#=begin\ test ./lib} #end # # Save method index to file in yaml format # # desc %{Generate method index file} # task :index => [ :methods ] do # print "Creating method index... " # loc = File.join( DATPATH, 'index.yml' ) # File.open( loc, 'w' ) { |f| # f << Methods.to_yaml # } # puts "[done]" # end # # Create per class feature files # # desc %Q{Generate per-class feature files} # task :class => [:methods ] do # print "Creating per class files... " # # index = Methods # noauto = File.read_list( File.join( ETCPATH, 'noauto' ) ) # allfiles = index.collect{ |k,ms| ms.collect{ |m| "#{k}/#{m}" } }.flatten # full = calc_full(allfiles, noauto) # # index.each { |classname, method_files| # File.open( "#{GENPATH}/#{classname.downcase}.rb", 'w' ) { |f| # method_files.each { |rf| # mfn = "#{classname.downcase}/#{rf}" # if full.include?(mfn) # f << %Q{require '#{REQPATH}/#{mfn}'\n} # end # } # } # } # puts "[done]" # end # # HTML List MethodsFile.new( # # HEAD = <<-HERE # # # # # #
# HERE
#
# FOOT=<<-HERE
# 
# # # HERE # # desc %{generate method list html file} # task 'listHtml' => [ :scrape_methods ] do # s = HEAD + method_list_outline + FOOT # File.open('pub/www/methods.html', 'w') { |f| f << s } # end private # Support Methods # Create a nice text outline of the core methods. def method_list_outline s = '' Methods.keys.sort.each { |k| ms = Methods[k].collect{|m| m.gsub(%r{^self\/},'::')}.sort s << "#{k}:\n" ms.each { |m| s << " #{m}\n" } } s end # # Full set of require files (all files minus noauto and unsafe) # # def calc_full( allfiles, noauto ) # sf = allfiles.dup # noauto.each do |f| # if f.include?('*') # re = %r"#{f.gsub('*','.*')}" # sf.reject!{ |x| x =~ re } # elsif sf.include?(f) # sf.delete f # end # end # sf.sort # end