5652: Merge branch 'master' into 5652-arvputget-silent-mode
[arvados.git] / services / api / Rakefile
1 #!/usr/bin/env rake
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 # Add your own tasks in files placed in lib/tasks ending in .rake,
7 # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
8
9 require File.expand_path('../config/application', __FILE__)
10
11 Server::Application.load_tasks
12
13 namespace :test do
14   task(:run).clear
15   # Copied from the definition in Rails 3.2.
16   # This may need to be updated if we upgrade Rails.
17   task :run do
18     errors = %w(test:units test:functionals test:integration test:tasks).collect do |task|
19       begin
20         Rake::Task[task].invoke
21         nil
22       rescue => e
23         { :task => task, :exception => e }
24       end
25     end.compact
26
27     if errors.any?
28       puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n")
29       abort
30     end
31   end
32 end
33
34 namespace :db do
35   namespace :structure do
36     task :dump do
37       require 'tempfile'
38       origfnm = File.expand_path('../db/structure.sql', __FILE__)
39       tmpfnm = Tempfile.new 'structure.sql', File.expand_path('..', origfnm)
40       copyright_done = false
41       begin
42         tmpfile = File.new tmpfnm, 'w'
43         origfile = File.new origfnm
44         origfile.each_line do |line|
45           if !copyright_done
46             if !/Copyright .* Arvados/.match(line)
47                tmpfile.write "-- Copyright (C) The Arvados Authors. All rights reserved.\n--\n-- SPDX-License-Identifier: AGPL-3.0\n\n"
48             end
49             copyright_done = true
50           end
51           if /^SET lock_timeout = 0;/ =~ line
52             # Avoid edit wars between versions that do/don't write this line.
53             next
54           elsif /^COMMENT ON EXTENSION/ =~ line
55             # Avoid warning message when loading:
56             # "structure.sql:22: ERROR:  must be owner of extension plpgsql"
57             tmpfile.write "-- "
58           end
59           tmpfile.write line
60         end
61         origfile.close
62         tmpfile.close
63         File.rename tmpfnm, origfnm
64         tmpfnm = false
65       ensure
66         File.unlink tmpfnm if tmpfnm
67       end
68     end
69   end
70 end
71
72 # Work around Rails3+PostgreSQL9.5 incompatibility (pg_dump used to
73 # accept -i as a no-op, but now it's not accepted at all).
74 module Kernel
75   alias_method :orig_backtick, :`
76   def `(*args) #`#` sorry, parsers
77     args[0].sub!(/\Apg_dump -i /, 'pg_dump ') rescue nil
78     orig_backtick(*args)
79   end
80 end