topicz 0.2.0 → 0.3.0
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/README.md +5 -3
- data/lib/topicz/commands/_index.rb +2 -1
- data/lib/topicz/commands/report_command.rb +1 -3
- data/lib/topicz/commands/stats_command.rb +61 -0
- data/lib/topicz/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 844f63d69cda9f2348e86b1065278ee4c8e52c8c
|
4
|
+
data.tar.gz: a298c668f262047f91195c815902c17ad8427fa3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebcb89858126e21bbae8db0694d958c94031824196bfb6c0e883a92ed6e5cd23127d0f66279f985e1c93b502c399b10977946f56c9c726ffaa0b8f56c828fdf8
|
7
|
+
data.tar.gz: 9983d8ce2d7340f2fa93c0bc89b49bbd8d27ed5a1249dcd0c06b7dafdfd04dd6d036c0a7eae962b224637a64b8ba6ceef72fb12e8fcb35349aacf23a8872d6c2
|
data/README.md
CHANGED
@@ -20,11 +20,13 @@ See below (*Development*) in case you’re working with a Git clone directly.
|
|
20
20
|
|
21
21
|
init : Initializes a new topic repository
|
22
22
|
create : Creates a new topic
|
23
|
+
list : List topics
|
23
24
|
path : Prints the full path to a topic
|
24
25
|
journal: Opens a (new) weekly journal entry for a topic
|
25
26
|
note : Opens a new note for a topic
|
26
|
-
|
27
|
+
stats : Generates weekly statistics across all topics
|
27
28
|
report : Generates a weekly report of all topics
|
29
|
+
alfred : Searches in Alfred Script Filter format
|
28
30
|
help : Shows help about a command
|
29
31
|
|
30
32
|
## Background
|
@@ -56,7 +58,7 @@ A topic can certainly have other subdirectories than the ones shown above. These
|
|
56
58
|
|
57
59
|
### Documents and Reference Material
|
58
60
|
|
59
|
-
The `Documents` and `Reference Material` directories speak for themselves. The first is for stuff I create, the second for stuff that others create.
|
61
|
+
The `Documents` and `Reference Material` directories speak for themselves. The first is for stuff I create, the second for stuff that others create. Files and subdirectories in these directories must have filenames that are prefixed with the date in `YYYY-mm-DD`. That keeps the files in the right order, and it makes the files show up in the `stats` command.
|
60
62
|
|
61
63
|
### Journal
|
62
64
|
|
@@ -101,7 +103,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
101
103
|
|
102
104
|
## Plans
|
103
105
|
|
104
|
-
* Allow topics to be archived when no longer relevant.
|
106
|
+
* Allow topics to be archived and unarchived when no longer relevant.
|
105
107
|
* Allow relationships between topics to be defined in the YAML files, and use these to generate graphs for Graphviz: `depends-on`, `part-of`, `relates-to`. The CLI will help to guarantee correctness, for example when archiving a topic, or when renaming one’s title and/or ID.
|
106
108
|
* Allow metadata to be defined for each topic, like main stakeholders, categories and topic goals.
|
107
109
|
|
@@ -7,8 +7,9 @@ module Topicz
|
|
7
7
|
'path' => 'Prints the full path to a topic',
|
8
8
|
'journal' => 'Opens a (new) weekly journal entry for a topic',
|
9
9
|
'note' => 'Opens a new note for a topic',
|
10
|
-
'
|
10
|
+
'stats' => 'Generates weekly statistics across all topics',
|
11
11
|
'report' => 'Generates a weekly report of all topics',
|
12
|
+
'alfred' => 'Searches in Alfred Script Filter format',
|
12
13
|
'help' => 'Shows help about a command',
|
13
14
|
}
|
14
15
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require_relative 'repository_command'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
module Topicz::Commands
|
5
4
|
|
@@ -10,7 +9,6 @@ module Topicz::Commands
|
|
10
9
|
@week = Date.today.cweek
|
11
10
|
@year = Date.today.cwyear
|
12
11
|
option_parser.order! arguments
|
13
|
-
@filter = arguments.join ' '
|
14
12
|
end
|
15
13
|
|
16
14
|
def option_parser
|
@@ -23,7 +21,7 @@ module Topicz::Commands
|
|
23
21
|
@year = year.to_i
|
24
22
|
end
|
25
23
|
options.separator ''
|
26
|
-
options.separator 'Generates a weekly report from all journals across all topics.'
|
24
|
+
options.separator 'Generates a weekly report from all journals across all topics in a single Markdown file.'
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require_relative 'repository_command'
|
2
|
+
|
3
|
+
module Topicz::Commands
|
4
|
+
|
5
|
+
class StatsCommand < RepositoryCommand
|
6
|
+
|
7
|
+
def initialize(config_file = nil, arguments = [])
|
8
|
+
super(config_file)
|
9
|
+
@week = Date.today.cweek
|
10
|
+
@year = Date.today.cwyear
|
11
|
+
option_parser.order! arguments
|
12
|
+
end
|
13
|
+
|
14
|
+
def option_parser
|
15
|
+
OptionParser.new do |options|
|
16
|
+
options.banner = 'Usage: stats'
|
17
|
+
options.on('-w', '--week WEEK', 'Use week WEEK instead of the current week') do |week|
|
18
|
+
@week = week.to_i
|
19
|
+
end
|
20
|
+
options.on('-y', '--year YEAR', 'Use year YEAR instead of the current year') do |year|
|
21
|
+
@year = year.to_i
|
22
|
+
end
|
23
|
+
options.separator ''
|
24
|
+
options.separator 'Generates weekly statistics across all topics.'
|
25
|
+
options.separator ''
|
26
|
+
options.separator 'This command reports on all Documents, Notes and Reference Material across all topics.'
|
27
|
+
options.separator 'Contrary to what you might think, this command does NOT look at file timestamps!'
|
28
|
+
options.separator 'Instead it expects each filename to start with a date in yyyy-mm-dd format.'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def execute
|
33
|
+
date = Date.commercial(@year, @week)
|
34
|
+
first = date.strftime('%Y-%m-%d')
|
35
|
+
last = (date + 7).strftime('%Y-%m-%d')
|
36
|
+
|
37
|
+
output = []
|
38
|
+
@repository.topics.each do |topic|
|
39
|
+
stats = find_files(topic, first, last)
|
40
|
+
next if stats.empty?
|
41
|
+
item = "#{topic.title}\n"
|
42
|
+
stats.each {|path| item += "* #{path}\n"}
|
43
|
+
output << item
|
44
|
+
end
|
45
|
+
|
46
|
+
puts output.join("\n") unless output.empty?
|
47
|
+
end
|
48
|
+
|
49
|
+
GLOB_PATTERN = File.join("{#{Topicz::DIR_NOTES},#{Topicz::DIR_DOCUMENTS},#{Topicz::DIR_REFERENCE}}", '*')
|
50
|
+
|
51
|
+
def find_files(topic, first, last)
|
52
|
+
Dir.chdir(topic.fullpath) do
|
53
|
+
Dir.glob(GLOB_PATTERN).select do |path|
|
54
|
+
file = File.basename(path)
|
55
|
+
file >= first && file < last
|
56
|
+
end.sort
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
data/lib/topicz/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topicz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Oostindië
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zaru
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/topicz/commands/path_command.rb
|
129
129
|
- lib/topicz/commands/report_command.rb
|
130
130
|
- lib/topicz/commands/repository_command.rb
|
131
|
+
- lib/topicz/commands/stats_command.rb
|
131
132
|
- lib/topicz/defaults.rb
|
132
133
|
- lib/topicz/repository.rb
|
133
134
|
- lib/topicz/version.rb
|