todo-jsonl 0.1.2 → 0.1.3
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/bin/todo.rb +35 -4
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d377d1c1d58686c97a60bec10e9267eda9bb05204cacfaa9cb63af9d84dd6ab4
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: dd458140d3c0267c6e3f5508823eb28cd3e99b719da41ba7e4721005a5e1e896
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2d65cc701711b1fff15a3e630554ddf0e48d0455717d24a179ec504d17b7d0b690736e4c58a8cff614d1813782350d64cba7411b38f8c29fcb1c52162481b73e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 40132a85f1a25e96a44c1ff45aa98a2a4602562cefcad8b7870b0f87fa9da3260b8c4f554ec1eb9471e920411655174df1f447e31641b5c8794d69c5896cebb3
         
     | 
    
        data/bin/todo.rb
    CHANGED
    
    | 
         @@ -25,6 +25,7 @@ 
     | 
|
| 
       25 
25 
     | 
    
         
             
            # SOFTWARE.
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            require 'json'
         
     | 
| 
      
 28 
     | 
    
         
            +
            require 'date'
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
            DATE_FORMAT = '%Y-%m-%d'
         
     | 
| 
       30 
31 
     | 
    
         | 
| 
         @@ -72,6 +73,13 @@ QUERIES = { 
     | 
|
| 
       72 
73 
     | 
    
         
             
              ':all'     => 'state=\w+'
         
     | 
| 
       73 
74 
     | 
    
         
             
            }
         
     | 
| 
       74 
75 
     | 
    
         | 
| 
      
 76 
     | 
    
         
            +
            TODAY = DateTime.now
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            DUE_DATE_DAYS = ['today', 'tomorrow']
         
     | 
| 
      
 79 
     | 
    
         
            +
            (2..6).each do |day|
         
     | 
| 
      
 80 
     | 
    
         
            +
              DUE_DATE_DAYS.push((TODAY.to_date + day).strftime('%A').downcase)
         
     | 
| 
      
 81 
     | 
    
         
            +
            end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       75 
83 
     | 
    
         
             
            PRIORITY_FLAG = '*'
         
     | 
| 
       76 
84 
     | 
    
         | 
| 
       77 
85 
     | 
    
         
             
            TODO_FILE = "#{ENV['HOME']}/todo.jsonl"
         
     | 
| 
         @@ -86,6 +94,7 @@ def usage 
     | 
|
| 
       86 
94 
     | 
    
         
             
                * done <tasknumber>              mark task as completed
         
     | 
| 
       87 
95 
     | 
    
         
             
                * block <tasknumber>             mark task as blocked
         
     | 
| 
       88 
96 
     | 
    
         
             
                * prio <tasknumber>              toggle high priority flag
         
     | 
| 
      
 97 
     | 
    
         
            +
                * due <tasknumber> <date>        set due date
         
     | 
| 
       89 
98 
     | 
    
         | 
| 
       90 
99 
     | 
    
         
             
                * append <tasknumber> <text>     append text to task title
         
     | 
| 
       91 
100 
     | 
    
         
             
                * rename <tasknumber> <text>     rename task
         
     | 
| 
         @@ -183,6 +192,14 @@ def set_priority(item) 
     | 
|
| 
       183 
192 
     | 
    
         
             
              list(tasks)
         
     | 
| 
       184 
193 
     | 
    
         
             
            end
         
     | 
| 
       185 
194 
     | 
    
         | 
| 
      
 195 
     | 
    
         
            +
            def due_date(item, date = '')
         
     | 
| 
      
 196 
     | 
    
         
            +
              tasks = load_tasks(item)
         
     | 
| 
      
 197 
     | 
    
         
            +
              tasks[item][:due] = date.nil? || date.empty? ? nil : Date.parse(date).strftime(DATE_FORMAT)
         
     | 
| 
      
 198 
     | 
    
         
            +
              tasks[item][:modified] = Time.now.strftime(DATE_FORMAT)
         
     | 
| 
      
 199 
     | 
    
         
            +
              write_tasks(tasks)
         
     | 
| 
      
 200 
     | 
    
         
            +
              list(tasks)
         
     | 
| 
      
 201 
     | 
    
         
            +
            end
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
       186 
203 
     | 
    
         
             
            def list(tasks = nil, patterns = nil)
         
     | 
| 
       187 
204 
     | 
    
         
             
              items = {}
         
     | 
| 
       188 
205 
     | 
    
         
             
              tasks = tasks || load_tasks
         
     | 
| 
         @@ -204,7 +221,19 @@ def list(tasks = nil, patterns = nil) 
     | 
|
| 
       204 
221 
     | 
    
         
             
                display_state = colorize(STATES[state], color)
         
     | 
| 
       205 
222 
     | 
    
         
             
                title = task[:title].gsub(/@\w+/) { |tag| colorize(tag, :cyan) }
         
     | 
| 
       206 
223 
     | 
    
         
             
                priority_flag = task[:priority] ? colorize(PRIORITY_FLAG, :red) : ' '
         
     | 
| 
       207 
     | 
    
         
            -
                 
     | 
| 
      
 224 
     | 
    
         
            +
                due_date = ''
         
     | 
| 
      
 225 
     | 
    
         
            +
                if task[:due] && state != 'done'
         
     | 
| 
      
 226 
     | 
    
         
            +
                  date_diff = (Date.parse(task[:due]) - TODAY.to_date).to_i
         
     | 
| 
      
 227 
     | 
    
         
            +
                  if date_diff < 0
         
     | 
| 
      
 228 
     | 
    
         
            +
                    due_date = colorize("(#{date_diff.abs}d overdue)", :red)
         
     | 
| 
      
 229 
     | 
    
         
            +
                  elsif date_diff == 0 || date_diff == 1
         
     | 
| 
      
 230 
     | 
    
         
            +
                    due_date = colorize("(#{DUE_DATE_DAYS[date_diff]})", :yellow)
         
     | 
| 
      
 231 
     | 
    
         
            +
                  else
         
     | 
| 
      
 232 
     | 
    
         
            +
                    due_date = colorize("(#{DUE_DATE_DAYS[date_diff] || task[:due]})", :magenta) if date_diff > 1
         
     | 
| 
      
 233 
     | 
    
         
            +
                  end
         
     | 
| 
      
 234 
     | 
    
         
            +
                  due_date = ' ' + due_date
         
     | 
| 
      
 235 
     | 
    
         
            +
                end
         
     | 
| 
      
 236 
     | 
    
         
            +
                puts "#{num.to_s.rjust(4, ' ')}:#{priority_flag}#{display_state} #{title}#{due_date}"
         
     | 
| 
       208 
237 
     | 
    
         
             
              end
         
     | 
| 
       209 
238 
     | 
    
         
             
              puts 'No todos found' if items.empty?
         
     | 
| 
       210 
239 
     | 
    
         
             
            end
         
     | 
| 
         @@ -266,14 +295,16 @@ def read(arguments) 
     | 
|
| 
       266 
295 
     | 
    
         
             
                  args.length == 1 ? change_state(args.first.to_i, 'blocked') : list(nil, [':blocked'])
         
     | 
| 
       267 
296 
     | 
    
         
             
                when 'prio'
         
     | 
| 
       268 
297 
     | 
    
         
             
                  set_priority(args.first.to_i) if args.length == 1
         
     | 
| 
      
 298 
     | 
    
         
            +
                when 'due'
         
     | 
| 
      
 299 
     | 
    
         
            +
                  due_date(args.first.to_i, (args[1..-1] || []).join(' ')) unless args.length < 1
         
     | 
| 
       269 
300 
     | 
    
         
             
                when 'append'
         
     | 
| 
       270 
     | 
    
         
            -
                  append(args.first.to_i, args[1..-1].join(' ')) unless args.length <  
     | 
| 
      
 301 
     | 
    
         
            +
                  append(args.first.to_i, args[1..-1].join(' ')) unless args.length < 2
         
     | 
| 
       271 
302 
     | 
    
         
             
                when 'rename'
         
     | 
| 
       272 
     | 
    
         
            -
                  rename(args.first.to_i, args[1..-1].join(' ')) unless args.length <  
     | 
| 
      
 303 
     | 
    
         
            +
                  rename(args.first.to_i, args[1..-1].join(' ')) unless args.length < 2
         
     | 
| 
       273 
304 
     | 
    
         
             
                when 'del'
         
     | 
| 
       274 
305 
     | 
    
         
             
                  delete(args.first.to_i) if args.length == 1
         
     | 
| 
       275 
306 
     | 
    
         
             
                when 'note'
         
     | 
| 
       276 
     | 
    
         
            -
                  add_note(args.first.to_i, args[1..-1].join(' ')) unless args.length <  
     | 
| 
      
 307 
     | 
    
         
            +
                  add_note(args.first.to_i, args[1..-1].join(' ')) unless args.length < 2
         
     | 
| 
       277 
308 
     | 
    
         
             
                when 'delnote'
         
     | 
| 
       278 
309 
     | 
    
         
             
                  delete_note(args.first.to_i) if args.length == 1
         
     | 
| 
       279 
310 
     | 
    
         
             
                when 'list'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: todo-jsonl
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Gabor Bata
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-10-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            email: 
         
     |