#!/usr/bin/env ruby # Facets Rakefile require '4rake/4rake' #require 'project/project' #project = Project.load # # Redirect, extact tests and run tests # #task :prepare => [ :redirect, :extest, :test ] # # Generate facet/ redirection files # # Build facet redirect directory. This generates # a file for every lib core/ and more/ entry. # LIBDIR = 'lib' REDIR = 'facet' SRCDIR = 'facets' desc "create redirection facet/ lib" task :redirect do 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 # # Extract tests # #desc "ectract units tests" #task :extest do # project.extract(:files=>'lib/facets/**/*.rb') #end # # Run tests # #desc "run tests" #task :test do # project.test #end =begin # # Generate API documentation # # Rdoc w/ subtasks 'all', 'more' or 'core', # where teh deafult it 'all'. # desc "rdoc all libs" task :rdoc => [:rdoc_core, :rdoc_more] desc "rdoc core lib" task :rdoc_core do project.rdoc(YAML.load(<<-END)) title: Facets/CORE include: - 'lib/facets/core/**/*' - '[A-Z]*' output: doc/rdoc/core END end desc "rdoc more lib" task :rdoc_more do project.rdoc(YAML.load(<<-END)) title: Facets/MORE include: - 'lib/facets/more/**/*' - '[A-Z]*' output: doc/rdoc/more END end =end # # List core methods # # Output a list of all methods. # MTHPATH = "lib/facets/core" desc "output core method list" task :list do index_methods puts method_list_outline end private # Read in the facets directory and sort-out per class METHODS = {} def index_methods 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 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 =begin core: !!rdoc title: Facets/CORE template: jamis options: ['--all', '--inline-source'] source: repo include: - 'lib/facets/core/**/*' - '[A-Z]*' output: api/core more: !!rdoc title: Facets/MORE template: jamis options: ['--all', '--inline-source'] source: repo include: - 'lib/facets/more/**/*' - '[A-Z]*' output: api/more =end