daygram 0.1.1 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 651906613da20c1de44ca8db50986061766fe786
4
- data.tar.gz: c185edb2cf30b07a3b25189538754268cabb86e3
3
+ metadata.gz: 97ff052bcb2a09641871113301f09899f304b667
4
+ data.tar.gz: d994d82e9b8e27060d12ec3749f30683e3fa53fc
5
5
  SHA512:
6
- metadata.gz: 85eb26636b6eeb20d3c8f71cc9b712f87166436fc5972b7beb3632930e07ab6d47d65562b26f3f571991663453832ca8f15c511da814fa31ea79f4d7f824bfcf
7
- data.tar.gz: 6a943ced9eb6e21179ace3cca0173f56180077cfe04eb98e3de389622a173697d743f969daad35a51e1727f04cd06261540df03d44258438e1c8f775582642d0
6
+ metadata.gz: fb220d5df556b5738e1315499769ba06283df186a867551d1a8abccf58e1f8db42515be1060e90c04d78c661c99b90aea5aeae39ff2e30df2e61c25c43799173
7
+ data.tar.gz: af86c49a18f6955b0f708eb7dbb854fe5e018fc85284bf37f7f06b6f46d92af3460870dba3c86c5a21f66735b4dd1a1ef4eae2e7b382251fefc94d9063cd5ab9
data/README.md CHANGED
@@ -55,9 +55,13 @@ To print the latest entry:
55
55
 
56
56
  daygram read latest
57
57
 
58
- To print the last 5 entries:
58
+ To print the last 3 entries:
59
59
 
60
- daygram read last
60
+ daygram read last 3
61
+
62
+ To print the entry for a particular date:
63
+
64
+ daygram read day 2016-11-15
61
65
 
62
66
  To print the entries as JSON, Ruby Hash, or a table:
63
67
 
@@ -8,8 +8,49 @@ require "runcom"
8
8
  require "json"
9
9
  require "pp"
10
10
  require "terminal-table"
11
+ require "daygram/cli_helpers"
11
12
 
12
13
  module Daygram
14
+ class Read < Thor
15
+ include Thor::Actions
16
+ include ThorPlus::Actions
17
+ include Daygram::CLIHelpers
18
+
19
+ def initialize args = [], options = {}, config = {}
20
+ super args, options, config
21
+ end
22
+
23
+ def self.configuration
24
+ Runcom::Configuration.new file_name: Daygram::Identity.file_name
25
+ end
26
+
27
+ class_option :format, :type => :string, :aliases => ['-f']
28
+
29
+ desc "all", %(Read all entries.)
30
+ def all
31
+ db = Daygram::Database.new(options, self.class.configuration)
32
+ say db.all.format_output(options)
33
+ end
34
+
35
+ desc "latest", %(Read latest entry.)
36
+ def latest
37
+ db = Daygram::Database.new(options, self.class.configuration)
38
+ say db.latest.format_output(options)
39
+ end
40
+
41
+ desc "last N", %(Read last N entries.)
42
+ def last n=5
43
+ db = Daygram::Database.new(options, self.class.configuration)
44
+ say db.last(n).format_output(options)
45
+ end
46
+
47
+ desc "day YYYY-MM-DD", %(Read YYYY-MM-DD entry.)
48
+ def day date
49
+ db = Daygram::Database.new(options, self.class.configuration)
50
+ say db.day(date).format_output(options)
51
+ end
52
+ end
53
+
13
54
  # The Command Line Interface (CLI) for the gem.
14
55
  class CLI < Thor
15
56
  include Thor::Actions
@@ -26,9 +67,8 @@ module Daygram
26
67
  end
27
68
 
28
69
  class_option :database, :type => :string, :aliases => ['-d', '-db']
29
- class_option :format, :type => :string, :aliases => ['-f']
30
70
 
31
- desc "c, [config]", %(Manage gem configuration ("#{configuration.computed_path}").)
71
+ desc "config", %(Manage gem configuration ("#{configuration.computed_path}").)
32
72
  map %w[c config -c --config] => :config
33
73
  method_option :edit,
34
74
  aliases: "-e",
@@ -52,67 +92,19 @@ module Daygram
52
92
  end
53
93
  end
54
94
 
55
- desc "v, [version]", "Show gem version."
95
+ desc "version", "Show gem version."
56
96
  map %w[v version -v --version] => :version
57
97
  def version
58
98
  say Identity.version_label
59
99
  end
60
100
 
61
- desc "h, [help=COMMAND]", "Show this message or get help for a command."
101
+ desc "help COMMAND", "Show this message or get help for a command."
62
102
  map %w[h help -h --help] => :help
63
103
  def help task = nil
64
104
  say and super
65
105
  end
66
106
 
67
- desc "r, [read]", %(Read the Daygram journal.)
68
- map %w[r read] => :read
69
- method_option :all,
70
- aliases: "a",
71
- desc: "Read all entries.",
72
- type: :boolean, default: false
73
- method_option :latest,
74
- desc: "Read latest entry.",
75
- type: :boolean, default: false
76
- method_option :last,
77
- desc: "Read last N entries.",
78
- type: :boolean, default: true
79
-
80
- def read task = nil
81
- config = self.class.configuration
82
-
83
- if options[:database]
84
- db_path = options[:database]
85
- elsif config.to_h["database"]
86
- db_path = config.to_h["database"]
87
- else
88
- say "Must specify the database location"
89
- return
90
- end
91
-
92
- unless File.exists? db_path
93
- say "Specified DB does not exist: #{db_path}"
94
- return
95
- end
96
-
97
- db = Daygram::Database.new(db_path)
98
-
99
- if task == 'all'
100
- output = db.all
101
- elsif task == 'last'
102
- output = db.last(5)
103
- elsif task == 'latest'
104
- output = db.latest
105
- end
106
-
107
- if options[:format] == 'hash'
108
- pp output.to_hash
109
- elsif options[:format] == 'json'
110
- pp output.to_json
111
- elsif options[:format] == 'table'
112
- say Terminal::Table.new :title => "Daygram Diary", :headings => output.diary_fields, :rows => output.to_array
113
- else
114
- say output.to_s
115
- end
116
- end
107
+ desc "read", %(Read the Daygram journal.)
108
+ subcommand "read", Read
117
109
  end
118
110
  end
@@ -0,0 +1,5 @@
1
+ module Daygram
2
+ module CLIHelpers
3
+
4
+ end
5
+ end
@@ -3,7 +3,21 @@ require "daygram/database/dataset"
3
3
 
4
4
  module Daygram
5
5
  class Database
6
- def initialize path, options = {}, config = {}
6
+ def initialize options = {}, config = {}
7
+ @options = options
8
+ @config = config
9
+ if @options[:database]
10
+ path = @options[:database]
11
+ elsif config.to_h["database"]
12
+ path = @config.to_h["database"]
13
+ else
14
+ raise "Must specify the database location"
15
+ end
16
+
17
+ unless File.exists? path
18
+ raise "Specified DB does not exist: #{path}"
19
+ end
20
+
7
21
  @DB = Sequel.sqlite(path)
8
22
  end
9
23
 
@@ -18,5 +32,9 @@ module Daygram
18
32
  def all
19
33
  Dataset.new(@DB[:diary].order(:date))
20
34
  end
35
+
36
+ def day date
37
+ Dataset.new(@DB[:diary].where("date == '#{date}'"))
38
+ end
21
39
  end
22
40
  end
@@ -45,6 +45,18 @@ module Daygram
45
45
  def to_json
46
46
  to_hash.to_json
47
47
  end
48
+
49
+ def format_output options
50
+ if options[:format] == 'hash'
51
+ self.to_hash
52
+ elsif options[:format] == 'json'
53
+ self.to_json
54
+ elsif options[:format] == 'table'
55
+ Terminal::Table.new :title => "Daygram Diary", :headings => diary_fields, :rows => self.to_array
56
+ else
57
+ self.to_s
58
+ end
59
+ end
48
60
  end
49
61
  end
50
62
  end
@@ -12,7 +12,7 @@ module Daygram
12
12
  end
13
13
 
14
14
  def self.version
15
- "0.1.1"
15
+ "0.1.5"
16
16
  end
17
17
 
18
18
  def self.version_label
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daygram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon High
@@ -249,7 +249,7 @@ files:
249
249
  - bin/daygram
250
250
  - lib/daygram.rb
251
251
  - lib/daygram/cli.rb
252
- - lib/daygram/cli/read.rb
252
+ - lib/daygram/cli_helpers.rb
253
253
  - lib/daygram/database.rb
254
254
  - lib/daygram/database/dataset.rb
255
255
  - lib/daygram/identity.rb
@@ -1,58 +0,0 @@
1
- module Daygram
2
- module CLISubcommands
3
- class Read < Thor
4
- map %w[r read] => :read
5
- method_option :all,
6
- aliases: "a",
7
- desc: "Read all entries.",
8
- type: :boolean, default: false
9
- method_option :latest,
10
- desc: "Read latest entry.",
11
- type: :boolean, default: false
12
- method_option :last,
13
- desc: "Read last N entries.",
14
- type: :numeric, default: 5
15
- argument :number, :type => :numeric, :desc => "The number to start counting"
16
- desc "read", %(Read the Daygram journal.)
17
- def read task = nil
18
- config = self.class.configuration
19
-
20
- if options[:database]
21
- db_path = options[:database]
22
- elsif config.to_h["database"]
23
- db_path = config.to_h["database"]
24
- else
25
- say "Must specify the database location"
26
- return
27
- end
28
-
29
- unless File.exists? db_path
30
- say "Specified DB does not exist: #{db_path}"
31
- return
32
- end
33
-
34
- db = Daygram::Database.new(db_path)
35
-
36
- if task == 'all'
37
- output = db.all
38
- elsif task == 'last'
39
- require 'pry'
40
- binding.pry
41
- output = db.last()
42
- elsif task == 'latest'
43
- output = db.latest
44
- end
45
-
46
- if options[:format] == 'hash'
47
- pp output.to_hash
48
- elsif options[:format] == 'json'
49
- pp output.to_json
50
- elsif options[:format] == 'table'
51
- say Terminal::Table.new :title => "Daygram Diary", :headings => output.diary_fields, :rows => output.to_array
52
- else
53
- say output.to_s
54
- end
55
- end
56
- end
57
- end
58
- end