omnifocus 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34b9833398e1eddfa3eb8dbb9ac5e0c93090c18305bdc27541a6c34523a3e38c
4
- data.tar.gz: 668b55a532430c19f0bc8f52df4dba3546dc19e8a91d8f05d2083ceb399657c8
3
+ metadata.gz: 3469a0eb4e6804a2821904b2a3caeb7c17969eb0d4ad4599e5735e1818189f4e
4
+ data.tar.gz: 14156e5f8b81b9d776bb596dccfbc3656fa0c682ac110b1c3fddfd7270cb9b66
5
5
  SHA512:
6
- metadata.gz: e85e93e46a63f4aeba4578551035ad78d30a05c3295d387e95a0e398ce3d3c95dc8af8167cb08860a14738c62d5b8f768facd4b495786ee83319a6d231459956
7
- data.tar.gz: bb1d077233e65bbbbdad8170f6a43a25c0e171b69c0a335d7354408cc185ffa056b96395355fb92555ad985bfdff328902aac6adb44d2bc95555fb5a923b6031
6
+ metadata.gz: 359141e95a1ef11921321333d58c05f347a1b9febb677d9cae0ba4d06b8979c58da5e7db1e75afb5333401a86ef6cf4f429a049865d4171aca4bac70538fa01f
7
+ data.tar.gz: 93e91a7d9e23b10591e8c42a5aac207cd99550a977c922eb276ceb6f68bad3ea77447df2caea181ad4a0b8fca23d8c9ed8e5d3dfd0b0f65836ab6fd50542d33e
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,17 @@
1
+ === 2.5.0 / 2019-10-08
2
+
3
+ * 5 minor enhancements:
4
+
5
+ * Extended _context to try tags first.
6
+ * Extended _flattened_contexts to try tags first.
7
+ * Extended reschedule subcommand to create missing release/triage tasks where needed.
8
+ * Refactored _context and _flattened_contexts methods.
9
+ * Refactored neww project sub-command to new_or_repair_project.
10
+
11
+ * 1 bug fix:
12
+
13
+ * Fixed to work with omnifocus 3 (single context -> multiple tags)
14
+
1
15
  === 2.4.0 / 2019-01-02
2
16
 
3
17
  * 1 minor enhancement:
@@ -1,7 +1,7 @@
1
1
  .autotest
2
- History.txt
2
+ History.rdoc
3
3
  Manifest.txt
4
- README.txt
4
+ README.rdoc
5
5
  Rakefile
6
6
  bin/of
7
7
  bin/omnifocus
File without changes
data/Rakefile CHANGED
@@ -34,6 +34,10 @@ task :fix => :isolate do
34
34
  omnifocus "resch"
35
35
  end
36
36
 
37
+ task :rev => :isolate do
38
+ omnifocus "rev"
39
+ end
40
+
37
41
  task :debug => :isolate do
38
42
  cmd = ENV["CMD"] || "sync github"
39
43
  d = ENV["D"] ? "-d" : nil
@@ -29,7 +29,7 @@ include Appscript
29
29
  # bts_id: a string uniquely identifying a task: SYSTEM(-projectname)?#id
30
30
 
31
31
  class OmniFocus
32
- VERSION = "2.4.0"
32
+ VERSION = "2.5.0"
33
33
 
34
34
  ##
35
35
  # bug_db = {
@@ -296,27 +296,10 @@ class OmniFocus
296
296
  when "nil" then
297
297
  omnifocus.make :new => :inbox_task, :with_properties => {:name => title}
298
298
  when "project" then
299
- rep = weekly
300
- start_date = hour 0
301
- due_date1 = hour 16
302
- due_date2 = hour 16.5
303
-
304
- cont = context("Releasing").thing
305
- proj = make nerd_projects, :project, title, :review_interval => rep
306
-
307
- props = {
308
- :repetition => rep,
309
- :context => cont,
310
- :defer_date => start_date
311
- }
312
-
313
- make proj, :task, "Release #{title}", props.merge(:due_date => due_date1)
314
- make proj, :task, "Triage #{title}", props.merge(:due_date => due_date2)
299
+ new_or_repair_project title
315
300
  else
316
- projects = omnifocus.sections.projects[its.name.eq(project_name)]
317
- project = projects.get.flatten.grep(Appscript::Reference).first
318
- project.make :new => :task, :with_properties => {:name => title}
319
-
301
+ project = omnifocus.flattened_projects[its.name.eq(project_name)].first.get
302
+ make project, :task, title
320
303
  puts "created task in #{project_name}: #{title}"
321
304
  end
322
305
  end
@@ -367,14 +350,14 @@ class OmniFocus
367
350
  filter = its.completed.eq(false).and(its.repetition.eq(:missing_value))
368
351
 
369
352
  h1 = Hash.new 0
370
- omnifocus.flattened_contexts.get.each do |context|
353
+ _flattened_contexts.each do |context|
371
354
  context.tasks[filter].get.each do |task|
372
355
  h1[[task.containing_project.name.get, context.name.get].join(": ")] += 1
373
356
  end
374
357
  end
375
358
 
376
359
  h2 = Hash.new 0
377
- omnifocus.flattened_contexts.get.each do |context|
360
+ _flattened_contexts.each do |context|
378
361
  h2[context.name.get] += context.tasks[filter].count
379
362
  end
380
363
 
@@ -508,6 +491,61 @@ class OmniFocus
508
491
  return rels, tasks, projs
509
492
  end
510
493
 
494
+ def new_or_repair_project name
495
+ warn "project #{name}"
496
+
497
+ rep = weekly
498
+ start_date = hour 0
499
+ rel_due_date = hour 16
500
+ tri_due_date = hour 16.5
501
+ props = {
502
+ :repetition => rep,
503
+ :defer_date => start_date,
504
+ :estimated_minutes => 10,
505
+ }
506
+
507
+ min30 = 30 * 60
508
+
509
+ rel_q = its.completed.eq(false).and(its.name.begins_with("Release"))
510
+ tri_q = its.completed.eq(false).and(its.name.begins_with("Triage"))
511
+
512
+ rel_tag = context("Releasing").thing
513
+ tri_tag = context("Triaging").thing
514
+
515
+ proj = nerd_projects.projects[name].get rescue nil
516
+
517
+ unless proj then
518
+ warn "creating #{name} project"
519
+ proj = make nerd_projects, :project, name, :review_interval => rep
520
+
521
+ make proj, :task, "Release #{name}", props.merge(:due_date => rel_due_date,
522
+ :primary_tag => rel_tag)
523
+ make proj, :task, "Triage #{name}", props.merge(:due_date => tri_due_date,
524
+ :primary_tag => tri_tag)
525
+ return
526
+ end
527
+
528
+ rel_task = proj.tasks[rel_q].first.get rescue nil
529
+ tri_task = proj.tasks[tri_q].first.get rescue nil
530
+
531
+ new_task_from proj, tri_task, "Release #{name}", rel_tag, -min30 unless rel_task
532
+ new_task_from proj, rel_task, "Triage #{name}", tri_tag, +min30 unless tri_task
533
+ end
534
+
535
+ def new_task_from proj, task, name, tag, offset
536
+ warn " + #{name} task"
537
+
538
+ props = {
539
+ :estimated_minutes => 10,
540
+ :due_date => task.due_date.get + offset,
541
+ :defer_date => task.defer_date.get,
542
+ :repetition => task.repetition.get,
543
+ :primary_tag => tag,
544
+ }
545
+
546
+ make proj, :task, name, props
547
+ end
548
+
511
549
  def fix_project_review_intervals rels, skip
512
550
  rels.tasks.each do |task|
513
551
  begin
@@ -594,6 +632,31 @@ class OmniFocus
594
632
  end
595
633
  end
596
634
 
635
+ def fix_missing_tasks skip
636
+ q_rel = its.completed.eq(false).and(its.name.begins_with("Release"))
637
+ q_tri = its.completed.eq(false).and(its.name.begins_with("Triage"))
638
+
639
+ nerd_projects.projects.get.each do |proj|
640
+ name = proj.name.get
641
+
642
+ rel = proj.tasks[q_rel].first.get rescue nil
643
+ tri = proj.tasks[q_tri].first.get rescue nil
644
+
645
+ case [!!rel, !!tri]
646
+ when [true, true] then
647
+ # do nothing
648
+ when [false, false] then
649
+ # do nothing?
650
+ when [true, false] then # create triage
651
+ warn " Repairing triage for #{name}"
652
+ new_or_repair_project name unless skip
653
+ when [false, true] then # create release
654
+ warn " Repairing release for #{name}"
655
+ new_or_repair_project name unless skip
656
+ end
657
+ end
658
+ end
659
+
597
660
  def cmd_reschedule args
598
661
  skip = ARGV.first == "-n"
599
662
 
@@ -608,6 +671,9 @@ class OmniFocus
608
671
 
609
672
  warn "Checking releasing task schedules"
610
673
  fix_release_task_schedule projs, tasks, skip
674
+
675
+ warn "Repairing any missing release or triage tasks"
676
+ fix_missing_tasks skip
611
677
  end
612
678
  end
613
679
 
@@ -640,7 +706,7 @@ class OmniFocus
640
706
  end
641
707
 
642
708
  def method_missing m, *a
643
- warn [m,*a].inspect
709
+ warn "%s#method_missing(%s)" % [self.class.name, [m,*a].inspect[1..-2]]
644
710
  thing.send m, *a
645
711
  end
646
712
 
@@ -838,14 +904,26 @@ class OmniFocus
838
904
  }
839
905
  end
840
906
 
907
+ def _flattened_contexts
908
+ contexts = self.omnifocus.flattened_tags.get rescue nil
909
+ contexts ||= self.omnifocus.flattened_contexts.get rescue nil
910
+ contexts
911
+ end
912
+
913
+ def _context name
914
+ context = self.omnifocus.flattened_tags[name].get rescue nil
915
+ context ||= self.omnifocus.flattened_contexts[name].get rescue nil
916
+ context
917
+ end
918
+
841
919
  def all_contexts
842
- self.omnifocus.flattened_contexts.get.map { |c|
920
+ _flattened_contexts.map { |c|
843
921
  Context.new omnifocus, c
844
922
  }
845
923
  end
846
924
 
847
925
  def context name
848
- context = self.omnifocus.flattened_contexts[name].get rescue nil
926
+ context = _context name
849
927
  Context.new omnifocus, context if context
850
928
  end
851
929
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omnifocus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -30,7 +30,7 @@ cert_chain:
30
30
  Em82dBUFsipwMLCYj39kcyHWAxyl6Ae1Cn9r/ItVBCxoeFdrHjfavnrIEoXUt4bU
31
31
  UfBugfLD19bu3nvL+zTAGx/U
32
32
  -----END CERTIFICATE-----
33
- date: 2019-01-02 00:00:00.000000000 Z
33
+ date: 2019-10-09 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rb-scpt
@@ -60,6 +60,20 @@ dependencies:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '2.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: octokit
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.0'
63
77
  - !ruby/object:Gem::Dependency
64
78
  name: rdoc
65
79
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +100,14 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '3.17'
103
+ version: '3.18'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '3.17'
110
+ version: '3.18'
97
111
  description: Synchronizes bug tracking systems to omnifocus.
98
112
  email:
99
113
  - ryand-ruby@zenspider.com
@@ -104,14 +118,14 @@ executables:
104
118
  - omnifocus_new
105
119
  extensions: []
106
120
  extra_rdoc_files:
107
- - History.txt
121
+ - History.rdoc
108
122
  - Manifest.txt
109
- - README.txt
123
+ - README.rdoc
110
124
  files:
111
125
  - ".autotest"
112
- - History.txt
126
+ - History.rdoc
113
127
  - Manifest.txt
114
- - README.txt
128
+ - README.rdoc
115
129
  - Rakefile
116
130
  - bin/of
117
131
  - bin/omnifocus
@@ -124,7 +138,7 @@ metadata: {}
124
138
  post_install_message:
125
139
  rdoc_options:
126
140
  - "--main"
127
- - README.txt
141
+ - README.rdoc
128
142
  require_paths:
129
143
  - lib
130
144
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -138,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
152
  - !ruby/object:Gem::Version
139
153
  version: 1.3.1
140
154
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 2.7.3
155
+ rubygems_version: 3.0.6
143
156
  signing_key:
144
157
  specification_version: 4
145
158
  summary: Synchronizes bug tracking systems to omnifocus.
metadata.gz.sig CHANGED
Binary file