Class: Dumbo::RakeTask
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Dumbo::RakeTask
- Defined in:
- lib/dumbo/rake_task.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #concatenate(lines, target) ⇒ Object
- #convert_template(file) ⇒ Object
-
#file_list ⇒ Object
source sql file list.
- #get_bindings(file) ⇒ Object
- #get_sql(file) ⇒ Object
-
#initialize(name = 'dumbo') ⇒ RakeTask
constructor
A new instance of RakeTask.
- #new_version(level = :patch) ⇒ Object
Constructor Details
#initialize(name = 'dumbo') ⇒ RakeTask
Returns a new instance of RakeTask.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/dumbo/rake_task.rb', line 16 def initialize(name = 'dumbo') @name = name namespace name do Dumbo::DbTask.new(:db) desc 'creates and installs extension' task all: [:src, Extension.file_name, :install] desc 'installs the extension' task :install do cmd = if ENV['DUMBO_USE_SUDO'] 'make clean && make && sudo make install' else 'make clean && make && make install' end system(cmd) end desc 'concatenates files' file Extension.file_name => file_list do |t| sql = t.prerequisites.map do |file| ["--source file #{file}"] + get_sql(file) + [' '] end.flatten concatenate sql, t.name end desc 'prepare source files' task :src do Dir.glob('src/**/*.erb').each do |file| src = convert_template(file) out = Pathname.new(file).sub_ext('') File.open(out.to_s, 'w') do |f| f.puts src.join("\n") end end end desc 'creates migration files for the last two versions' task :migrations do old_version, new_version = Extension.versions.last(2).map(&:to_s) if new_version ExtensionMigrator.new(Extension.name, old_version, new_version) .create end end desc 'upgrate .control file to a new version' task :new_version, :level do |t, args| args.with_defaults(level: 'patch') v = new_version(args[:level]) Extension.version!(v) Rake::Task["#{name}:all"].invoke end namespace :test do desc 'creates regression tests from specs and runs them' task regression: ['all', 'db:test:prepare'] do ENV['DUMBO_REGRESSION'] = 'true' FileUtils.mkdir_p('test/sql/') FileUtils.mkdir_p('test/expected/') RSpec::Core::RakeTask.new(:spec).run_task(false) if $?.success? test_files = Rake::FileList.new("test/sql/**/*.sql") out_files = test_files.pathmap("%{^test/sql/,test/expected/}X.out") out_files.each{|f| FileUtils.touch(f)} system('make installcheck &> /dev/null') out_files.pathmap("%{^test/expected/,results/}p").each do |f| FileUtils.cp(f,'test/expected/') File.delete(f) end system('make installcheck') else Dir.glob('test/*').each{|f| File.delete(f)} end end end end end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
14 15 16 |
# File 'lib/dumbo/rake_task.rb', line 14 def name @name end |
Instance Method Details
#concatenate(lines, target) ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/dumbo/rake_task.rb', line 113 def concatenate(lines, target) File.open(target, 'w') do |f| lines.each do |line| f.puts line unless line =~ DependencyResolver.depends_pattern end end end |
#convert_template(file) ⇒ Object
130 131 132 133 134 |
# File 'lib/dumbo/rake_task.rb', line 130 def convert_template(file) eruby = Erubis::Eruby.new(File.read(file)) bindigs = get_bindings(file) eruby.result(bindigs).split("\n") end |
#file_list ⇒ Object
source sql file list
109 110 111 |
# File 'lib/dumbo/rake_task.rb', line 109 def file_list DependencyResolver.new(Dir.glob('sql/**/*.{sql,erb}')).resolve end |
#get_bindings(file) ⇒ Object
136 137 138 |
# File 'lib/dumbo/rake_task.rb', line 136 def get_bindings(file) BindingLoader.new(file).load end |
#get_sql(file) ⇒ Object
121 122 123 124 125 126 127 128 |
# File 'lib/dumbo/rake_task.rb', line 121 def get_sql(file) ext = Pathname.new(file).extname if ext == '.erb' convert_template(file) else File.readlines(file) end end |
#new_version(level = :patch) ⇒ Object
104 105 106 |
# File 'lib/dumbo/rake_task.rb', line 104 def new_version(level = :patch) ExtensionVersion.new_from_string(Extension.version).bump(level).to_s end |