standup_md 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/ruby.yml +24 -0
- data/.gitignore +1 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +23 -0
- data/LICENSE +21 -0
- data/README.md +252 -0
- data/Rakefile +36 -0
- data/_config.yml +1 -0
- data/bin/standup +5 -0
- data/doc/README_md.html +290 -0
- data/doc/StandupMD/Cli.html +898 -0
- data/doc/StandupMD.html +1453 -0
- data/doc/TestHelper.html +282 -0
- data/doc/TestStandupMD.html +1938 -0
- data/doc/created.rid +8 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +611 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +286 -0
- data/doc/js/darkfish.js +84 -0
- data/doc/js/navigation.js +105 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +110 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +229 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +551 -0
- data/lib/standup_md/cli.rb +301 -0
- data/lib/standup_md/version.rb +9 -0
- data/lib/standup_md.rb +530 -0
- data/standup_md.gemspec +36 -0
- metadata +108 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 41221176dbfd0d5ddc136c700dd2313e3fc618efae2d4b2409df1849192889b4
|
4
|
+
data.tar.gz: 37fb6ac0435984844f76b922b88628a06b4f56bf48052a0337248bb3505edb2d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cf13b24ef59d5a34723ec422ff37ebcbc465ab98e2ec31a86a6ab870c071ae229b86850851cbba69615f5be31c722edb87ee8bd072804febf0a3f1eeaada109e
|
7
|
+
data.tar.gz: f18d79f594db85ad16acdd11ded9412dfe4cbb4d65c8293a977f980fcb20c8e56f14e27a48e5c908daf15d781004a86cdf6bcbe48e469479c3def51ab17fed76
|
@@ -0,0 +1,24 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Set up Ruby 2.6
|
17
|
+
uses: actions/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: 2.6.x
|
20
|
+
- name: Build and test with Rake
|
21
|
+
run: |
|
22
|
+
gem install bundler
|
23
|
+
bundle install
|
24
|
+
bundle exec rake test
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
standup_md-*.gem
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
standup_md (0.0.10)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
power_assert (1.2.0)
|
10
|
+
rake (13.0.1)
|
11
|
+
test-unit (3.3.5)
|
12
|
+
power_assert
|
13
|
+
|
14
|
+
PLATFORMS
|
15
|
+
ruby
|
16
|
+
|
17
|
+
DEPENDENCIES
|
18
|
+
rake
|
19
|
+
standup_md!
|
20
|
+
test-unit
|
21
|
+
|
22
|
+
BUNDLED WITH
|
23
|
+
1.17.2
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2020 Evan Gray
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,252 @@
|
|
1
|
+
# [The Standup Doctor](https://evanthegrayt.github.io/standup_md/)
|
2
|
+
> The cure for all your standup woes.
|
3
|
+
|
4
|
+
A highly customizable and automated way to keep track of daily standups in
|
5
|
+
markdown files.
|
6
|
+
|
7
|
+
## Table of Contents
|
8
|
+
- [About](#about)
|
9
|
+
- [Installation](#Installation)
|
10
|
+
- [Via RubyGems](#via-rubygems)
|
11
|
+
- [Manual Installation](#manual-installation)
|
12
|
+
- [Usage](#usage)
|
13
|
+
- [Example](#example)
|
14
|
+
- [Customization and Runtime Options](#customization-and-runtime-options)
|
15
|
+
- [API](#api)
|
16
|
+
- [Documentation](https://evanthegrayt.github.io/standup_md/doc/index.html)
|
17
|
+
- [Reporting Bugs and Requesting Features](#reporting-bugs-and-requesting-features)
|
18
|
+
- [Self-Promotion](#self-promotion)
|
19
|
+
|
20
|
+
## About
|
21
|
+
I've now been at two separate companies where we post our daily standups in a
|
22
|
+
chat client, such as Slack, Mattermost, or Riot. Typing out my standup every day
|
23
|
+
became tedious, as I'd have to look up what I did the day before, copy and paste
|
24
|
+
yesterday's work into a new entry, and add today's tasks. This gem automates
|
25
|
+
most of this process, along with providing means of opening the file in your
|
26
|
+
editor, and displaying entries from the command line.
|
27
|
+
|
28
|
+
I wasn't sure that others would find this useful, but then the pandemic
|
29
|
+
happened, which I assume made doing standups via chat much more common.
|
30
|
+
|
31
|
+
In a nutshell, calling `standup` from the command line will open a standup file
|
32
|
+
for the current month in your preferred editor. If an entry for today is already
|
33
|
+
present, no text will be generated. If an entry for today doesn't exist, one
|
34
|
+
will be generated, and if a previous entry exists, it will be added to today's
|
35
|
+
entry as what your previous day's work. See [example](#example). There's also an
|
36
|
+
API if you'd like to use this in your own code somehow.
|
37
|
+
|
38
|
+
This is a new project, and I have a lot of [updates
|
39
|
+
planned](https://github.com/evanthegrayt/standup_md/issues), but I won't push
|
40
|
+
to `master` unless all
|
41
|
+
[tests](https://github.com/evanthegrayt/standup_md/blob/master/test/standup_md_test.rb)
|
42
|
+
are passing and the gem is working as expected. The first official release will
|
43
|
+
be once [this milestone](https://github.com/evanthegrayt/standup_md/milestone/1)
|
44
|
+
is complete. Until then, consider this gem to be in alpha, and the version will
|
45
|
+
remain `< 0.1.0`.
|
46
|
+
|
47
|
+
## Installation
|
48
|
+
### Via RubyGems
|
49
|
+
*COMING SOON. For now, please use the [manual installation
|
50
|
+
instructions](#manual-installation). The gem will be officially released once
|
51
|
+
[this milestone](https://github.com/evanthegrayt/standup_md/milestone/1) is
|
52
|
+
completed*.
|
53
|
+
|
54
|
+
<!-- Just install the gem! -->
|
55
|
+
|
56
|
+
<!-- ```sh -->
|
57
|
+
<!-- gem install standup_md -->
|
58
|
+
<!-- ``` -->
|
59
|
+
<!-- If you don't have permission on your system to install ruby or gems, I recommend -->
|
60
|
+
<!-- using [rvm](https://rvm.io/) or -->
|
61
|
+
<!-- [rbenv](http://www.rubyinside.com/rbenv-a-simple-new-ruby-version-management-tool-5302.html), -->
|
62
|
+
<!-- or you can try to use a manual method below. -->
|
63
|
+
|
64
|
+
|
65
|
+
### Manual Installation
|
66
|
+
From your terminal, clone the repository where you want it. From there, you have
|
67
|
+
a couple of installation options.
|
68
|
+
|
69
|
+
```sh
|
70
|
+
git clone https://github.com/evanthegrayt/standup_md.git
|
71
|
+
cd standup_md
|
72
|
+
|
73
|
+
# Use rake to build and install the gem.
|
74
|
+
rake install
|
75
|
+
|
76
|
+
# OR manually link the executable somewhere. If you use this method, you cannot
|
77
|
+
# move the repository after you link it!
|
78
|
+
ln -s $PWD/bin/standup /usr/local/bin
|
79
|
+
```
|
80
|
+
|
81
|
+
## Usage
|
82
|
+
Call the executable.
|
83
|
+
|
84
|
+
```sh
|
85
|
+
standup
|
86
|
+
```
|
87
|
+
|
88
|
+
This opens the current month's standup file. If an entry already exists for
|
89
|
+
today, nothing is added. If no entry exists for today, the previous "Current" is
|
90
|
+
placed in the "Previous" section of a new entry. The format of this file is
|
91
|
+
very important; do not change anything, except for adding entries for today.
|
92
|
+
|
93
|
+
### Example
|
94
|
+
For example, if the standup entry from yesterday reads as follows:
|
95
|
+
|
96
|
+
```markdown
|
97
|
+
# 2020-04-13
|
98
|
+
## Previous
|
99
|
+
- Did something else.
|
100
|
+
## Current
|
101
|
+
- Write new feature for `standup_md`
|
102
|
+
- Fix bug in `standup_md`
|
103
|
+
## Impediments
|
104
|
+
- None
|
105
|
+
```
|
106
|
+
|
107
|
+
The following scaffolding will be added for current entry at the top of the
|
108
|
+
file:
|
109
|
+
```markdown
|
110
|
+
# 2020-04-14
|
111
|
+
## Previous
|
112
|
+
- Write new feature for `standup_md`
|
113
|
+
- Fix bug in `standup_md`
|
114
|
+
## Current
|
115
|
+
- <!-- ADD TODAY'S WORK HERE -->
|
116
|
+
## Impediments
|
117
|
+
- None
|
118
|
+
```
|
119
|
+
|
120
|
+
There are also flags that will print entries to the command line. There's a full
|
121
|
+
list of features below, but as a quick example, you can copy today's entry to
|
122
|
+
your clipboard without even opening your editor.
|
123
|
+
|
124
|
+
```sh
|
125
|
+
standup -c | pbcopy
|
126
|
+
```
|
127
|
+
|
128
|
+
## Customization and Runtime Options
|
129
|
+
You can create a file in your home directory called `~/.standup_md.yml`.
|
130
|
+
Settings located in this file will override default behavior. This file can also
|
131
|
+
have settings overwritten at runtime by the use of options. You can view [my config
|
132
|
+
file](https://github.com/evanthegrayt/dotfiles/blob/master/dotfiles/standup_md.yml)
|
133
|
+
as an example. Any setting in this file can still be overridden at runtime by
|
134
|
+
passing flags to the executable.
|
135
|
+
|
136
|
+
You'll notice, a lot of settings don't have the ability to be changed at runtime
|
137
|
+
when calling the executable. This is because the file structure is very
|
138
|
+
important, and changing values that affect formatting will cause problems with
|
139
|
+
the file parser. If you don't want to use a default, make the change in your
|
140
|
+
config file before you start editing standups. There is an [open
|
141
|
+
issue](https://github.com/evanthegrayt/standup_md/issues/16) for handling this
|
142
|
+
for the user, but they're not available yet.
|
143
|
+
|
144
|
+
There are no options to change the headers at runtime because it uses the
|
145
|
+
headers to detect tasks from previous entries. If changed at runtime, this would
|
146
|
+
cause errors. For this reason, if you don't like the default headers, change
|
147
|
+
them in your configuration file after installation, and then try to not change
|
148
|
+
them again.
|
149
|
+
|
150
|
+
|
151
|
+
### Available Config File Keys and Defaults
|
152
|
+
|
153
|
+
```yaml
|
154
|
+
# Key: Default
|
155
|
+
header_depth: 1
|
156
|
+
header_date_format: '%Y-%m-%d'
|
157
|
+
sub_header_depth: 2
|
158
|
+
current_header: 'Current'
|
159
|
+
previous_header: 'Previous'
|
160
|
+
impediments_header: 'Impediments'
|
161
|
+
file_name_format: '%Y_%m.md'
|
162
|
+
bullet_character: '-' # (dash)
|
163
|
+
directory: '~/.cache/standup_md'
|
164
|
+
editor: # $VISUAL, $EDITOR or vim, in that order
|
165
|
+
current_entry_tasks:
|
166
|
+
- "<!-- ADD TODAY'S WORK HERE -->"
|
167
|
+
previous_entry_tasks: # An array of the tasks from the previous entry
|
168
|
+
impediments:
|
169
|
+
- 'None'
|
170
|
+
notes: null # If not null, must be array
|
171
|
+
sub_header_order:
|
172
|
+
- 'previous'
|
173
|
+
- 'current'
|
174
|
+
- 'impediments'
|
175
|
+
- 'notes'
|
176
|
+
```
|
177
|
+
|
178
|
+
### Executable Flags
|
179
|
+
```
|
180
|
+
The Standup Doctor
|
181
|
+
--current-entry-tasks=ARRAY List of current entry's tasks
|
182
|
+
--previous-entry-tasks=ARRAY List of yesterday's tasks
|
183
|
+
--impediments=ARRAY List of impediments for current entry
|
184
|
+
--notes=ARRAY List of notes for current entry
|
185
|
+
--sub-header-order=ARRAY The order of the sub-headers when writing the file
|
186
|
+
--[no-]append-previous Append previous tasks? Default is true
|
187
|
+
-f, --file-name-format=STRING Date-formattable string to use for standup file name
|
188
|
+
-e, --editor=EDITOR Editor to use for opening standup files
|
189
|
+
-d, --directory=DIRECTORY The directories where standup files are located
|
190
|
+
--[no-]write Write current entry if it doesn't exist. Default is true
|
191
|
+
--[no-]edit Open the file in the editor. Default is true
|
192
|
+
-j, --[no-]json Print output as formatted json. Default is false.
|
193
|
+
-v, --[no-]verbose Verbose output. Default is false.
|
194
|
+
-c, --current Print current entry. Disables editing
|
195
|
+
-a, --all Print all previous entries. Disables editing
|
196
|
+
```
|
197
|
+
|
198
|
+
Any options not set in this file will retain their default values. Note that if
|
199
|
+
you change `file_name_format`, and don't use a month or year, there will only
|
200
|
+
ever be one standup file. This could cause issues long-term, as the files will
|
201
|
+
get large over time and possibly cause performance issues.
|
202
|
+
|
203
|
+
If you wanted to add some tasks at runtime, and without opening the file in an
|
204
|
+
editor, you could use the following:
|
205
|
+
|
206
|
+
```bash
|
207
|
+
standup --no-edit --current-entry-tasks="Work on this thing","And another thing!"
|
208
|
+
```
|
209
|
+
|
210
|
+
## API
|
211
|
+
Below are some quick examples, but the API is fully documented in the
|
212
|
+
[documentation](https://evanthegrayt.github.io/standup_md/doc/index.html).
|
213
|
+
|
214
|
+
This was mainly written as a command line utility, but I made the API available
|
215
|
+
for scripting. There are attribute accessors for most of the settings in the
|
216
|
+
[customization table](#customization-and-runtime-options) above. To view all
|
217
|
+
available methods, read the comments in the [source](lib/standup_md.rb). A
|
218
|
+
quick-and-dirty example of how to write a new entry via code could look like the
|
219
|
+
following:
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
require 'standup_md'
|
223
|
+
|
224
|
+
standup = StandupMD.load(
|
225
|
+
current_header: 'Today',
|
226
|
+
current_entry_tasks: ['Thing to do today', 'Another thing to do today'],
|
227
|
+
impediments: ['Not enough time in the day']
|
228
|
+
)
|
229
|
+
|
230
|
+
standup.write
|
231
|
+
```
|
232
|
+
|
233
|
+
Entries are just hashes, so you can easily transform them to `json` objects.
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
require 'standup_md'
|
237
|
+
require 'json'
|
238
|
+
|
239
|
+
standup = StandupMD.load
|
240
|
+
standup_entries_as_json = standup.all_entries.to_json
|
241
|
+
```
|
242
|
+
|
243
|
+
## Reporting Bugs and Requesting Features
|
244
|
+
If you have an idea or find a bug, please [create an
|
245
|
+
issue](https://github.com/evanthegrayt/standup_md/issues/new). Just make sure the topic
|
246
|
+
doesn't already exist. Better yet, you can always submit a Pull Request.
|
247
|
+
|
248
|
+
## Self-Promotion
|
249
|
+
I do these projects for fun, and I enjoy knowing that they're helpful to people.
|
250
|
+
Consider starring [the repository](https://github.com/evanthegrayt/standup_md)
|
251
|
+
if you like it! If you love it, follow me [on
|
252
|
+
Github](https://github.com/evanthegrayt)!
|
data/Rakefile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative 'lib/standup_md'
|
2
|
+
require 'rdoc/task'
|
3
|
+
|
4
|
+
RDoc::Task.new do |rdoc|
|
5
|
+
rdoc.main = "README.md"
|
6
|
+
rdoc.rdoc_dir = 'doc'
|
7
|
+
rdoc.rdoc_files.include("README.md", "**/*.rb")
|
8
|
+
end
|
9
|
+
|
10
|
+
task :default => :test
|
11
|
+
|
12
|
+
desc "Build the gem"
|
13
|
+
task :build do
|
14
|
+
system('gem build standup_md.gemspec')
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Build and install the gem"
|
18
|
+
task install: [:dependencies, :build] do
|
19
|
+
system("gem install standup_md-#{StandupMD::VERSION}.gem")
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Add dependencies"
|
23
|
+
task :dependencies do
|
24
|
+
system("gem install bundler")
|
25
|
+
system("bundle install")
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Uninstall the gem"
|
29
|
+
task :uninstall do
|
30
|
+
system('gem uninstall standup')
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Run test suite"
|
34
|
+
task :test do
|
35
|
+
Dir.glob(File.join(__dir__, 'test', '**', '*_test.rb')).each { |f| ruby f }
|
36
|
+
end
|
data/_config.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
theme: jekyll-theme-midnight
|