Skip to content

Commit

Permalink
auto add datafile tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
geraldb committed Apr 12, 2015
1 parent 72c2ce8 commit ae14e69
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 1 deletion.
31 changes: 30 additions & 1 deletion Rakefile
Expand Up @@ -27,7 +27,6 @@ require './scripts/stats'
require './scripts/standings'



## load database config from external file (easier to configure/change)
DB_HASH = YAML.load( ERB.new( File.read( './database.yml' )).result )
DB_CONFIG = DB_HASH[ 'default' ] ## for now just always use default section/entry
Expand Down Expand Up @@ -174,3 +173,33 @@ end
# SportDb.update!
# puts 'Done.'
# end

#### auto-add tasks via datafiles
require './scripts/builder'

datafiles = collect_datafiles()
datafiles.each do |datafile|
task_name = datafile.name.to_sym
task_deps = datafile.deps.each {|dep| dep.to_sym }

puts "adding task '#{datafile.name}' => #{datafile.deps.inspect}:"
puts " #{datafile.datasets.size} datasets, #{datafile.scripts.size} scripts"

desc "datafile #{task_name} (auto-task: #{datafile.datasets.size} datasets, #{datafile.scripts.size} scripts)"
task task_name => task_deps do
datafile.dump
# skip for now -- step 1: download
datafile.read # step 2: read in all datasets
datafile.calc # step 3: run all calc(ulations) scripts
end

task "debug_#{task_name}" do
puts ''
puts "=== debug: task #{task_name} depends on #{task_deps.inspect}:"
puts " #{datafile.datasets.size} datasets, #{datafile.scripts.size} scripts"
puts ''
datafile.dump
end

end

43 changes: 43 additions & 0 deletions scripts/builder.rb
@@ -0,0 +1,43 @@
# encoding: utf-8

####
## task builder for rake
## - reads in all datafiles and builds/generates rake tasks
##


require 'pp'


### 3rd party libs/gems
require 'textutils'
require 'datafile'


def collect_datafiles
puts "[debug] enter collect datafiles"

ary = []

files = Dir["./datafile/**/*.rb"]
files.each_with_index do |file,idx|
puts " [#{idx+1}/#{files.count}] try reading '#{file}'..."

builder = Datafile::BuilderEx.load_file( file )

datafiles = builder.datafiles
ary += datafiles

datafiles.each do |datafile|
puts "=== datafile '#{datafile.name}' => #{datafile.deps.inspect}:"
puts " #{datafile.datasets.size} datasets, #{datafile.scripts.size} scripts"
# datafile.dump
end
end
ary
end # method build_rake_tasks


if __FILE__ == $0
datafiles = collect_datafiles()
end

0 comments on commit ae14e69

Please sign in to comment.