mailcvt 0.2.13 → 0.2.15
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.
- data/bin/mailcvt +24 -0
- data/bin/runmailcvt +13 -0
- data/lib/base_parser.rb +8 -0
- data/lib/mail_cleaner.rb +7 -3
- data/lib/mail_parser.rb +1 -2
- data/lib/mailcvt.rb +1 -0
- data/lib/mailcvt/version.rb +1 -1
- data/lib/others_parser.rb +27 -0
- data/lib/output_helper.rb +10 -11
- data/lib/to_cc_parser.rb +10 -13
- metadata +5 -4
data/bin/mailcvt
CHANGED
@@ -64,6 +64,18 @@ command :parsetocc do |c|
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
desc 'Parse others to mail log.'
|
68
|
+
command :parseothers do |c|
|
69
|
+
c.action do |global_options,options,args|
|
70
|
+
err = "parseothers usage: mailcvt parseothers [daily dir] [timestamp]"
|
71
|
+
raise err if args.length != 2
|
72
|
+
|
73
|
+
raise "Cannot find daily dir #{args[0]}" unless Dir.exists?(args[0])
|
74
|
+
tp = OthersParser.new(args[0], args[1])
|
75
|
+
tp.parse
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
67
79
|
desc 'Remove parsed mails and move unprocessed files to special folder.'
|
68
80
|
command :clean do |c|
|
69
81
|
c.action do |global_options,options,args|
|
@@ -88,6 +100,18 @@ command :cleantocc do |c|
|
|
88
100
|
end
|
89
101
|
end
|
90
102
|
|
103
|
+
desc 'Delete others folder.'
|
104
|
+
command :cleanothers do |c|
|
105
|
+
c.action do |global_options,options,args|
|
106
|
+
err = "cleanothers usage: mailcvt cleanothers [daily dir] [timestamp]"
|
107
|
+
raise err if args.length != 2
|
108
|
+
|
109
|
+
raise "Cannot find daily dir #{args[0]}" unless Dir.exists?(args[0])
|
110
|
+
mp = MailCleaner.new(args[0], args[1])
|
111
|
+
mp.cleanothers
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
91
115
|
command :setup do |c|
|
92
116
|
c.action do |global_options,options,args|
|
93
117
|
mi = SetupMailcvt.new
|
data/bin/runmailcvt
CHANGED
@@ -75,5 +75,18 @@ if [ -d $dtocc ]; then
|
|
75
75
|
mailcvt cleantocc $dailydir $timestamp
|
76
76
|
fi
|
77
77
|
|
78
|
+
dothers="$dailydir/dothers$timestamp"
|
79
|
+
if [ -d $dothers ]; then
|
80
|
+
copyonly1 $dothers
|
81
|
+
echo "[$(now)] find $dothers -type f -print0 | xargs -0 grep -i -E -A300 \"$grepexp\" > $grepout.others"
|
82
|
+
find $dothers -type f -print0 | xargs -0 grep -i -E -A300 "$grepexp" > "$grepout.others"
|
83
|
+
|
84
|
+
echo "[$(now)] mailcvt parseothers $dailydir $timestamp"
|
85
|
+
mailcvt parseothers $dailydir $timestamp
|
86
|
+
|
87
|
+
echo "[$(now)] mailcvt cleanothers $dailydir $timestamp"
|
88
|
+
mailcvt cleanothers $dailydir $timestamp
|
89
|
+
fi
|
90
|
+
|
78
91
|
echo "[$(now)] runmailcvt finished."
|
79
92
|
echo "-------------------------------------------------------------------------------"
|
data/lib/base_parser.rb
CHANGED
data/lib/mail_cleaner.rb
CHANGED
@@ -19,14 +19,18 @@ class MailCleaner
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def cleantocc
|
22
|
-
move 'tocc2'
|
23
|
-
|
24
22
|
d = @oh.getdir("dtocc")
|
25
23
|
FileUtils.rm_r(d) if Dir.exists?(d)
|
26
24
|
|
27
25
|
delmout '.grep.tocc'
|
28
26
|
delmout '.mtocc'
|
29
|
-
|
27
|
+
end
|
28
|
+
|
29
|
+
def cleanothers
|
30
|
+
d = @oh.getdir("dothers")
|
31
|
+
FileUtils.rm_r(d) if Dir.exists?(d)
|
32
|
+
|
33
|
+
delmout '.grep.others'
|
30
34
|
end
|
31
35
|
|
32
36
|
def removeok
|
data/lib/mail_parser.rb
CHANGED
@@ -18,10 +18,9 @@ class MailParser < BaseParser
|
|
18
18
|
|
19
19
|
gm = GrepMail.new(curfile, lines, 9)
|
20
20
|
msgid, mlog = gm.tolog
|
21
|
-
if msgid
|
21
|
+
if isduplicate(msgid)
|
22
22
|
@oh.outputmlog curfile, nil
|
23
23
|
else
|
24
|
-
@prevmsgid = msgid
|
25
24
|
if gm.iscomplete?
|
26
25
|
@oh.outputmlog curfile, mlog
|
27
26
|
elsif gm.istocc?
|
data/lib/mailcvt.rb
CHANGED
data/lib/mailcvt/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'grep_mail'
|
4
|
+
require 'output_helper'
|
5
|
+
require 'base_parser'
|
6
|
+
|
7
|
+
class OthersParser < BaseParser
|
8
|
+
def parse_with_summary
|
9
|
+
grep = shouldexist('.grep.others')
|
10
|
+
|
11
|
+
parsegrep grep
|
12
|
+
@oh.finishoutput
|
13
|
+
end
|
14
|
+
|
15
|
+
def convert(curfile, lines)
|
16
|
+
return unless lines and lines.length > 0
|
17
|
+
|
18
|
+
gm = GrepMail.new(curfile, lines, 300)
|
19
|
+
msgid, mlog = gm.tolog
|
20
|
+
if isduplicate(msgid)
|
21
|
+
@oh.outputmlog_from_others nil
|
22
|
+
else
|
23
|
+
#output tocc or others mails anyway, better than disk overflow.
|
24
|
+
@oh.outputmlog_from_others mlog
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/output_helper.rb
CHANGED
@@ -44,7 +44,6 @@ class OutputHelper
|
|
44
44
|
summary << "\n duplicate = #{countmsg(@duplicount, totalcount)}"
|
45
45
|
summary << ", tocc = #{countmsg(@tocccount, totalcount)}"
|
46
46
|
summary << ", others = #{countmsg(@otherscount, totalcount)}"
|
47
|
-
summary
|
48
47
|
end
|
49
48
|
|
50
49
|
def countmsg(count, total)
|
@@ -96,16 +95,16 @@ class OutputHelper
|
|
96
95
|
@otherscount += 1
|
97
96
|
end
|
98
97
|
|
99
|
-
def
|
100
|
-
unless @
|
101
|
-
|
102
|
-
@
|
98
|
+
def outputmlog_from_others(line)
|
99
|
+
unless @omlog
|
100
|
+
mlog = getmout('.mlog')
|
101
|
+
@omlog = File.open(mlog, 'w')
|
102
|
+
end
|
103
|
+
if line
|
104
|
+
@omlog.puts line
|
105
|
+
@mlogcount += 1
|
106
|
+
else
|
107
|
+
@duplicount += 1
|
103
108
|
end
|
104
|
-
|
105
|
-
@oftocc2.puts mailpath
|
106
|
-
end
|
107
|
-
|
108
|
-
def closetocc2
|
109
|
-
@oftocc2.close if @oftocc2
|
110
109
|
end
|
111
110
|
end
|
data/lib/to_cc_parser.rb
CHANGED
@@ -8,6 +8,7 @@ class ToCcParser < BaseParser
|
|
8
8
|
def parse_with_summary
|
9
9
|
grep, mtocc = shouldexist('.grep.tocc', '.mtocc')
|
10
10
|
|
11
|
+
@tocc2count = 0
|
11
12
|
parsetocc grep
|
12
13
|
replace_tocc mtocc
|
13
14
|
end
|
@@ -15,7 +16,6 @@ class ToCcParser < BaseParser
|
|
15
16
|
def replace_tocc(mtocc)
|
16
17
|
inputcount = 0
|
17
18
|
replacecount = 0
|
18
|
-
tocc2count = 0
|
19
19
|
mlog = @oh.getmout('.mlog')
|
20
20
|
File.open(mlog, 'a') do |omlog|
|
21
21
|
File.foreach(mtocc) do |line|
|
@@ -30,15 +30,13 @@ class ToCcParser < BaseParser
|
|
30
30
|
cols[4+1] = tocc[4]
|
31
31
|
cols[5+1] = tocc[5]
|
32
32
|
omlog.puts cols[1..-1].join("\t")
|
33
|
-
else
|
34
|
-
tocc2count += 1
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
38
36
|
|
39
|
-
msg = "#{formatcount(replacecount, inputcount)} replaced
|
40
|
-
msg << "#{formatcount(tocc2count, inputcount)}
|
41
|
-
msg << "#{formatcount(inputcount - replacecount
|
37
|
+
msg = "#{formatcount(replacecount, inputcount)} replaced "
|
38
|
+
msg << "(include #{formatcount(@tocc2count, inputcount)} tocc cut). "
|
39
|
+
msg << "#{formatcount(inputcount - replacecount, inputcount)} ignored. "
|
42
40
|
msg << "Totally #{inputcount} row#{inputcount > 1 ? 's' : ''} from .mtocc file."
|
43
41
|
end
|
44
42
|
|
@@ -57,7 +55,6 @@ class ToCcParser < BaseParser
|
|
57
55
|
def parsetocc(grep)
|
58
56
|
@toccs = {}
|
59
57
|
parsegrep grep
|
60
|
-
@oh.closetocc2
|
61
58
|
end
|
62
59
|
|
63
60
|
def convert(curfile, lines)
|
@@ -65,12 +62,12 @@ class ToCcParser < BaseParser
|
|
65
62
|
|
66
63
|
gm = GrepMail.new(curfile, lines, 300)
|
67
64
|
cols = gm.tocols
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
65
|
+
#no need to check duplicate here, cause no COPY_ file in mlog
|
66
|
+
#output tocc or others mails anyway, better than disk overflow.
|
67
|
+
key = File.basename(curfile)
|
68
|
+
@toccs[key] = cols unless @toccs.has_key?(key)
|
69
|
+
|
70
|
+
@tocc2count += 1 if gm.istocc?
|
74
71
|
end
|
75
72
|
end
|
76
73
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailcvt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- lib/mail_parser.rb
|
97
97
|
- lib/mailcvt/version.rb
|
98
98
|
- lib/mailcvt.rb
|
99
|
+
- lib/others_parser.rb
|
99
100
|
- lib/output_helper.rb
|
100
101
|
- lib/setup_mailcvt.rb
|
101
102
|
- lib/to_cc_parser.rb
|
@@ -121,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
122
|
version: '0'
|
122
123
|
segments:
|
123
124
|
- 0
|
124
|
-
hash:
|
125
|
+
hash: -4026955693453475253
|
125
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
127
|
none: false
|
127
128
|
requirements:
|
@@ -130,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
131
|
version: '0'
|
131
132
|
segments:
|
132
133
|
- 0
|
133
|
-
hash:
|
134
|
+
hash: -4026955693453475253
|
134
135
|
requirements: []
|
135
136
|
rubyforge_project:
|
136
137
|
rubygems_version: 1.8.25
|