smailr 0.8.1 → 0.8.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6effb269294c6ec1f81fc25e2e05ee1e3f4ae6d98eef3d44a0fa64e939d8a8bc
4
- data.tar.gz: 8a2e12d33594449fdacf111a06a4813e65454b45141af4bd884de25edb5c3c06
3
+ metadata.gz: 72c91fc6367c4e52731a3886cd5ceff54e5caeeea9440786cea0c2bcbfae0ee2
4
+ data.tar.gz: 1ba046fc982b493c56984ef00dd20f93f5408e953da0233f409b083b5d49fdac
5
5
  SHA512:
6
- metadata.gz: 13a0e5bb2fb7d5d3e0e92c87a774a44750015d6daf8feb579ed1391490893f866ce45ef38d692b8473fc41b024977b476c0fc02c84cf3183b23b33c6107341e8
7
- data.tar.gz: 847ef00e13a7d0e5624ad2f5b3609fcdbb94a3170cda4245eb7c4cfc7e23d77460ff8d368f6b4372123af23309f0c867ad7e1ba960932b49b97461db8a78f54e
6
+ metadata.gz: a2a9a72c55cadb9698132895d064c6c4b5fd334601e06c91604dfc8727be4ef57d8ab9002f9ec67d870d99548f0619feed4903cdc18efed2a77a4623510218db
7
+ data.tar.gz: a4a11e80ebf8e318f8b836946c872e38416d204312965deb289c4d621bdc50aafffda8c4ddf3cf7e274115fbd139bd5242c3e86b09eda8107c659abb0099ffc2
data/bin/smailr CHANGED
@@ -1,15 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
- #$: << File.expand_path('../../lib', __FILE__)
3
- #
4
- #require 'pathname'
5
- #ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
6
- # Pathname.new(__FILE__).realpath)
7
- #
8
- #require 'rubygems'
9
- #require 'bundler/setup'
2
+
3
+ require 'smailr/version'
4
+
5
+ if ARGV == ['version'] || ARGV.include?('--version')
6
+ puts "smailr #{Smailr::VERSION}"
7
+ exit 0
8
+ end
10
9
 
11
10
  require 'smailr'
12
11
  require 'smailr/cli'
13
12
  require 'smailr/setup'
14
13
 
14
+ begin
15
+ Smailr.initialize!
16
+ rescue Smailr::ConfigurationError => e
17
+ warn "ERROR: #{e.message}"
18
+ exit 1
19
+ end
20
+
15
21
  Smailr::Cli.new.run
data/lib/smailr/cli.rb CHANGED
@@ -106,6 +106,11 @@ module Smailr
106
106
  case args[0]
107
107
  when /^[^@][A-Z0-9.-]+\.[A-Z]{2,6}$/i then
108
108
  domain = Smailr::Model::Domain[:fqdn => args[0]]
109
+ unless domain
110
+ error "No such domain: #{args[0]}"
111
+ exit 1
112
+ end
113
+
109
114
  domain.mailboxes.each do |mbox|
110
115
  puts "m: #{mbox.localpart}@#{args[0]}"
111
116
  end
@@ -1,3 +1,3 @@
1
1
  module Smailr
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.3'
3
3
  end
data/lib/smailr.rb CHANGED
@@ -20,27 +20,64 @@ module Smailr
20
20
 
21
21
  # Exception Classes
22
22
  class MissingDomain < StandardError ; end
23
+ class ConfigurationError < StandardError ; end
23
24
 
24
25
  class << self;
25
26
  attr_accessor :config
26
27
  attr_accessor :config_files
27
- attr_accessor :load_config
28
28
  attr_accessor :contrib_directory
29
29
  attr_accessor :migrations_directory
30
+ attr_accessor :bundled_config_file
30
31
  end
31
32
 
32
33
  def self.load_config
33
34
  config = {}
34
- config_files.each do |f|
35
- if File.readable?(f)
36
- config.merge!(YAML.load_file(f))
35
+ runtime_config_files = config_files.reject { |f| f == bundled_config_file }
36
+ readable_runtime_config_files = runtime_config_files.select { |f| File.file?(f) && File.readable?(f) }
37
+ unreadable_runtime_config_files = runtime_config_files.select { |f| File.exist?(f) && !File.readable?(f) }
38
+
39
+ if readable_runtime_config_files.empty?
40
+ if unreadable_runtime_config_files.any?
41
+ raise ConfigurationError, "Cannot read configuration file: #{unreadable_runtime_config_files.join(', ')}"
37
42
  end
43
+
44
+ raise ConfigurationError, "Cannot find configuration file. Checked: #{runtime_config_files.join(', ')}"
45
+ end
46
+
47
+ if bundled_config_file && File.readable?(bundled_config_file)
48
+ config.merge!(YAML.load_file(bundled_config_file) || {})
38
49
  end
50
+
51
+ readable_runtime_config_files.each do |f|
52
+ config.merge!(YAML.load_file(f) || {})
53
+ end
54
+
39
55
  self.config = config
40
56
  end
41
57
 
42
58
  def self.db_connect
59
+ unless self.config && self.config['database']
60
+ raise ConfigurationError, "Configuration file is missing database settings."
61
+ end
62
+
43
63
  Sequel.connect(self.config['database'])
64
+ rescue Sequel::DatabaseConnectionError => e
65
+ raise ConfigurationError, "Cannot open database connection: #{e.message}"
66
+ end
67
+
68
+ def self.initialize!
69
+ load_config
70
+ database = db_connect
71
+
72
+ Smailr.send(:remove_const, :DB) if Smailr.const_defined?(:DB, false)
73
+ Smailr.const_set(:DB, database)
74
+ Sequel::Model.db = database
75
+
76
+ unless defined?(Smailr::Model)
77
+ require 'smailr/model'
78
+ end
79
+
80
+ Smailr::DB.sql_log_level = :debug
44
81
  end
45
82
 
46
83
  def self.logger
@@ -65,8 +102,5 @@ end
65
102
 
66
103
  Smailr.contrib_directory ||= File.expand_path('../../contrib', __FILE__)
67
104
  Smailr.migrations_directory ||= File.expand_path('../../migrations', __FILE__)
68
- Smailr.config_files ||= [ File.expand_path('../../smailr.yml', __FILE__), '/etc/smailr.yml']
69
- Smailr.load_config
70
- Smailr::DB = Smailr::db_connect
71
- require 'smailr/model'
72
- Smailr::DB.sql_log_level = :debug
105
+ Smailr.bundled_config_file ||= File.expand_path('../../smailr.yml', __FILE__)
106
+ Smailr.config_files ||= [ Smailr.bundled_config_file, '/etc/smailr.yml' ]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smailr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Schlesinger
@@ -57,6 +57,20 @@ dependencies:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
59
  version: '3.1'
60
+ - !ruby/object:Gem::Dependency
61
+ name: logger
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
60
74
  - !ruby/object:Gem::Dependency
61
75
  name: net-smtp
62
76
  requirement: !ruby/object:Gem::Requirement
@@ -161,7 +175,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
175
  requirements:
162
176
  - - ">="
163
177
  - !ruby/object:Gem::Version
164
- version: '0'
178
+ version: '3.1'
165
179
  required_rubygems_version: !ruby/object:Gem::Requirement
166
180
  requirements:
167
181
  - - ">="