Do not ship VDB as part of default build / toy archive
The reason is that few people used it and those who did (or will)
are those who may want to hack on it. To make this easier when using
toy archive, we won't ship VDB in toy archive anymore and instead
we'll document on how to install it in VDB's `README.md`
def _display_tasks(tasks)
width = tasks.collect {|t| t.name_with_args.length}.max || 10
max_column = Rake.application.truncate_output? ? Rake.application.terminal_width - 'name'.size - width - 7 : nil
tasks.each do |t|
printf "%-#{width}s # %s\n",
t.name_with_args, max_column ? Rake.application.truncate(t.comment || '', max_column) : t.comment || ''
end
end
task :info do
puts 'Choose one of the following:'
puts
_display_tasks(Rake.application.tasks_in_scope(['info']))
end
namespace :info do
desc 'Dump environment variables and their values'
task :environment do
puts 'Environment variables'
ENV.each {|key, value| puts " #{key}=\"#{value}\""}
puts '---------------------'
end
desc 'Alias for task into:environment'
task :env => :environment
desc 'Dumps variables and their values'
task :variables do
puts "BUILD_DIR = #{BUILD_DIR}"
end
desc 'Show all available tasks'
task :tasks do
puts 'All tasks:'
puts
Rake.application.tasks.each {|t| puts t.name}
end
namespace :tasks do
desc 'Print all tasks that depends on given one'
task :dependents, :task do |t, args|
task_n = args[:task] || (error 'No task specified')
task = t.application.lookup(task_n)
puts "Task #{task_n} not defined. Forgot to call setup task?" unless task
puts "Tasks that depend on #{task_n}:"
t.application.tasks.each do |each_nm|
each = t.application[each_nm]
puts " #{each_nm}" if each.prerequisites.include? task_n
end
end
desc 'Print internal state of on given task'
task :inspect, :task do |t, args|
task_n = args[:task] || (error 'No task specified')
task = t.application.lookup(task_n)
if task
puts task.investigation
puts 'requisited by:'
task.application.tasks.each do |each_nm|
each = task.application[each_nm]
if each.prerequisites.include? task.name
puts " #{each_nm}"
end
end
puts
puts 'actions: '
task.actions.each do |a|
puts " #{a}"
end
else
puts "Task #{task_n} not defined. Forgot to call setup task?"
end
end
desc 'Print all prerequisites of given task topologically sorted'
task :'prereq-all', :task do |t, args|
task_n = args[:task] || (error 'No task specified')
task = t.application.lookup(task_n)
puts "task '#{task_n}'"
task.all_prerequisites_sorted.each {|prereq| puts " => #{prereq} "}
end
desc 'Show given task and its prerequisites, all tasks if task not specified.'
task :prereq, :task do |t, args|
task = args[:task] || nil
task ? (tasks = [t.application.lookup(task)]) : (tasks = t.application.tasks)
puts "task '#{task}'"
tasks.each do |t2|
puts t2.name
t2.prerequisites.each {|prereq| puts " => #{prereq} "}
end
end
end # namespace :'tasks'
end
namespace :info do
namespace :project do
desc 'Print project name'
task :name => :'setup:project' do
puts project.app_name
end
desc 'Print project version'
task :version => :'setup:project' do
puts project.app_version
end
end
desc 'Print current build name'
task :buildname => :'setup:project' do
puts BUILD_NAME
end
task :tasks => :'setup:tasks'
desc 'Print info about currently selected project'
task :project => :'setup:project' do
Rake::Stx::Configuration::Printer.new.visit(project)
end
desc 'Print project packages in topological order'
task :packages => 'setup:project' do
puts "project #{project.name} consists of:"
project.packages_and_application.each do |pkg|
puts " #{pkg.name}"
puts " req'd prereqs: #{pkg.prereqs(mandatory: true).join(', ')}"
puts " ref'd prereqs: #{pkg.prereqs(referenced: true).join(', ')}"
end
end
desc 'List all available projects'
task :projects => :'setup:projects' do
puts ''
puts 'Available projects:'
names = projects.values.collect {|prj| String(prj.name)}
names.sort!
names.each {|nm| puts " - #{nm}"}
puts
puts "PROJECT_DIR = \"projects:#{File.join(ENV['HOME'], '.smalltalk', 'rakefiles', 'projects')}:#{PROJECT_DIRS}\""
puts
end
end