wlog 0.0.3 → 1.0.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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/Gemfile +1 -0
  4. data/README.md +72 -3
  5. data/Rakefile +31 -0
  6. data/bin/wlog +12 -6
  7. data/lib/wlog.rb +0 -1
  8. data/lib/wlog/commands/commandable.rb +9 -0
  9. data/lib/wlog/commands/concat_description.rb +21 -0
  10. data/lib/wlog/commands/innit_db.rb +22 -0
  11. data/lib/wlog/commands/make_csv.rb +24 -0
  12. data/lib/wlog/commands/new_entry.rb +16 -0
  13. data/lib/wlog/commands/replace_pattern.rb +21 -0
  14. data/lib/wlog/db_registry.rb +19 -31
  15. data/lib/wlog/domain/ansi_colors.rb +15 -0
  16. data/lib/wlog/domain/attachment.rb +80 -0
  17. data/lib/wlog/domain/helpers.rb +42 -0
  18. data/lib/wlog/domain/issue.rb +100 -0
  19. data/lib/wlog/domain/key_value.rb +55 -0
  20. data/lib/wlog/domain/log_entry.rb +100 -0
  21. data/lib/wlog/domain/sql_modules/attachment_sql.rb +21 -0
  22. data/lib/wlog/domain/sql_modules/issue_sql.rb +28 -0
  23. data/lib/wlog/domain/sql_modules/key_value_sql.rb +20 -0
  24. data/lib/wlog/domain/sql_modules/log_entry_sql.rb +35 -0
  25. data/lib/wlog/domain/sql_modules/polymorphic_attachments_sql.rb +24 -0
  26. data/lib/wlog/domain/static_configurations.rb +24 -0
  27. data/lib/wlog/domain/sys_config.rb +23 -0
  28. data/lib/wlog/sql/mono/1.sql +50 -0
  29. data/lib/wlog/sql/seq/.gitkeep +0 -0
  30. data/lib/wlog/ui/cli_interface.rb +152 -0
  31. data/lib/wlog/ui/commands/attach_to_issue.rb +0 -0
  32. data/lib/wlog/ui/commands/attach_to_log_entry.rb +11 -0
  33. data/lib/wlog/ui/commands/create_issue.rb +18 -0
  34. data/lib/wlog/ui/commands/ui_command.rb +9 -0
  35. data/lib/wlog/ui/issue_ui.rb +126 -0
  36. data/lib/wlog/version.rb +1 -1
  37. data/spec/key_vale_spec.rb +9 -0
  38. data/wlog.gemspec +6 -2
  39. metadata +61 -8
  40. data/lib/wlog/cli_interface.rb +0 -149
  41. data/lib/wlog/helpers.rb +0 -28
  42. data/lib/wlog/log_entry.rb +0 -102
  43. data/lib/wlog/static_configurations.rb +0 -21
@@ -1,149 +0,0 @@
1
- require 'wlog/log_entry.rb'
2
-
3
- module Wlog
4
- # Author :: Simon Symeonidis
5
- class CliInterface
6
-
7
- # Run the interface
8
- def run
9
- cmd = "default"
10
- until cmd == "end" do
11
- print "[wlog::] "
12
- cmd = $stdin.gets
13
- cmd ||= "end"
14
- cmd.chomp!
15
-
16
- case cmd
17
- when "new"
18
- puts "Enter work description:"
19
- print " "
20
- new_entry_command
21
- puts "ok"
22
-
23
- when "show"
24
- puts "Showing latest log entries"
25
- show_entries_command
26
-
27
- when "outcsv"
28
- puts "Exporting to CSV."
29
- fh = File.open("out.csv", "w")
30
- fh.write(make_csv)
31
- fh.close
32
-
33
- when "delete"
34
- print "Remove task with id: "
35
- delete_entry_command
36
-
37
- when "search"
38
- search_term
39
-
40
- when "concat"
41
- concat_description
42
-
43
- when "replace"
44
- replace_pattern
45
-
46
- when "help"
47
- print_help
48
- end
49
- end
50
- end
51
-
52
- # TODO the commands should be factored out
53
- def self.list_databases_command
54
- puts "Available Worklog databases: "
55
- Dir["#{StaticConfigurations::DATA_DIRECTORY}*"].each do |n|
56
- print "[%8d bytes]" % File.size(n)
57
- print " "
58
- print n
59
- puts
60
- end
61
- end
62
-
63
- private
64
-
65
- # Print the help of the cli app
66
- def print_help
67
- ["new", "Create a new log entry",
68
- "outcsv", "Export everything to CSV",
69
- "help", "print this dialog",
70
- "concat", "Add a string at the end of a previous entry",
71
- "end", "Exit the progam",
72
- "search", "Search for a string in the log description text",
73
- "delete", "Remove the task with a given id"].each_with_index do |el,ix|
74
- print " " if 1 == ix % 2
75
- puts el
76
- end
77
- end
78
-
79
- # new entry command
80
- def new_entry_command
81
- description = $stdin.gets.chomp!
82
- log_entry = LogEntry.new
83
- log_entry.description = description
84
- log_entry.insert
85
- end
86
-
87
- def show_entries_command
88
- print_entries(LogEntry.find_all)
89
- end
90
-
91
- def print_entries(entries_arr)
92
- date_collections = entries_arr.group_by{|le| le.date.strftime("%Y-%m-%d")}
93
- date_collections.each_key do |k|
94
- print "\x1b[32;1m#{k}\x1b[0m - "
95
- print "\x1b[33;1m#{date_collections[k].first.date.strftime("%A")}\x1b[0m "
96
- puts "[\x1b[35;1m#{date_collections[k].count}\x1b[0m]"
97
- date_collections[k].each do |le|
98
- puts " #{le}"
99
- end
100
- end
101
- end
102
-
103
- def search_term
104
- print "Term to search: "
105
- term = $stdin.gets.chomp!
106
- print_entries(LogEntry.search_descriptions(term))
107
- end
108
-
109
- def delete_entry_command
110
- LogEntry.delete($stdin.gets.to_i)
111
- end
112
-
113
- def make_csv
114
- str = String.new
115
- LogEntry.find_all.group_by{|el| el.date.strftime("%Y-%m-%d")}.each_pair do |key,value|
116
- str.concat("#{value.first.date.strftime("%A")} {key}\n")
117
- value.each do |entry|
118
- str.concat(",\"#{entry.description}\"")
119
- end
120
- end
121
- str
122
- end
123
-
124
- # Concatenate an aggregate description to a previous item
125
- def concat_description
126
- print "ID of task to concatenate to: "
127
- id = $stdin.gets.to_i
128
- log_entry = LogEntry.find(id)
129
- print "Information to concatenate: "
130
- str = $stdin.gets.chomp!
131
- log_entry.description.concat(str)
132
- log_entry.update
133
- end
134
-
135
- # Replace a pattern from a description of a log entry
136
- def replace_pattern
137
- print "ID of task to perform replace: "
138
- id = $stdin.gets.to_i
139
- print "replace : "
140
- pattern1 = $stdin.gets.chomp!
141
- print "with : "
142
- pattern2 = $stdin.gets.chomp!
143
-
144
- log_entry = LogEntry.find(id)
145
- log_entry.description.gsub!(pattern1,pattern2)
146
- log_entry.update
147
- end
148
- end
149
- end # module Wlog
data/lib/wlog/helpers.rb DELETED
@@ -1,28 +0,0 @@
1
- module Wlog
2
- # @author Simon Symeonidis
3
- # @date Wed Jul 10 17:37:24 EDT 2013
4
- # This contains a few helper methods that may be used by any part in the
5
- # application.
6
- class Helpers
7
-
8
- # Break the string to a different line
9
- # @param string is the string that we want processed.
10
- # @param numchars is the amount of characters max per line.
11
- def self.break_string(string,numchars)
12
- desc = ""
13
- cl = 0
14
- string.split.each do |word|
15
- if cl + word.length + 1 > numchars
16
- cl = 0
17
- desc.concat($/)
18
- end
19
- desc.concat(word).concat(" ")
20
- cl += word.length + 1
21
- end
22
-
23
- desc.chomp!
24
- desc
25
- end
26
-
27
- end
28
- end # module Wlog
@@ -1,102 +0,0 @@
1
- require 'wlog/db_registry.rb'
2
- require 'wlog/helpers.rb'
3
-
4
- module Wlog
5
- # Author :: Simon Symeonidis
6
- # Active Record Domain object for a log entry
7
- class LogEntry
8
-
9
- def initialize
10
- @date = Time.new
11
- end
12
-
13
- def self.find(id)
14
- row = DbRegistry.instance.execute(@@select,id).first
15
- le = LogEntry.new
16
- le.id = row[0]
17
- le.description = row[1]
18
- le.date = Time.at(row[2])
19
- le
20
- end
21
-
22
- def self.find_all
23
- all = Array.new
24
- DbRegistry.instance.execute(@@select_all).each do |row|
25
- le = LogEntry.new
26
- le.id = row[0]
27
- le.description = row[1]
28
- le.date = Time.at(row[2])
29
- all.push le
30
- end
31
- all
32
- end
33
-
34
- def self.delete(id)
35
- DbRegistry.instance.execute(@@delete_sql,id)
36
- end
37
-
38
- # TODO this shouldn't be here
39
- def self.create_table
40
- DbRegistry.instance.execute(@@create_sql)
41
- end
42
-
43
- # update the entry
44
- def update
45
- DbRegistry.instance.execute(@@update_sql,@description,@id)
46
- end
47
-
48
- # Search by string to find a matching description with 'LIKE'.
49
- def self.search_descriptions(term)
50
- all = Array.new
51
- DbRegistry.instance.execute(@@select_description_like,"%#{term}%").each do |row|
52
- le = LogEntry.new
53
- le.id = row[0]
54
- le.description = row[1]
55
- le.date = Time.at(row[2])
56
- all.push le
57
- end
58
- all
59
- end
60
-
61
- def insert
62
- DbRegistry.instance.execute(@@insert_sql,@description,@date.to_i)
63
- end
64
-
65
- # Delete the loaded log entry currently in memory, by passing its id
66
- def delete
67
- self.delete(self.id)
68
- end
69
-
70
- # Print things nicely formmated no more than 80 cars (well, unless you stick
71
- # the time in the end which is not counted for).
72
- def to_s
73
- str = "[#{id}] "
74
- tmp = @description + " [#{@date.strftime("%H:%M:%S")}]"
75
- desc = Wlog::Helpers.break_string(tmp,80)
76
- indent = " " * (id.to_s.split('').count + 5)
77
- desc.gsub!(/#{$/}/, "#{$/}#{indent}")
78
- str.concat(desc)
79
- str
80
- end
81
-
82
- # The identity field for the log entry DO
83
- attr_accessor :id
84
-
85
- # Text description for the log entry
86
- attr_accessor :description
87
-
88
- # Date the entry was created
89
- attr_accessor :date
90
-
91
- ## SQL ##
92
- @@table_name = "log_entries"
93
- @@insert_sql = "INSERT INTO #{@@table_name} (description,date) values (?,?);"
94
- @@delete_sql = "DELETE FROM #{@@table_name} WHERE id = ? ;"
95
- @@select_all = "SELECT * FROM #{@@table_name} ORDER BY date ASC;"
96
- @@update_sql = "UPDATE #{@@table_name} SET description=? WHERE id=?;"
97
- #@@select_all = "SELECT * FROM #{@@table_name} WHERE date >=#{Time.now.to_i - 604800 - 24 * 60 * 60} ORDER BY date ASC"
98
- @@select = "SELECT * FROM #{@@table_name} WHERE id = ? ;"
99
- @@select_description_like = "SELECT * FROM #{@@table_name} WHERE description LIKE ?;"
100
-
101
- end
102
- end # module Wlog
@@ -1,21 +0,0 @@
1
- module Wlog
2
- # Author :: Simon Symeonidis
3
- # Licenses :: GPL v3.0
4
- # Static path data.
5
- module StaticConfigurations
6
- # The application name
7
- APPLICATION_NAME = "wlog"
8
-
9
- # Absolute path to the configuration directory
10
- CONFIGURATION_DIRECTORY = "#{ENV['HOME']}/.config/"
11
-
12
- # Absolute path to the application directory
13
- APPLICATION_DIRECTORY = "#{CONFIGURATION_DIRECTORY}#{APPLICATION_NAME}/"
14
-
15
- # Absolute path to the data directory
16
- DATA_DIRECTORY = "#{APPLICATION_DIRECTORY}data/"
17
-
18
- # Default database name (when unspecified)
19
- DEFAULT_DATABASE = "default"
20
- end
21
- end # module Wlog