Rake by default imports all .rake files in the rakelib dir, so we can use that rather than doing our own import loop.
45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
def run_pylint(system, report_dir, flags='')
|
|
apps = Dir["#{system}", "#{system}/djangoapps/*", "#{system}/lib/*"].map do |app|
|
|
File.basename(app)
|
|
end.select do |app|
|
|
app !=~ /.pyc$/
|
|
end.map do |app|
|
|
if app =~ /.py$/
|
|
app.gsub('.py', '')
|
|
else
|
|
app
|
|
end
|
|
end
|
|
|
|
pythonpath_prefix = "PYTHONPATH=#{system}:#{system}/djangoapps:#{system}/lib:common/djangoapps:common/lib"
|
|
sh("#{pythonpath_prefix} pylint #{flags} -f parseable #{apps.join(' ')} | tee #{report_dir}/pylint.report")
|
|
end
|
|
|
|
|
|
[:lms, :cms, :common].each do |system|
|
|
report_dir = report_dir_path(system)
|
|
directory report_dir
|
|
|
|
desc "Run pep8 on all #{system} code"
|
|
task "pep8_#{system}" => [report_dir, :install_python_prereqs] do
|
|
sh("pep8 #{system} | tee #{report_dir}/pep8.report")
|
|
end
|
|
task :pep8 => "pep8_#{system}"
|
|
|
|
desc "Run pylint on all #{system} code"
|
|
task "pylint_#{system}" => [report_dir, :install_python_prereqs] do
|
|
run_pylint(system, report_dir)
|
|
end
|
|
namespace "pylint_#{system}" do
|
|
desc "Run pylint checking for errors only, and aborting if there are any"
|
|
task :errors do
|
|
run_pylint(system, report_dir, '-E')
|
|
end
|
|
end
|
|
namespace :pylint do
|
|
task :errors => "pylint_#{system}:errors"
|
|
end
|
|
|
|
task :pylint => "pylint_#{system}"
|
|
|
|
end |