doing 2.1.13 → 2.1.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.irbrc +1 -0
  3. data/.yardoc/checksums +14 -12
  4. data/.yardoc/object_types +0 -0
  5. data/.yardoc/objects/root.dat +0 -0
  6. data/CHANGELOG.md +76 -0
  7. data/Gemfile.lock +9 -2
  8. data/README.md +56 -19
  9. data/bin/doing +218 -68
  10. data/docs/doc/Array.html +117 -3
  11. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  12. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  13. data/docs/doc/BooleanTermParser/Query.html +1 -1
  14. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  15. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  16. data/docs/doc/BooleanTermParser.html +1 -1
  17. data/docs/doc/Doing/Color.html +6 -2
  18. data/docs/doc/Doing/Completion.html +1 -1
  19. data/docs/doc/Doing/Configuration.html +8 -4
  20. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  21. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  22. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  23. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  24. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  25. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  26. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  27. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  28. data/docs/doc/Doing/Errors.html +1 -1
  29. data/docs/doc/Doing/Hooks.html +1 -1
  30. data/docs/doc/Doing/Item.html +340 -14
  31. data/docs/doc/Doing/Items.html +2 -2
  32. data/docs/doc/Doing/LogAdapter.html +1 -1
  33. data/docs/doc/Doing/Note.html +2 -2
  34. data/docs/doc/Doing/Pager.html +1 -1
  35. data/docs/doc/Doing/Plugins.html +1 -1
  36. data/docs/doc/Doing/Prompt.html +103 -1
  37. data/docs/doc/Doing/Section.html +1 -1
  38. data/docs/doc/Doing/TemplateString.html +2 -2
  39. data/docs/doc/Doing/Util/Backup.html +1 -1
  40. data/docs/doc/Doing/Util.html +1 -1
  41. data/docs/doc/Doing/WWID.html +77 -71
  42. data/docs/doc/Doing.html +3 -3
  43. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  44. data/docs/doc/GLI/Commands.html +1 -1
  45. data/docs/doc/GLI.html +1 -1
  46. data/docs/doc/Hash.html +1 -1
  47. data/docs/doc/Numeric.html +279 -0
  48. data/docs/doc/PhraseParser/Operator.html +1 -1
  49. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  50. data/docs/doc/PhraseParser/Query.html +1 -1
  51. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  52. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  53. data/docs/doc/PhraseParser/TermClause.html +1 -1
  54. data/docs/doc/PhraseParser.html +1 -1
  55. data/docs/doc/Status.html +1 -1
  56. data/docs/doc/String.html +997 -118
  57. data/docs/doc/Symbol.html +1 -1
  58. data/docs/doc/Time.html +1 -1
  59. data/docs/doc/_index.html +14 -9
  60. data/docs/doc/class_list.html +1 -1
  61. data/docs/doc/file.README.html +41 -15
  62. data/docs/doc/index.html +41 -15
  63. data/docs/doc/method_list.html +449 -305
  64. data/docs/doc/top-level-namespace.html +2 -2
  65. data/docs/index.md +56 -19
  66. data/doing.gemspec +2 -0
  67. data/doing.rdoc +76 -9
  68. data/example_plugin.rb +2 -4
  69. data/lib/completion/_doing.zsh +17 -17
  70. data/lib/completion/doing.bash +25 -25
  71. data/lib/completion/doing.fish +18 -6
  72. data/lib/doing/array_chronify.rb +57 -0
  73. data/lib/doing/colors.rb +4 -0
  74. data/lib/doing/configuration.rb +6 -2
  75. data/lib/doing/item.rb +108 -0
  76. data/lib/doing/log_adapter.rb +3 -3
  77. data/lib/doing/numeric_chronify.rb +40 -0
  78. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  79. data/lib/doing/plugins/export/json_export.rb +2 -2
  80. data/lib/doing/plugins/export/template_export.rb +49 -90
  81. data/lib/doing/plugins/import/calendar_import.rb +13 -1
  82. data/lib/doing/plugins/import/doing_import.rb +12 -1
  83. data/lib/doing/plugins/import/timing_import.rb +13 -1
  84. data/lib/doing/prompt.rb +65 -1
  85. data/lib/doing/string.rb +137 -33
  86. data/lib/doing/string_chronify.rb +112 -14
  87. data/lib/doing/template_string.rb +1 -1
  88. data/lib/doing/time.rb +6 -6
  89. data/lib/doing/util_backup.rb +1 -1
  90. data/lib/doing/version.rb +1 -1
  91. data/lib/doing/wwid.rb +117 -106
  92. data/lib/doing.rb +36 -31
  93. data/lib/examples/plugins/say_export.rb +1 -4
  94. metadata +46 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c12d0846431cd0468f217f3e1e9b80bcb9a86038fbee7ff057c1db8ad6c56bb3
4
- data.tar.gz: a144f25b2798825ad042d690e21c1a798b83e06e49480c92be7acea752d37e48
3
+ metadata.gz: e904ebbd440b847f32f6d2cf8b323b662c974c485453400c058a1c7df08e0cd5
4
+ data.tar.gz: 38077937c8cb1616a83a965f0f4f004812a2c6333bf40a2d7f96832e575369ae
5
5
  SHA512:
6
- metadata.gz: 66f76cd0588f4dca848c94313051bcb39bc776c4679b8bd9a648887dd764dcc3232d45e18bb260edb7500e3c398aef8a02216a11ce5a593b8822f89267c92214
7
- data.tar.gz: bc852708998d6e670fe72c882f2e254f64bbec487cd56b659e75220bdd5a5c75b5495d1a9b4a734d56825a00563b1b3052bdcd2c4a93761479a2bbe9a2eb397d
6
+ metadata.gz: 1981ea1841ac4bf1d0efb5c16a31cfdfc249e102c8d9dc9b006eecdfb501e229ba811c5764389efcde99e7d5b967801dd321a9254f9ed823b307c8ce1e885a44
7
+ data.tar.gz: b6d28943f49011a44970b96aa3f7ddf7e44aef9d4089c6a1cf232d4bebd7021e7b6a7da4cfccdcd89aef5a1dbb45b2f8a05acb1e6c1ec424a742293c0d90d7d5
data/.irbrc ADDED
@@ -0,0 +1 @@
1
+ require_relative 'lib/doing'
data/.yardoc/checksums CHANGED
@@ -1,28 +1,30 @@
1
1
  lib/doing/hash.rb c2960de9603dcf90be85ce423d9430de27f4f893
2
- lib/doing/item.rb 54cea2275eaa19a9285e358c51f8630a558730ee
2
+ lib/doing/item.rb 276880933fef8a4e1ef7a80e92f0f2b029f8a6e7
3
3
  lib/doing/note.rb bbadd9e34e6dc43a2af1110a5107f46c39d2547f
4
- lib/doing/time.rb 4411af636082d3abf6f6402a7d6c9038d96a9ead
4
+ lib/doing/time.rb 60183c3c31532ffea1440c766de0f90042e0fd10
5
5
  lib/doing/util.rb 33ad79455893213a0f2993edec0e158526657f09
6
- lib/doing/wwid.rb a6e14548e14219d46a6fdc1c9c9accb5f4277654
6
+ lib/doing/wwid.rb 58998ec0fccfa8450f7c065e1994acc6f314e819
7
7
  lib/doing/array.rb a17004c4811d239932254f9ed94a6eb10456c8e8
8
8
  lib/doing/hooks.rb acf6e0615ccf1949f84915c979297845242c1205
9
9
  lib/doing/items.rb 8cda7caaef10645893267262f5eee681e35046ce
10
10
  lib/doing/pager.rb b58e478b0cb8d400ddb97988ba741e3a127b53c3
11
- lib/doing/colors.rb 9a628d48c821313c502deedc5b61a046a2bf79ef
11
+ lib/doing/colors.rb b7239a69e10c5df9378a5843441af5b93c1872f8
12
12
  lib/doing/errors.rb af07e482a5389924edc2337749c81cda501098f0
13
- lib/doing/prompt.rb a78b6f4488fe58b5653ce541a88d24559661459c
14
- lib/doing/string.rb 7cbe3e0bd136c52f7b12d4d6133afe20fe204be2
13
+ lib/doing/prompt.rb 1c48923fc61d8714e3fc1f24b52fb8f358a8cc24
14
+ lib/doing/string.rb f5327c42aa2563d95f93d4c77a099b7076c3ea5f
15
15
  lib/doing/symbol.rb 309799458a1bc715c2707307c9a62ab26086275e
16
16
  lib/doing/section.rb 206e119cf818f1e76798753e611180fe77bc299a
17
- lib/doing/version.rb d2b8ae34e7fd7354adae5386fe3ed84c88e5dc88
17
+ lib/doing/version.rb c8b901ea8187c93194d977cb05924c4a6d6ccc7e
18
18
  lib/doing/cli_status.rb dbedd454c4cbbd0fed9ef30120f6ec85d18b9356
19
19
  lib/doing/completion.rb c658e7dc7898fb022a21b2bd77bedb958ca3b067
20
- lib/doing/log_adapter.rb 6cf0c9a405d17449643e54d35a04897b1da44eaf
21
- lib/doing/util_backup.rb c1bda6ee3acc9a5f649df47590e67ff8b1e90c50
22
- lib/doing/configuration.rb fc72d4343740a551988a7f56c426a62d51f85e65
20
+ lib/doing/log_adapter.rb 57d831259f48d0757307244d35b87e9ffa9099d9
21
+ lib/doing/util_backup.rb c13f71072581b1f0d2269853611ba09273261bf9
22
+ lib/doing/configuration.rb b8667ff80c7c8830108e5089a5d309356af64151
23
23
  lib/doing/phrase_parser.rb 8f1789d7cf8326d8cc231b4a21505a93f8de20d2
24
+ lib/doing/array_chronify.rb 5852b38643aef2e7e796aaf19b2c052a52ee5e2b
24
25
  lib/doing/plugin_manager.rb cb16a82c3182ef7008359670ab96ff6b39270ccc
25
- lib/doing/string_chronify.rb ccbb08389d2139c7121203f8585864e3026d1526
26
- lib/doing/template_string.rb 6dfb28b922059189b072e6d9fe1fcba8aad6c6fe
26
+ lib/doing/string_chronify.rb 62635041c94482927fb661ac0caa2eb9bdd1c17c
27
+ lib/doing/template_string.rb 5f6ef0495082339f2aa1b085ac4c1bdbfeb25be5
28
+ lib/doing/numeric_chronify.rb bedeff62a95f8a8ff116e1bf0cc1d9eb2707a900
27
29
  lib/doing/boolean_term_parser.rb 075977892ac5c6e3435cb8877d8b8b68eb1962e3
28
30
  lib/doing/markdown_document_listener.rb 45485f225068a34951ec818a345f642323e5ba35
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,79 @@
1
+ ### 2.1.17
2
+
3
+ 2022-01-18 07:26
4
+
5
+ #### NEW
6
+
7
+ - `--hilite` option for `doing search` to highlight matches in search results (terminal output only)
8
+ - `--hilite` flag for `show` and `view` to highlight results when used with `--search`
9
+
10
+ #### IMPROVED
11
+
12
+ - Show preview of up to 5 items when confirming a delete operation so you actually know what you're deleting
13
+ - Allow `--ask` when creating new entry via STDIN pipe
14
+ - Tab completion for known tags when creating an entry interactively
15
+ - Add purple as an alias for magenta in template colors
16
+
17
+ #### FIXED
18
+
19
+ - Clear STDIN before requesting input
20
+
21
+ ### 2.1.16
22
+
23
+ 2022-01-18 02:45
24
+
25
+ #### NEW
26
+
27
+ - `doing done --from "3pm to 3:15pm"` to set start and end times with natural language string
28
+
29
+ #### IMPROVED
30
+
31
+ - Running `doing tag` without arguments takes command line input
32
+ - If `doing now` or `doing later` are run without arguments, interactively request necessary information (you can still use --editor to edit in your preferred editor)
33
+ - Tab completion for tags when entering at prompt
34
+ - Use readline when requesting input text, better editing features
35
+ - `doing done --at` no longer overrides `--back`
36
+
37
+ #### FIXED
38
+
39
+ - `doing select` -> output formatted empty output
40
+ - Sort items by date when using `doing select --editor` (was loading in selection order instead)
41
+ - Ruby 2.7 error in template output (.empty? on FalseClass)
42
+ - Don't add empty entry when cancelling --editor
43
+ - Batch editing bugs
44
+
45
+ ### 2.1.15
46
+
47
+ 2022-01-17 07:25
48
+
49
+ #### NEW
50
+
51
+ - When completing an entry, if the elapsed time would be greater than a (configurable) amount, doing will now ask for confirmation and allow you to enter a new duration before setting the @done date
52
+
53
+ #### IMPROVED
54
+
55
+ - When entering intervals, you can now use 1h30m in addition to 1.5h or 90m
56
+ - Date expansion works in more circumstances
57
+ - You can include date tags with natural language values when adding tags via `doing select`
58
+
59
+ #### FIXED
60
+
61
+ - Tags containing values with spaces no longer cause errors
62
+
63
+ ### 2.1.14
64
+
65
+ #### NEW
66
+
67
+ - All commands that accept --note now accept --ask, which requests input via readline after creating the note. Multiple lines are allowed, hit return twice to end editing. Works alongside --note and --editor
68
+
69
+ #### IMPROVED
70
+
71
+ - Implement --search and --from filtering for import plugins
72
+ - UTC format date strings in select menus for consistency (was relative date formatting)
73
+ - Don't populate the fzf search with --search, it's already filtered. Separated --query from --search if you do want to populate the query string in addition to --search filtering
74
+ - When showing relative dates, don't include the year if the date is the previous year but a later month than the current month (less than a year old)
75
+ - When using --editor while adding an entry, include any note specified on the command line or via --ask for further editing
76
+
1
77
  ### 2.1.13
2
78
 
3
79
  #### NEW
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- doing (2.1.13)
4
+ doing (2.1.17)
5
5
  chronic (~> 0.10, >= 0.10.2)
6
6
  deep_merge (~> 1.2, >= 1.2.1)
7
7
  gli (~> 2.19, >= 2.19.2)
@@ -12,6 +12,8 @@ PATH
12
12
  tty-link (~> 0.1, >= 0.1.1)
13
13
  tty-markdown (~> 0.7, >= 0.7.0)
14
14
  tty-progressbar (~> 0.18, >= 0.18.2)
15
+ tty-reader (~> 0.9, >= 0.9.0)
16
+ tty-screen (~> 0.8, >= 0.8.1)
15
17
  tty-which (~> 0.5, >= 0.5.0)
16
18
 
17
19
  GEM
@@ -65,7 +67,7 @@ GEM
65
67
  cucumber-core (~> 8.0, >= 8.0.1)
66
68
  cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
67
69
  cucumber-messages (~> 13.0, >= 13.0.1)
68
- deep_merge (1.2.1)
70
+ deep_merge (1.2.2)
69
71
  diff-lcs (1.4.4)
70
72
  ffi (1.15.4)
71
73
  github-markup (4.0.0)
@@ -131,6 +133,10 @@ GEM
131
133
  tty-cursor (~> 0.7)
132
134
  tty-screen (~> 0.8)
133
135
  unicode-display_width (>= 1.6, < 3.0)
136
+ tty-reader (0.9.0)
137
+ tty-cursor (~> 0.7)
138
+ tty-screen (~> 0.8)
139
+ wisper (~> 2.0)
134
140
  tty-screen (0.8.1)
135
141
  tty-spinner (0.9.3)
136
142
  tty-cursor (~> 0.7)
@@ -139,6 +145,7 @@ GEM
139
145
  concurrent-ruby (~> 1.0)
140
146
  unicode-display_width (2.1.0)
141
147
  unicode_utils (1.4.0)
148
+ wisper (2.0.1)
142
149
  yard (0.9.26)
143
150
  zeitwerk (2.5.1)
144
151
 
data/README.md CHANGED
@@ -1,55 +1,92 @@
1
1
  # doing
2
2
 
3
- **A command line tool for remembering what you were doing and tracking what you've done.**
3
+ **A command line tool for remembering what you were doing and tracking what
4
+ you've done.**
4
5
 
5
- _If you're one of the rare people like me who find this useful, feel free to [buy me some coffee](http://brettterpstra.com/donate/)._
6
+ _If you're one of the rare people like me who find this useful, feel free to
7
+ [buy me some coffee][donate]._
6
8
 
7
9
  <!--README-->
8
10
 
9
- The current version of `doing` is <!--VER-->2.1.12<!--END VER-->.
11
+ The current version of `doing` is <!--VER-->2.1.16<!--END VER-->.
10
12
 
11
- Find all of the documentation in the [doing wiki](https://github.com/ttscoff/doing/wiki).
13
+ Find all of the documentation in the [doing wiki][wiki].
12
14
 
13
- See [what's new in Doing 2.0](https://brettterpstra.com/2021/11/20/doing-2-dot-0/).
15
+ See [what's new in Doing 2.0][doing 2].
14
16
 
15
- Check out some craziness with Doing in the [iTerm status bar](https://brettterpstra.com/2021/10/15/see-what-youre-doing-in-the-iterm-status-bar/) and the [Mac Touch Bar/menu bar](https://brettterpstra.com/2021/07/21/crazy-bettertouchtool-touch-bar-simulator/).
17
+ Check out some craziness with Doing in the [iTerm status bar][status bar] and
18
+ the [Mac Touch Bar/menu bar][touch bar].
16
19
 
17
20
  ## What and why
18
21
 
19
- `doing` is a basic CLI for adding and listing "what was I doing" reminders in a [TaskPaper-formatted](https://www.taskpaper.com) text file. It allows for multiple sections/categories and flexible output formatting.
22
+ `doing` is a basic CLI for adding and listing "what was I doing" reminders in a
23
+ [TaskPaper-formatted](https://www.taskpaper.com) text file. It allows for
24
+ multiple sections/categories and flexible output formatting.
20
25
 
21
- While I'm working, I have hourly reminders to record what I'm working on, and I try to remember to punch in quick notes if I'm unexpectedly called away from a project. I can do this just by typing `doing now tracking down the CG bug`.
26
+ While I'm working, I have hourly reminders to record what I'm working on, and I
27
+ try to remember to punch in quick notes if I'm unexpectedly called away from a
28
+ project. I can do this just by typing `doing now tracking down the CG bug`.
22
29
 
23
- If there's something I want to look at later but doesn't need to be added to a task list or tracker, I can type `doing later check out the pinboard bookmarks from macdrifter`. When I get back to my computer --- or just need a refresher after a distraction --- I can type `doing last` to see what the last thing on my plate was. I can also type `doing recent` (or just `doing`) to get a list of the last few entries. `doing today` gives me everything since midnight for the current day, making it easy to see what I've accomplished over a sleepless night.
30
+ If there's something I want to look at later but doesn't need to be added to a
31
+ task list or tracker, I can type `doing later check out the pinboard bookmarks
32
+ from macdrifter`. When I get back to my computer --- or just need a refresher
33
+ after a distraction --- I can type `doing last` to see what the last thing on
34
+ my plate was. I can also type `doing recent` (or just `doing`) to get a list of
35
+ the last few entries. `doing today` gives me everything since midnight for the
36
+ current day, making it easy to see what I've accomplished over a sleepless
37
+ night.
24
38
 
25
- Doing has over 30 commands for tracking your status, recording your time, and analyzing the results.
39
+ Doing has over 30 commands for tracking your status, recording your time, and
40
+ analyzing the results.
26
41
 
27
- See [the wiki](https://github.com/ttscoff/doing/wiki) for installation and usage instructions.
42
+ See [the wiki][wiki] for installation and usage instructions.
28
43
 
29
44
  ## Launchbar/Alfred
30
45
 
31
- The LaunchBar action requires that `doing` be available in `/usr/local/bin/doing`. If it's not (because you're using RVM or similar), you'll need to symlink it there. Running the action with Return will show the latest 9 items from Currently, along with any time intervals recorded, and includes a submenu of Timers for each tag.
46
+ The LaunchBar action requires that `doing` be available in
47
+ `/usr/local/bin/doing`. If it's not (because you're using RVM or similar),
48
+ you'll need to symlink it there. Running the action with Return will show the
49
+ latest 9 items from Currently, along with any time intervals recorded, and
50
+ includes a submenu of Timers for each tag.
32
51
 
33
- Pressing Spacebar and typing allows you to add a new entry to currently. You an also trigger a custom show command by typing "show [section/tag]" and hitting return. Include any command line flags at the end of the string, and if you add text in parenthesis, it will be processed as a note on the entry.
52
+ Pressing Spacebar and typing allows you to add a new entry to currently. You an
53
+ also trigger a custom show command by typing "show [section/tag]" and hitting
54
+ return. Include any command line flags at the end of the string, and if you add
55
+ text in parenthesis, it will be processed as a note on the entry.
34
56
 
35
- Point of interest, the LaunchBar Action makes use of the `-o json` flag for outputting JSON to the action's script for parsing.
57
+ Point of interest, the LaunchBar Action makes use of the `-o json` flag for
58
+ outputting JSON to the action's script for parsing.
36
59
 
37
60
  <!--GITHUB-->
38
61
 
39
- See the [doing project on BrettTerpstra.com](https://brettterpstra.com/projects/doing/) for the download.
62
+ See the [doing project on BrettTerpstra.com][bt doing] for the download.
40
63
 
41
64
  <!--END GITHUB-->
42
65
  <!--JEKYLL
43
66
  {% download 117 %}
44
67
  -->
45
68
 
46
- Evan Lovely has [created an Alfred workflow as well](http://www.evanlovely.com/blog/technology/alfred-for-terpstras-doing/).
69
+ Evan Lovely has created an [Alfred workflow][] as well.
47
70
 
48
71
  ## Contributing
49
72
 
50
- If you [create a plugin](https://github.com/ttscoff/doing/wiki/Creating-Plugins), custom command, or hook you can share, please [let me know](https://brettterpstra.com/contact/). If I get a few plugin contributions, I'll set up a second repository for them.
51
-
52
- Feel free to fork [the repository](https://github.com/ttscoff/doing/) on GitHub and make pull requests with changes. Please target the `develop` branch with pull requests.
73
+ If you [create a plugin][], custom command, or hook you can share, please
74
+ [let me know][contact]. If I get a few plugin contributions, I'll set up a
75
+ second repository for them.
76
+
77
+ Feel free to fork [the repository][github] on GitHub and make pull requests
78
+ with changes. Please target the `develop` branch with pull requests.
79
+
80
+ [bt doing]: https://brettterpstra.com/projects/doing/
81
+ [donate]: http://brettterpstra.com/donate/
82
+ [github]: https://github.com/ttscoff/doing/
83
+ [wiki]: https://github.com/ttscoff/doing/wiki
84
+ [doing 2]: https://brettterpstra.com/2021/11/20/doing-2-dot-0/
85
+ [status bar]: https://brettterpstra.com/2021/10/15/see-what-youre-doing-in-the-iterm-status-bar/
86
+ [touch bar]: https://brettterpstra.com/2021/07/21/crazy-bettertouchtool-touch-bar-simulator/
87
+ [create a plugin]: https://github.com/ttscoff/doing/wiki/Creating-Plugins
88
+ [contact]: https://brettterpstra.com/contact/
89
+ [alfred workflow]: http://www.evanlovely.com/blog/technology/alfred-for-terpstras-doing/
53
90
 
54
91
  <!--END README-->
55
92