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.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/bin/maildir2json +12 -0
  3. data/lib/hash.rb +18 -0
  4. data/lib/maildir2json.rb +34 -0
  5. 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
@@ -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: []