forked from drnic/sake-tasks
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
79 lines (64 loc) · 2.04 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
require 'rubygems'
require 'sake'
namespace :install do
desc "Install all tasks contained in this directory and it's subdirectories"
task :all do
Dir['**/*.sake'].each do |task_file|
tasks = Sake::TasksFile.parse(task_file).tasks
uninstall_tasks(tasks)
puts `sake -i #{task_file}`
end
end
desc "Install the sake file that was updated last"
task :latest do
sorted_tasks = Dir['**/*.sake'].sort_by do |task|
File.ctime(task)
end
task_file = sorted_tasks.last
tasks = Sake::TasksFile.parse(task_file).tasks
uninstall_tasks(tasks)
puts `sake -i #{task_file}`
end
desc "Install specified file(s) [f=load,params] (no need to include .sake extension)"
task :file do
files = ENV['f'].split(',') rescue []
stripped_files = files.collect { |f| f.sub('.sake', '') }
Dir["**/*.sake"].find do |task_file|
stripped_name = task_file.sub('.sake', '')
if stripped_files.include?(stripped_name)
tasks = Sake::TasksFile.parse(task_file).tasks
uninstall_tasks(tasks)
puts `sake -i #{task_file}`
end
end
end
# Not exactly the most effecient method, but it works
desc "Install specified task(s) [t=git:push,git:pull]"
task :task do
specified_tasks = ENV['t'].split(',') rescue []
uninstall_tasks(specified_tasks)
Dir["**/*.sake"].each do |task_file|
tasks = Sake::TasksFile.parse(task_file).tasks
tasks.each do |task|
if specified_tasks.include?(task.to_s)
puts `sake -i #{task_file} #{task}`
end
end
end
end
def uninstall_tasks(tasks)
tasks.each {|t| `sake -u #{t}`}
end
end
desc "Run latest source of task"
task :testrun do
task_names = ARGV.grep(/(.+:)+/)
task_names.each do |task_name|
sake_file = task_name.gsub(':','/') + '.sake'
import(sake_file) if File.exists?(sake_file)
Rake.application.load_imports
(task_names << Rake::Task[task_name].prerequisites).flatten!
end
end
task :install => "install:all"
task :default => "install:all"