-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathRakefile
69 lines (64 loc) · 1.72 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
desc "Reset all code after an iteration"
task :reset do
`say "Resetting"`
`git reset --hard`
`git clean -fxd .`
end
DEFAULT_INTERVAL_MINUTES = 4
desc "Run an auto-reset timer constraint"
task :timer, :minutes do |t, args|
while true
minutes = args[:minutes] ? args[:minutes].to_i : DEFAULT_INTERVAL_MINUTES
puts "Waiting #{minutes} minutes..."
while minutes > 0
sleep(60)
minutes -= 1
if minutes > 0
text = (minutes == 1) ? "minute" : "minutes"
puts " #{minutes} #{text} left"
`say "#{minutes} #{text}"`
end
end
`say "Reset in 10 seconds"`
sleep(10)
puts "Resetting..."
Rake::Task[:reset].invoke
end
end
DEFAULT_SESSION_MINUTES = 40
desc "Automatically branch and start a timer for a session"
task :start, :minutes do |t, args|
dir_name = `pwd`.chomp.split("/").last.gsub(" ","_")
branch_name = dir_name + "_" + Time.now.strftime("%m_%e_%y_%H%M")
`git checkout master`
`git checkout -b #{branch_name}`
minutes = args[:minutes] ? args[:minutes].to_i : DEFAULT_SESSION_MINUTES
puts "Running a session for #{minutes} minutes"
while minutes > 0
sleep(60)
minutes -= 1
if minutes == 1 || (minutes % 5 == 0 && minutes > 0)
text = (minutes == 1) ? "minute" : "minutes"
puts " #{minutes} #{text} left"
`say "#{minutes} #{text}"`
end
end
`say "Reset in 10 seconds"`
sleep(10)
puts "Resetting..."
`git checkout master`
`git branch -d #{branch_name}`
end
desc "Say 'tag' every 60 seconds"
task :tag do
puts "Type CTRL-C to stop. Turn on a little volume. Starting in 15 seconds..."
loop do
sleep(15)
`say "Begin!"`
6.times do
sleep(10)
printf(".")
end
`say "Tag! Tag! Tag!"`
end
end