maildir2json 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.
- checksums.yaml +7 -0
- data/bin/maildir2json +12 -0
- data/lib/hash.rb +18 -0
- data/lib/maildir2json.rb +34 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6a731200a8bb2ebd9f4c47146b494d1851679d96c3c2e8ef36a71f2d35dae213
|
4
|
+
data.tar.gz: bc6865deb8e008beef8488ba2de34a4d2998ba22ee420e907acc1087d6acd3ae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ed9ee14672e895b7ffdbcd0ab13cf144ffb981d31d53d4ac68bf4851bbbd5d88d6dcf7b4532abaa483825611e7a1d791d5eb603a6b60d6c0b2b15b5bdfa83735
|
7
|
+
data.tar.gz: bc59ea45b5b55e53b32e46dcc351c0fc097bd73bdaf63a79111bc415043e9b5ee287608e3965e2bdcbc0876fa644df617b790ac22744a118834dd01a59e61302
|
data/bin/maildir2json
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# A simple script to convert maildir format file into JSON. Will accept
|
5
|
+
# input file in maildir format and output equivalent JSON into
|
6
|
+
# specified file.
|
7
|
+
#
|
8
|
+
# Usage: maildir2json <full path to input file> <full path to output file>
|
9
|
+
|
10
|
+
require 'maildir2json'
|
11
|
+
|
12
|
+
Maildir2Json.run
|
data/lib/hash.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This helper function will convert all hash values into UTF8
|
4
|
+
class Hash
|
5
|
+
def to_utf8
|
6
|
+
Hash[
|
7
|
+
collect do |k, v|
|
8
|
+
if v.respond_to?(:to_utf8)
|
9
|
+
[k, v.to_utf8]
|
10
|
+
elsif v.respond_to?(:encoding) && v.dup.respond_to?(:encode)
|
11
|
+
[k, v.dup.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?')]
|
12
|
+
else
|
13
|
+
[k, v]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
]
|
17
|
+
end
|
18
|
+
end
|
data/lib/maildir2json.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'mail'
|
5
|
+
require_relative 'hash'
|
6
|
+
|
7
|
+
# Maildir2Json is the main entry point of execution
|
8
|
+
module Maildir2Json
|
9
|
+
def self.validate_params
|
10
|
+
abort("\e[31mYou need to provide absolute path to input file\e[0m") if ARGV.empty?
|
11
|
+
abort("\e[31mYou need to provide absolute path to output file\e[0m") if ARGV.length < 2
|
12
|
+
|
13
|
+
@input_file = ARGV[0]
|
14
|
+
@output_file = ARGV[1]
|
15
|
+
|
16
|
+
abort("\e[31mThe input file you have specified does not exist!\e[0m") unless File.exist?(@input_file)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.run
|
20
|
+
validate_params
|
21
|
+
mail = Mail.read(@input_file)
|
22
|
+
data = YAML.safe_load(mail.to_yaml, permitted_classes: [Symbol, Mail::SMTP, Mail::Body])
|
23
|
+
|
24
|
+
data = data.to_utf8
|
25
|
+
|
26
|
+
begin
|
27
|
+
json = JSON.dump(data)
|
28
|
+
rescue StandardError
|
29
|
+
abort("\e[31mError converting maildir file #{INPUT_FILE}\e[0m")
|
30
|
+
end
|
31
|
+
|
32
|
+
File.write(@output_file, json)
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: maildir2json
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Amal Francis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mail
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.6'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.6.4
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.6'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.6.4
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: net-smtp
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rubocop
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
description: A simple ruby script to convert maildir format file to JSON format
|
76
|
+
email:
|
77
|
+
- amalfra@gmail.com
|
78
|
+
executables:
|
79
|
+
- maildir2json
|
80
|
+
extensions: []
|
81
|
+
extra_rdoc_files: []
|
82
|
+
files:
|
83
|
+
- bin/maildir2json
|
84
|
+
- lib/hash.rb
|
85
|
+
- lib/maildir2json.rb
|
86
|
+
homepage: https://github.com/amalfra/maildir2json
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 2.6.0
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubygems_version: 3.0.3.1
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: A simple tool to convert maildir format file to JSON format
|
109
|
+
test_files: []
|