rumble 0.4.1 → 0.5.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 +4 -4
- data/README.md +2 -0
- data/bin/rumble +27 -9
- data/features/cli.feature +1 -1
- data/lib/rumble/version.rb +1 -1
- data/rumble.gemspec +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19aa6fb3581db4df5a235311c22d817e083b0987a31fe8c50ca4f5a60e7e2a91
|
4
|
+
data.tar.gz: 147d028433f2f2f66aca7783849ca5197b332d163ee998099772ce7316e26593
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f699b9affdf67116c7c7231be7b0ede4535cf6c8496e1169acb504e3550f0256b9bd033002a82b2727aebcfc8530c5059df5b77562078b2fd041cbb1148185cb
|
7
|
+
data.tar.gz: 0c72dcff6b37cd7ab03bb9c657e330365327b1d6fab88f39834385ec5de103a22c8eb2e803a20f469df8b8c21ed3a94dea70fc22df7fa24926d7692e97716c7c
|
data/README.md
CHANGED
@@ -45,6 +45,8 @@ Yegor
|
|
45
45
|
The list of emails must contain three columns separated by a comma: first
|
46
46
|
name, last name, and email.
|
47
47
|
|
48
|
+
If you want to send via HTTP/SMTP proxy, use `--proxy=host:port`.
|
49
|
+
|
48
50
|
# How to contribute
|
49
51
|
|
50
52
|
Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
|
data/bin/rumble
CHANGED
@@ -23,6 +23,7 @@ STDOUT.sync = true
|
|
23
23
|
|
24
24
|
require 'slop'
|
25
25
|
require 'mail'
|
26
|
+
require 'net/smtp/proxy'
|
26
27
|
require_relative '../lib/rumble'
|
27
28
|
require_relative '../lib/rumble/version'
|
28
29
|
|
@@ -61,6 +62,7 @@ begin
|
|
61
62
|
o.string '--port', 'SMTP port number (25 by default)', default: 25
|
62
63
|
o.string '--user', 'SMTP user name'
|
63
64
|
o.string '--password', 'SMTP password'
|
65
|
+
o.string '--proxy', 'HTTP proxy, e.g. "192.168.0.1:8080"'
|
64
66
|
o.string '--subject', 'Email subject', required: true
|
65
67
|
o.string '--letter', 'File name with Liquid template', required: true
|
66
68
|
o.string '--csv', 'CSV file with first name, last name, and email cols'
|
@@ -78,29 +80,45 @@ begin
|
|
78
80
|
Encoding.default_external = Encoding::UTF_8
|
79
81
|
Encoding.default_internal = Encoding::UTF_8
|
80
82
|
|
83
|
+
puts 'It is "dry" run, no emails will be actually sent!' if opts[:dry]
|
84
|
+
|
81
85
|
Mail.defaults do
|
82
86
|
case opts[:method].downcase.strip
|
83
87
|
when 'sendmail'
|
88
|
+
puts "--host=#{opts[:host]} is not allowed w/sendmail" if opts[:host]
|
89
|
+
puts "--port=#{opts[:port]} is not allowed w/sendmail" if opts[:port]
|
90
|
+
puts "--user=#{opts[:user]} is not allowed w/sendmail" if opts[:user]
|
91
|
+
puts '--password is not allowed when using sendmail' if opts[:password]
|
84
92
|
delivery_method :sendmail
|
85
93
|
when 'smtp'
|
86
94
|
raise '--host is required' unless opts[:host]
|
87
95
|
raise '--port is required' unless opts[:port]
|
88
96
|
raise '--user is required' unless opts[:user]
|
89
97
|
raise '--password is required' unless opts[:password]
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
98
|
+
if opts[:proxy]
|
99
|
+
host, port = opts[:proxy].strip.split(':')
|
100
|
+
delivery_method Net::SMTP::Proxy::DeliveryMethod, {
|
101
|
+
address: opts[:host],
|
102
|
+
port: opts[:port],
|
103
|
+
proxy_address: "http://#{host.strip}",
|
104
|
+
proxy_port: port,
|
105
|
+
openssl_verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
106
|
+
domain: 'gmail.com'
|
107
|
+
}
|
108
|
+
else
|
109
|
+
delivery_method :smtp, {
|
110
|
+
:address => opts[:host],
|
111
|
+
:port => opts[:port],
|
112
|
+
:user_name => opts[:user],
|
113
|
+
:password => opts[:password],
|
114
|
+
:enable_starttls_auto => true
|
115
|
+
}
|
116
|
+
end
|
97
117
|
else
|
98
118
|
raise "Delivery method #{opts[:method]} is not supported"
|
99
119
|
end
|
100
120
|
end
|
101
|
-
|
102
121
|
Rumble::CLI.new(opts).send
|
103
|
-
|
104
122
|
rescue StandardError => ex
|
105
123
|
puts "#{Rainbow('ERROR').red} (#{ex.class.name}): #{ex.message}"
|
106
124
|
puts ex.backtrace
|
data/features/cli.feature
CHANGED
@@ -17,6 +17,6 @@ Feature: Command Line Processing
|
|
17
17
|
How are you?
|
18
18
|
|
19
19
|
"""
|
20
|
-
When I run bin/rumble with "--test
|
20
|
+
When I run bin/rumble with "--test=yegor256@gmail.com --subject=test --letter=a.liquid --from=me@example.com --dry --resume=test@example.com"
|
21
21
|
Then Stdout contains "Processed 1 email"
|
22
22
|
And Exit code is zero
|
data/lib/rumble/version.rb
CHANGED
data/rumble.gemspec
CHANGED
@@ -25,7 +25,6 @@ require 'English'
|
|
25
25
|
lib = File.expand_path('lib', __dir__)
|
26
26
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
27
27
|
require_relative 'lib/rumble/version'
|
28
|
-
|
29
28
|
Gem::Specification.new do |s|
|
30
29
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
31
30
|
if s.respond_to? :required_rubygems_version=
|
@@ -48,6 +47,7 @@ Gem::Specification.new do |s|
|
|
48
47
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
49
48
|
s.add_runtime_dependency 'liquid', '4.0.1'
|
50
49
|
s.add_runtime_dependency 'mail', '2.7.1'
|
50
|
+
s.add_runtime_dependency 'net-smtp-proxy', '2.0.0'
|
51
51
|
s.add_runtime_dependency 'rainbow', '3.0.0'
|
52
52
|
s.add_runtime_dependency 'redcarpet', '3.4.0'
|
53
53
|
s.add_runtime_dependency 'slop', '4.6.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rumble
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.7.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: net-smtp-proxy
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rainbow
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|