daily-txt 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a58310eaa20bad02e40d646d7b63ec7dfd89fc18
4
- data.tar.gz: 3040a40fab8dea081dcacf0a8cd8ad68430cfd3e
3
+ metadata.gz: 82fcae4cad96930a6289dde3fb38395fa441c9c3
4
+ data.tar.gz: b0bd112322c56f42246876be2f02f79c75870542
5
5
  SHA512:
6
- metadata.gz: 340e4c00f07099687ced37e5c6c057e79fb8a57c860fbeecf522f9cb5f331e9bb1756e484a283ba7afa099715037385dc949df27571247a8461bd500a5dca32e
7
- data.tar.gz: 048b5855fc258fa3ad94a34e24cb8fe93dee9139ae06c5a7c5c1dca6ed9c991c2d183f84164ba0a68a2f926ff839ec30277f71e1f4e7fff2501965257852c751
6
+ metadata.gz: f9a49e690e5d6cf0a4f1880913d38f91b2ca39c13c628d4c81657f14684c12348ac91ae20a3ed51234d58c4751770152cce1a96b990428e387a4ce86f3f71e2d
7
+ data.tar.gz: 2c2f36efaadcf09782f57dbfce0470f3bc9b6043ee37cccd189cbc25fc8c770ec9f9b1682e9a13b0abfe980d2d409b1307934b6b290a9bb1c75b1087b6e61361
data/README.md CHANGED
@@ -8,12 +8,12 @@ daily-txt is command line script for creating and listing text files that has a
8
8
  $ daily-txt
9
9
  ```
10
10
 
11
- A command above creates text file at /${ROOT}/text/{$YYYY}/{$MM}/${YYYY}_${MM}_${DD}.txt
12
- and open it with default editor. If it already exists, just open it for appending.
11
+ The command above creates text file at /${ROOT}/text/{$YYYY}/{$MM}/${YYYY}_${MM}_${DD}.txt
12
+ and open it with default editor. If it already exists, just open it for editing.
13
13
 
14
14
  ### Initialize
15
15
 
16
- daily-txt command asks ROOT directory and default editor at initial startup, and stores
16
+ At initial startup, daily-txt command asks ROOT directory and default editor. And it stores
17
17
  setting to ~/.daily-txt.rc.
18
18
 
19
19
  ```
@@ -25,6 +25,14 @@ Default Editor? (/usr/bin/vim):
25
25
  Setting stored to ~/.daily-txt.rc
26
26
  ```
27
27
 
28
+ ### Open past file
29
+
30
+ -p 1 for yesterday, -p 2 for the day before yesterday.
31
+
32
+ ```
33
+ $ daily-txt -p 1
34
+ ```
35
+
28
36
  ### Listing
29
37
 
30
38
  List text files
@@ -37,6 +45,12 @@ $ daily-txt -l
37
45
  /your/root/text/2016/04/2016_05_04.txt
38
46
  ```
39
47
 
48
+ ### Search files with text
49
+
50
+ ```
51
+ $ daily-txt -s "search query"
52
+ ```
53
+
40
54
  ## Installation
41
55
 
42
56
  Add this line to your application's Gemfile:
data/lib/daily/txt/cli.rb CHANGED
@@ -3,6 +3,8 @@ require "daily/txt/path_builder"
3
3
  require 'date'
4
4
  require 'optparse'
5
5
  require 'file/visitor'
6
+ require 'term/ansicolor'
7
+ include Term::ANSIColor
6
8
 
7
9
  class Daily::Txt::CLI
8
10
 
@@ -15,12 +17,23 @@ class Daily::Txt::CLI
15
17
  parser.on('-f PATH', 'config file path') do |path|
16
18
  option[:config_path] = path
17
19
  end
20
+ parser.on('-s VAL', '--search VAL', 'search file including VAL') do |query|
21
+ option[:mode] = :search
22
+ option[:query] = query
23
+ end
18
24
  parser.on('-l', '--list', 'list text files') do |path|
19
25
  option[:mode] = :list
20
26
  end
21
27
  parser.on('--ascending', 'make list order ascending') do
22
28
  option[:asc] = true
23
29
  end
30
+ parser.on('-p VAL', 'open file for VAL day(s) ago') do |day|
31
+ past = day.to_i
32
+ if past <= 0
33
+ abort "invalid value for -p: #{day}"
34
+ end
35
+ option[:past] = past
36
+ end
24
37
 
25
38
  begin
26
39
  parser.parse!(argv)
@@ -55,8 +68,10 @@ class Daily::Txt::CLI
55
68
  case option[:mode]
56
69
  when :list
57
70
  list(config, option)
71
+ when :search
72
+ search(config, option[:query])
58
73
  else
59
- open_today(config)
74
+ open_today(config, option[:past])
60
75
  end
61
76
  end
62
77
 
@@ -75,9 +90,33 @@ class Daily::Txt::CLI
75
90
  end
76
91
  end
77
92
 
78
- def open_today(config)
93
+ def search(config, query)
94
+ visitor = File::Visitor.new
95
+ visitor.add_filter(:ext, Daily::Txt::PathBuilder::DEFAULT_EXT)
96
+ visitor.set_direction(:desc)
97
+
98
+ hilighted_query = "#{yellow}#{query}#{reset}"
99
+ visitor.visit(config["home"]) do |path|
100
+ header_printed = false
101
+ File.open(path) do |file|
102
+ header_printed = false
103
+ file.each_line do |line|
104
+ if line.match(/#{query}/)
105
+ unless header_printed
106
+ print "\n", green, path, reset, "\n"
107
+ header_printed = true
108
+ end
109
+ line = line.gsub(query, hilighted_query)
110
+ puts line
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def open_today(config, past)
79
118
  path = Daily::Txt::PathBuilder.by_date(
80
- config["home"], Date.today)
119
+ config["home"], (Date.today - (past || 0)))
81
120
  Daily::Txt::PathBuilder.prepare_basedir(path)
82
121
  Daily::Txt::System.exec(config["editor"], path)
83
122
  end
@@ -1,5 +1,5 @@
1
1
  module Daily
2
2
  module Txt
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daily-txt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bonar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-31 00:00:00.000000000 Z
11
+ date: 2016-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  requirements: []
101
101
  rubyforge_project:
102
- rubygems_version: 2.6.3
102
+ rubygems_version: 2.5.1
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: command line tool for daily text file memo