standup_md 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +11 -9
- data/README.md +42 -26
- data/Rakefile +3 -1
- data/doc/README_md.html +48 -49
- data/doc/StandupMD.html +2 -17
- data/doc/StandupMD/Cli.html +11 -11
- data/doc/StandupMD/Cli/Helpers.html +5 -4
- data/doc/StandupMD/Config.html +1 -1
- data/doc/StandupMD/Config/Cli.html +2 -2
- data/doc/StandupMD/Config/Entry.html +2 -2
- data/doc/StandupMD/Entry.html +6 -6
- data/doc/StandupMD/File.html +26 -23
- data/doc/StandupMD/Version.html +176 -0
- data/doc/created.rid +13 -13
- data/doc/index.html +49 -48
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search_index.js +1 -1
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +38 -28
- data/lib/standup_md.rb +2 -1
- data/lib/standup_md/cli.rb +2 -3
- data/lib/standup_md/cli/helpers.rb +45 -37
- data/lib/standup_md/config.rb +0 -2
- data/lib/standup_md/config/cli.rb +2 -4
- data/lib/standup_md/config/entry.rb +2 -4
- data/lib/standup_md/entry.rb +0 -1
- data/lib/standup_md/entry_list.rb +1 -1
- data/lib/standup_md/file.rb +29 -12
- data/lib/standup_md/file/helpers.rb +13 -15
- data/lib/standup_md/version.rb +23 -4
- data/standup_md.gemspec +12 -16
- metadata +7 -6
data/lib/standup_md/config.rb
CHANGED
@@ -4,11 +4,9 @@ require 'date'
|
|
4
4
|
|
5
5
|
module StandupMD
|
6
6
|
class Config
|
7
|
-
|
8
7
|
##
|
9
8
|
# The configuration class for StandupMD::Cli
|
10
9
|
class Cli
|
11
|
-
|
12
10
|
##
|
13
11
|
# The default options.
|
14
12
|
#
|
@@ -22,8 +20,8 @@ module StandupMD
|
|
22
20
|
print: false,
|
23
21
|
auto_fill_previous: true,
|
24
22
|
preference_file:
|
25
|
-
::File.expand_path(::File.join(ENV['HOME'], '.standuprc'))
|
26
|
-
}
|
23
|
+
::File.expand_path(::File.join(ENV['HOME'], '.standuprc'))
|
24
|
+
}.freeze
|
27
25
|
|
28
26
|
##
|
29
27
|
# The editor to use when opening standup files. If one is not set, the
|
@@ -2,11 +2,9 @@
|
|
2
2
|
|
3
3
|
module StandupMD
|
4
4
|
class Config
|
5
|
-
|
6
5
|
##
|
7
6
|
# The configuration class for StandupMD::Entry
|
8
7
|
class Entry
|
9
|
-
|
10
8
|
##
|
11
9
|
# The default options.
|
12
10
|
#
|
@@ -15,8 +13,8 @@ module StandupMD
|
|
15
13
|
current: ["<!-- ADD TODAY'S WORK HERE -->"],
|
16
14
|
previous: [],
|
17
15
|
impediments: ['None'],
|
18
|
-
notes: []
|
19
|
-
}
|
16
|
+
notes: []
|
17
|
+
}.freeze
|
20
18
|
|
21
19
|
##
|
22
20
|
# Tasks for "Current" section.
|
data/lib/standup_md/entry.rb
CHANGED
data/lib/standup_md/file.rb
CHANGED
@@ -5,7 +5,6 @@ require 'fileutils'
|
|
5
5
|
require_relative 'file/helpers'
|
6
6
|
|
7
7
|
module StandupMD
|
8
|
-
|
9
8
|
##
|
10
9
|
# Class for handling reading and writing standup files.
|
11
10
|
class File
|
@@ -26,6 +25,11 @@ module StandupMD
|
|
26
25
|
#
|
27
26
|
# @return [StandupMD::File]
|
28
27
|
def self.load(file_name)
|
28
|
+
unless ::File.directory?(config.directory)
|
29
|
+
raise "Dir #{config.directory} not found." unless config.create
|
30
|
+
|
31
|
+
FileUtils.mkdir_p(config.directory)
|
32
|
+
end
|
29
33
|
new(file_name).load
|
30
34
|
end
|
31
35
|
|
@@ -34,10 +38,14 @@ module StandupMD
|
|
34
38
|
#
|
35
39
|
# @param [String] File_naem
|
36
40
|
def self.find(file_name)
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
unless ::File.directory?(config.directory)
|
42
|
+
raise "Dir #{config.directory} not found." unless config.create
|
43
|
+
|
44
|
+
FileUtils.mkdir_p(config.directory)
|
40
45
|
end
|
46
|
+
file = Dir.entries(config.directory).bsearch { |f| f == file_name }
|
47
|
+
raise "File #{file_name} not found." if file.nil? && !config.create
|
48
|
+
|
41
49
|
new(file_name)
|
42
50
|
end
|
43
51
|
|
@@ -46,8 +54,12 @@ module StandupMD
|
|
46
54
|
#
|
47
55
|
# @param [Date] date
|
48
56
|
def self.find_by_date(date)
|
49
|
-
unless date.is_a?(Date)
|
50
|
-
|
57
|
+
raise ArgumentError, 'Must be a Date object' unless date.is_a?(Date)
|
58
|
+
|
59
|
+
unless ::File.directory?(config.directory)
|
60
|
+
raise "Dir #{config.directory} not found." unless config.create
|
61
|
+
|
62
|
+
FileUtils.mkdir_p(config.directory)
|
51
63
|
end
|
52
64
|
find(date.strftime(config.name_format))
|
53
65
|
end
|
@@ -79,6 +91,7 @@ module StandupMD
|
|
79
91
|
|
80
92
|
unless ::File.directory?(@config.directory)
|
81
93
|
raise "Dir #{@config.directory} not found." unless @config.create
|
94
|
+
|
82
95
|
FileUtils.mkdir_p(@config.directory)
|
83
96
|
end
|
84
97
|
|
@@ -86,6 +99,7 @@ module StandupMD
|
|
86
99
|
|
87
100
|
unless ::File.file?(@name)
|
88
101
|
raise "File #{@name} not found." unless @config.create
|
102
|
+
|
89
103
|
FileUtils.touch(@name)
|
90
104
|
end
|
91
105
|
|
@@ -124,21 +138,23 @@ module StandupMD
|
|
124
138
|
# @return [StandupMD::FileList]
|
125
139
|
def load
|
126
140
|
raise "File #{name} does not exist." unless ::File.file?(name)
|
141
|
+
|
127
142
|
entry_list = EntryList.new
|
128
143
|
record = {}
|
129
144
|
section_type = ''
|
130
145
|
::File.foreach(name) do |line|
|
131
146
|
line.chomp!
|
132
147
|
next if line.strip.empty?
|
133
|
-
|
148
|
+
|
149
|
+
if header?(line)
|
134
150
|
unless record.empty?
|
135
151
|
entry_list << new_entry(record)
|
136
152
|
record = {}
|
137
153
|
end
|
138
|
-
record['header'] = line.sub(
|
139
|
-
|
140
|
-
|
141
|
-
elsif
|
154
|
+
record['header'] = line.sub(/^\#{#{@config.header_depth}}\s*/, '')
|
155
|
+
section_type = @config.notes_header
|
156
|
+
record[section_type] = []
|
157
|
+
elsif sub_header?(line)
|
142
158
|
section_type = determine_section_type(line)
|
143
159
|
record[section_type] = []
|
144
160
|
else
|
@@ -161,7 +177,7 @@ module StandupMD
|
|
161
177
|
# @param [Hash] {start_date: Date, end_date: Date}
|
162
178
|
#
|
163
179
|
# @return [Boolean] true if successful
|
164
|
-
def write(dates
|
180
|
+
def write(**dates)
|
165
181
|
sorted_entries = entries.sort
|
166
182
|
start_date = dates.fetch(:start_date, sorted_entries.first.date)
|
167
183
|
end_date = dates.fetch(:end_date, sorted_entries.last.date)
|
@@ -171,6 +187,7 @@ module StandupMD
|
|
171
187
|
@config.sub_header_order.each do |attr|
|
172
188
|
tasks = entry.public_send(attr)
|
173
189
|
next if !tasks || tasks.empty?
|
190
|
+
|
174
191
|
f.puts sub_header(@config.public_send("#{attr}_header").capitalize)
|
175
192
|
tasks.each { |task| f.puts @config.bullet_character + ' ' + task }
|
176
193
|
end
|
@@ -2,40 +2,38 @@
|
|
2
2
|
|
3
3
|
module StandupMD
|
4
4
|
class File
|
5
|
-
|
6
5
|
##
|
7
6
|
# Module responsible for reading and writing standup files.
|
8
7
|
module Helpers # :nodoc:
|
9
|
-
|
10
8
|
private
|
11
9
|
|
12
|
-
def
|
10
|
+
def header?(line) # :nodoc:
|
13
11
|
line.match(header_regex)
|
14
12
|
end
|
15
13
|
|
16
|
-
def
|
14
|
+
def sub_header?(line) # :nodoc:
|
17
15
|
line.match(sub_header_regex)
|
18
16
|
end
|
19
17
|
|
20
18
|
def header_regex # :nodoc:
|
21
|
-
|
19
|
+
/^#{'#' * StandupMD.config.file.header_depth}\s+/
|
22
20
|
end
|
23
21
|
|
24
22
|
def sub_header_regex # :nodoc:
|
25
|
-
|
23
|
+
/^#{'#' * StandupMD.config.file.sub_header_depth}\s+/
|
26
24
|
end
|
27
25
|
|
28
26
|
def bullet_character_regex # :nodoc:
|
29
|
-
|
27
|
+
/\s*#{StandupMD.config.file.bullet_character}\s*/
|
30
28
|
end
|
31
29
|
|
32
30
|
def determine_section_type(line) # :nodoc:
|
33
|
-
line = line.sub(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
31
|
+
line = line.sub(/^\#{#{StandupMD.config.file.sub_header_depth}}\s*/, '')
|
32
|
+
[
|
33
|
+
StandupMD.config.file.current_header,
|
34
|
+
StandupMD.config.file.previous_header,
|
35
|
+
StandupMD.config.file.impediments_header,
|
36
|
+
StandupMD.config.file.notes_header
|
39
37
|
].each { |header| return header if line.include?(header) }
|
40
38
|
raise "Unrecognized header [#{line}]"
|
41
39
|
end
|
@@ -54,8 +52,8 @@ module StandupMD
|
|
54
52
|
'#' * StandupMD.config.file.header_depth + ' ' + date.strftime(StandupMD.config.file.header_date_format)
|
55
53
|
end
|
56
54
|
|
57
|
-
def sub_header(
|
58
|
-
'#' * StandupMD.config.file.sub_header_depth + ' ' +
|
55
|
+
def sub_header(subhead)
|
56
|
+
'#' * StandupMD.config.file.sub_header_depth + ' ' + subhead
|
59
57
|
end
|
60
58
|
end
|
61
59
|
end
|
data/lib/standup_md/version.rb
CHANGED
@@ -1,9 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module StandupMD
|
4
|
+
|
4
5
|
##
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
8
|
-
|
6
|
+
# Module that contains all gem version information. Follows semantic
|
7
|
+
# versioning. Read: https://semver.org/
|
8
|
+
module Version
|
9
|
+
|
10
|
+
##
|
11
|
+
# Major version.
|
12
|
+
MAJOR = 0
|
13
|
+
|
14
|
+
##
|
15
|
+
# Minor version.
|
16
|
+
MINOR = 3
|
17
|
+
|
18
|
+
##
|
19
|
+
# Patch version.
|
20
|
+
PATCH = 6
|
21
|
+
|
22
|
+
##
|
23
|
+
# Version as +MAJOR.MINOR.PATCH+
|
24
|
+
def self.to_s
|
25
|
+
"#{MAJOR}.#{MINOR}.#{PATCH}"
|
26
|
+
end
|
27
|
+
end
|
9
28
|
end
|
data/standup_md.gemspec
CHANGED
@@ -2,7 +2,7 @@ require_relative 'lib/standup_md/version'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'standup_md'
|
5
|
-
spec.version = StandupMD::
|
5
|
+
spec.version = StandupMD::Version.to_s
|
6
6
|
spec.authors = ['Evan Gray']
|
7
7
|
spec.email = 'evanthegrayt@vivaldi.net'
|
8
8
|
spec.license = 'MIT'
|
@@ -12,25 +12,21 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = %q{Generate and edit standups in markdown format}
|
13
13
|
spec.homepage = 'https://evanthegrayt.github.io/standup_md/'
|
14
14
|
|
15
|
-
|
16
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
17
|
-
if spec.respond_to?(:metadata)
|
18
|
-
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
19
|
-
|
20
|
-
spec.metadata['homepage_uri'] = spec.homepage
|
21
|
-
spec.metadata['source_code_uri'] = 'https://github.com/evanthegrayt/standup_md'
|
22
|
-
spec.metadata['documentation_uri'] = 'https://evanthegrayt.github.io/standup_md/doc/index.html'
|
23
|
-
else
|
15
|
+
unless spec.respond_to?(:metadata)
|
24
16
|
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
25
17
|
'public gem pushes.'
|
26
18
|
end
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
20
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
22
|
+
spec.metadata['source_code_uri'] =
|
23
|
+
'https://github.com/evanthegrayt/standup_md'
|
24
|
+
spec.metadata['documentation_uri'] =
|
25
|
+
'https://evanthegrayt.github.io/standup_md/doc/index.html'
|
26
|
+
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
28
|
+
f.match(%r{^(test|spec|features)/})
|
29
|
+
end
|
34
30
|
spec.bindir = 'bin'
|
35
31
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
36
32
|
spec.require_paths = ['lib']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standup_md
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Gray
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- doc/StandupMD/Entry.html
|
93
93
|
- doc/StandupMD/EntryList.html
|
94
94
|
- doc/StandupMD/File.html
|
95
|
+
- doc/StandupMD/Version.html
|
95
96
|
- doc/created.rid
|
96
97
|
- doc/css/fonts.css
|
97
98
|
- doc/css/rdoc.css
|
@@ -158,7 +159,7 @@ metadata:
|
|
158
159
|
homepage_uri: https://evanthegrayt.github.io/standup_md/
|
159
160
|
source_code_uri: https://github.com/evanthegrayt/standup_md
|
160
161
|
documentation_uri: https://evanthegrayt.github.io/standup_md/doc/index.html
|
161
|
-
post_install_message:
|
162
|
+
post_install_message:
|
162
163
|
rdoc_options: []
|
163
164
|
require_paths:
|
164
165
|
- lib
|
@@ -173,8 +174,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
174
|
- !ruby/object:Gem::Version
|
174
175
|
version: '0'
|
175
176
|
requirements: []
|
176
|
-
rubygems_version: 3.
|
177
|
-
signing_key:
|
177
|
+
rubygems_version: 3.2.3
|
178
|
+
signing_key:
|
178
179
|
specification_version: 4
|
179
180
|
summary: The cure for all your standup woes
|
180
181
|
test_files: []
|