topicz 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|