ehbrs-tools 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ehbrs/runner/telegram.rb +26 -0
  3. data/lib/ehbrs/runner/telegram/send_message.rb +29 -0
  4. data/lib/ehbrs/telegram.rb +9 -0
  5. data/lib/ehbrs/telegram/message_sending.rb +32 -0
  6. data/lib/ehbrs/tools/instance.rb +16 -0
  7. data/lib/ehbrs/tools/version.rb +1 -1
  8. data/vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb +15 -0
  9. data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +5 -0
  10. data/vendor/eac_cli/lib/eac_cli/parser/alternative.rb +4 -4
  11. data/vendor/eac_cli/lib/eac_cli/parser/alternative/long_options.rb +37 -0
  12. data/vendor/eac_cli/lib/eac_cli/parser/alternative/option_argument.rb +29 -0
  13. data/vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb +7 -36
  14. data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +45 -0
  15. data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +14 -2
  16. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  17. data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +22 -1
  18. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner/test_all.rb +4 -9
  19. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  20. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +0 -2
  21. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +4 -1
  22. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +38 -0
  23. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb +4 -0
  24. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +8 -0
  25. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/default_time_zone_set.rb +3 -2
  26. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  27. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +2 -1
  28. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb +17 -0
  29. metadata +29 -3
  30. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/local_time_zone.rb +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22c8958278ed0b73c620d9dd9db824cd9afc3f5bb10ed9ceec52a9c994173bcf
4
- data.tar.gz: 0b34372d1969e38768067c175d520d5e214cb2191e01b5bb63d4f878cff12a56
3
+ metadata.gz: ebaf532c7759e39fe14d8ce5e9af873701dfe9aa08dfd8ab23ee2c7e85fbac74
4
+ data.tar.gz: f2626b4eb360505865394303512f6871a20b14d47d62b1910aa22022abf0f03e
5
5
  SHA512:
6
- metadata.gz: 191c6230c49d4c080f56ae46b462785d598c00bf45c876fcbede25b3150e57a17160b4376b404137a6b1cc6de666e1a0480ebe9170927727a28d2633880752ba
7
- data.tar.gz: 6357f4aabe4cf05c6414e49bd079c9fc3e1963cb44556af608a23f4708ca80ec64a42f9d1d8d420c52760a1b1581c9a4b91355e5edfc3c4d3935130a22959ad1
6
+ metadata.gz: cf01879a8df667ffd0f2be51565ddf928351444a1d0504154e8503c6f655ee5e324ac19f705e7510f74b87c1b626d6bfb52482a7a447361fd4bca51acd9f4905
7
+ data.tar.gz: abaa72ab5d0cc2c448655ad017541a467aad4eac206bd1d75707ea027c82043dc0401ffcb8993a6e765b728e3aa3d6ef4fd9fafb735ae6c41e749095458da1a5
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/tools/instance'
5
+
6
+ module Ehbrs
7
+ class Runner
8
+ class Telegram
9
+ require_sub __FILE__
10
+
11
+ runner_with :help, :subcommands do
12
+ desc 'Operações com Telegram.'
13
+ arg_opt '-b', '--bot-token', 'Token do bot Telegram.'
14
+ subcommands
15
+ end
16
+
17
+ def bot_token
18
+ parsed.bot_token || default_bot_token
19
+ end
20
+
21
+ def default_bot_token
22
+ ::Ehbrs::Tools.instance.read_entry(:telegram_bot_token)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/telegram/message_sending'
5
+
6
+ module Ehbrs
7
+ class Runner
8
+ class Telegram
9
+ class SendMessage
10
+ runner_with :help do
11
+ desc 'Envia mensagens Telegram.'
12
+ pos_arg :message
13
+ pos_arg :recipients_ids, repeat: true
14
+ end
15
+
16
+ delegate :run, to: :message_sending
17
+
18
+ private
19
+
20
+ def message_sending_uncached
21
+ parsed.recipients_ids
22
+ .inject(::Ehbrs::Telegram::MessageSending.new) { |a, e| a.recipient_id(e) }
23
+ .bot_token(runner_context.call(:bot_token))
24
+ .message(parsed.message)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Ehbrs
6
+ module Telegram
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/immutable'
5
+ require 'telegram/bot'
6
+
7
+ module Ehbrs
8
+ module Telegram
9
+ class MessageSending
10
+ include ::EacRubyUtils::Immutable
11
+ immutable_accessor :bot_token, :message
12
+ immutable_accessor :recipient_id, type: :array
13
+
14
+ def run
15
+ ::Telegram::Bot::Client.run(prop(:bot_token)) do |bot|
16
+ prop(:recipient_ids).each do |recipient_id|
17
+ bot.api.sendMessage(chat_id: recipient_id, text: prop(:message))
18
+ end
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def prop(attribute)
25
+ r = send(attribute)
26
+ return r if r.present?
27
+
28
+ raise "Attribute #{attribute} is blank"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Ehbrs
7
+ module Tools
8
+ INSTANCE_ID = 'ehbrs-tools_0'
9
+
10
+ class << self
11
+ def instance
12
+ @instance ||= ::Avm::Instances::Base.by_id(INSTANCE_ID)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ehbrs
4
4
  module Tools
5
- VERSION = '0.17.0'
5
+ VERSION = '0.18.0'
6
6
  end
7
7
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacCli
6
+ module Docopt
7
+ class RunnerContextReplacement
8
+ common_constructor :runner
9
+
10
+ def argv
11
+ runner.settings[:argv] || ARGV
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_cli/docopt/doc_builder'
4
+ require 'eac_cli/docopt/runner_context_replacement'
4
5
  require 'eac_cli/runner'
5
6
  require 'eac_ruby_utils/console/docopt_runner'
6
7
 
@@ -32,6 +33,10 @@ module EacCli
32
33
  def docopt_options
33
34
  super.merge(options_first: self.class.runner_definition.options_first?)
34
35
  end
36
+
37
+ def runner_context
38
+ @runner_context ||= ::EacCli::Docopt::RunnerContextReplacement.new(self)
39
+ end
35
40
  end
36
41
 
37
42
  def extra_available_subcommands
@@ -35,11 +35,11 @@ module EacCli
35
35
  attr_accessor :phase
36
36
 
37
37
  def any_collect_argv_value
38
- if argv_current_option?
39
- option_collect_argv_value
40
- else
41
- positional_collect_argv_value
38
+ %w[double_dash long_option short_option].each do |arg_type|
39
+ return send("#{arg_type}_collect_argv_value") if send("argv_current_#{arg_type}?")
42
40
  end
41
+
42
+ positional_collect_argv_value
43
43
  end
44
44
 
45
45
  def collector
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacCli
4
+ class Parser
5
+ class Alternative
6
+ module LongOptions
7
+ LONG_OPTION_PREFIX = '--'
8
+ OPTION_WITH_ARGUMENT_PATTERN = /\A([^=]+)(?:=(.*))\z/.freeze
9
+
10
+ private
11
+
12
+ def argv_current_long_option?
13
+ phase == PHASE_ANY && argv_enum.peek.start_with?(LONG_OPTION_PREFIX) &&
14
+ !argv_current_double_dash?
15
+ end
16
+
17
+ def long_option_collect_argv_value
18
+ option_long, value = parse_option_current_argv
19
+ alternative.options.any? do |option|
20
+ next false unless option.long == option_long
21
+
22
+ if value.nil?
23
+ option_collect_option(option)
24
+ else
25
+ option_argument_collect(option, value)
26
+ end
27
+ end || raise_argv_current_invalid_option
28
+ end
29
+
30
+ def parse_option_current_argv
31
+ m = OPTION_WITH_ARGUMENT_PATTERN.match(argv_enum.peek)
32
+ m ? [m[1], m[2].if_present('')] : [argv_enum.peek, nil]
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacCli
4
+ class Parser
5
+ class Alternative
6
+ module OptionArgument
7
+ private
8
+
9
+ attr_accessor :argument_option
10
+
11
+ def argument_option_collect_argv(option)
12
+ self.argument_option = option
13
+ self.phase = PHASE_OPTION_ARGUMENT
14
+ end
15
+
16
+ def option_argument_collect(option, value)
17
+ collector.collect(option, value)
18
+ self.argument_option = nil
19
+ self.phase = PHASE_ANY
20
+ option
21
+ end
22
+
23
+ def option_argument_collect_argv_value
24
+ option_argument_collect(argument_option, argv_enum.peek)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,49 +4,20 @@ module EacCli
4
4
  class Parser
5
5
  class Alternative
6
6
  module Options
7
- DOUBLE_DASH = '--'
8
-
9
7
  private
10
8
 
11
- attr_accessor :argument_option, :double_dash
12
-
13
- def argument_option_collect_argv(option)
14
- self.argument_option = option
15
- self.phase = PHASE_OPTION_ARGUMENT
16
- end
17
-
18
- def argv_current_option?
19
- phase == PHASE_ANY && argv_enum.peek.start_with?('-')
20
- end
21
-
22
- def argv_current_double_dash?
23
- argv_enum.peek == DOUBLE_DASH && !double_dash
24
- end
25
-
26
9
  def boolean_option_collect_argv(option)
27
10
  collector.collect(option, true)
28
11
  end
29
12
 
30
- def option_argument_collect_argv_value
31
- collector.collect(argument_option, argv_enum.peek)
32
- self.argument_option = nil
33
- self.phase = PHASE_ANY
34
- end
35
-
36
- def option_collect_argv_value
37
- return double_dash_collect_argv_value if argv_current_double_dash?
38
-
39
- alternative.options.any? do |option|
40
- next false unless [option.short, option.long].include?(argv_enum.peek)
41
-
42
- if option.argument?
43
- argument_option_collect_argv(option)
44
- else
45
- boolean_option_collect_argv(option)
46
- end
13
+ def option_collect_option(option)
14
+ if option.argument?
15
+ argument_option_collect_argv(option)
16
+ else
17
+ boolean_option_collect_argv(option)
18
+ end
47
19
 
48
- true
49
- end || raise_argv_current_invalid_option
20
+ option
50
21
  end
51
22
 
52
23
  def raise_argv_current_invalid_option
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacCli
4
+ class Parser
5
+ class Alternative
6
+ module ShortOptions
7
+ SHORT_OPTION_PREFIX = '-'
8
+
9
+ private
10
+
11
+ def argv_current_short_option?
12
+ phase == PHASE_ANY && argv_enum.peek.start_with?(SHORT_OPTION_PREFIX) &&
13
+ !argv_current_long_option?
14
+ end
15
+
16
+ def find_short_option(char)
17
+ alternative.options.find { |option| short_without_prefix(option.short) == char }
18
+ end
19
+
20
+ def short_option_collect_argv_value
21
+ last_option = nil
22
+ short_without_prefix(argv_enum.peek).each_char do |char|
23
+ raise_error "Option \"#{last_option}\" requires a argument not provided" if
24
+ last_option.present?
25
+
26
+ collected_option = short_option_collect_char(char)
27
+ last_option = collected_option if collected_option.argument?
28
+ end
29
+ end
30
+
31
+ # @return [EacCli::Definition::BaseOption] The option collected.
32
+ def short_option_collect_char(char)
33
+ option = find_short_option(char)
34
+ raise_error "Invalid short option \"#{char}\"" unless option
35
+
36
+ option_collect_option(option)
37
+ end
38
+
39
+ def short_without_prefix(short)
40
+ short.gsub(/\A#{::Regexp.quote(SHORT_OPTION_PREFIX)}/, '')
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -6,6 +6,14 @@ require 'eac_ruby_utils/core_ext'
6
6
  module EacCli
7
7
  module RunnerWith
8
8
  module Subcommands
9
+ class << self
10
+ def runner?(object)
11
+ ::EacCli::Runner.runner?(object) || (
12
+ object.is_a?(::Class) && object < ::EacRubyUtils::Console::DocoptRunner
13
+ )
14
+ end
15
+ end
16
+
9
17
  common_concern do
10
18
  include ::EacCli::Runner
11
19
  end
@@ -19,7 +27,7 @@ module EacCli
19
27
  def available_subcommands_auto
20
28
  self.class.constants
21
29
  .map { |name| [name.to_s.underscore.gsub('_', '-'), self.class.const_get(name)] }
22
- .select { |c| ::EacCli::Runner.runner?(c[1]) }
30
+ .select { |c| ::EacCli::RunnerWith::Subcommands.runner?(c[1]) }
23
31
  .to_h.with_indifferent_access
24
32
  end
25
33
 
@@ -49,7 +57,11 @@ module EacCli
49
57
 
50
58
  def run_with_subcommand
51
59
  if subcommand_name
52
- subcommand_runner.run_run
60
+ if subcommand_runner.respond_to?(:run_run)
61
+ subcommand_runner.run_run
62
+ else
63
+ subcommand_runner.run
64
+ end
53
65
  else
54
66
  run_without_subcommand
55
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacCli
4
- VERSION = '0.12.4'
4
+ VERSION = '0.12.5'
5
5
  end
@@ -11,7 +11,7 @@ RSpec.describe ::EacCli::Runner do
11
11
 
12
12
  runner_definition do
13
13
  arg_opt '-o', '--opt1', 'A arg option.'
14
- bool_opt '-o', '--opt2', 'A boolean option'
14
+ bool_opt '-p', '--opt2', 'A boolean option'
15
15
  pos_arg :pos1
16
16
  pos_arg :pos2, repeat: true, optional: true
17
17
  alt do
@@ -40,6 +40,27 @@ RSpec.describe ::EacCli::Runner do
40
40
  it { expect(instance.parsed.pos2).to eq(%w[ccc ddd]) }
41
41
  end
42
42
 
43
+ context 'with long option and argument in same position' do
44
+ let(:argv) { %w[--opt1=aaa pos1] }
45
+
46
+ it { expect(instance.parsed.opt1).to eq('aaa') }
47
+ end
48
+
49
+ context 'with valid grouped short options' do
50
+ let(:argv) { %w[-po aaa pos1] }
51
+
52
+ it { expect(instance.parsed.opt1).to eq('aaa') }
53
+ it { expect(instance.parsed.opt2?).to eq(true) }
54
+ end
55
+
56
+ context 'with invalid grouped short options' do
57
+ let(:argv) { %w[-op aaa pos1] }
58
+
59
+ it do
60
+ expect { instance.parsed }.to raise_error(::EacCli::Parser::Error)
61
+ end
62
+ end
63
+
43
64
  context 'when only required args are supplied' do
44
65
  let(:argv) { %w[bbb] }
45
66
  let(:parsed_expected) { { opt1: nil, opt2: false, opt3: false, pos1: 'bbb', pos2: [] } }
@@ -1,17 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_cli/default_runner'
4
- require 'eac_ruby_utils/console/docopt_runner'
5
- require 'eac_ruby_utils/core_ext'
3
+ require 'eac_cli/core_ext'
6
4
  require 'eac_ruby_gems_utils/tests/multiple'
7
5
 
8
6
  module EacRubyBase0
9
7
  module Runner
10
- class TestAll < ::EacRubyUtils::Console::DocoptRunner
11
- require_sub __FILE__
12
- include ::EacCli::DefaultRunner
13
-
14
- runner_definition do
8
+ class TestAll
9
+ runner_with :help do
15
10
  desc 'Test core and local gems.'
16
11
  end
17
12
 
@@ -20,7 +15,7 @@ module EacRubyBase0
20
15
  end
21
16
 
22
17
  def tests_uncached
23
- ::EacRubyGemsUtils::Tests::Multiple.new(context(:application).all_gems)
18
+ ::EacRubyGemsUtils::Tests::Multiple.new(runner_context.call(:application).all_gems)
24
19
  end
25
20
  end
26
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyBase0
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
@@ -57,8 +57,6 @@ module EacRubyUtils
57
57
  user_check_file(path)
58
58
  elsif path.directory?
59
59
  inner_check_directory(path, level)
60
- else
61
- raise "Unknown filesystem object: #{path}"
62
60
  end
63
61
  end
64
62
 
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support/inflector'
4
+
3
5
  module EacRubyUtils
4
6
  class Inflector
5
7
  class << self
6
8
  VARIABLE_NAME_PATTERN = /[_a-z][_a-z0-9]*/i.freeze
7
9
 
8
10
  def variableize(string)
9
- r = string.gsub(/[^_a-z0-9]/i, '_').gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
11
+ r = ::ActiveSupport::Inflector.transliterate(string).gsub(/[^_a-z0-9]/i, '_')
12
+ .gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
10
13
  m = VARIABLE_NAME_PATTERN.match(r)
11
14
  return r if m
12
15
 
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+ require 'active_support/values/time_zone'
5
+
6
+ module EacRubyUtils
7
+ module LocalTimeZone
8
+ DEBIAN_CONFIG_PATH = '/etc/timezone'
9
+
10
+ class << self
11
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN = %r{\s*Time zone:\s*(\S+/\S+)\s}.freeze
12
+
13
+ def auto
14
+ %w[tz_env debian_config offset].lazy.map { |s| send("by_#{s}") }.find(&:present?)
15
+ end
16
+
17
+ def by_debian_config
18
+ path = ::Pathname.new(DEBIAN_CONFIG_PATH)
19
+ path.exist? ? path.read.strip.presence : nil
20
+ end
21
+
22
+ def by_offset
23
+ ::ActiveSupport::TimeZone[::Time.now.getlocal.gmt_offset].name
24
+ end
25
+
26
+ def by_timedatectl
27
+ executable = ::EacRubyUtils::Envs.local.executable('timedatectl', '--version')
28
+ return nil unless executable.exist?
29
+
30
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN.if_match(executable.command.execute!) { |m| m[1] }
31
+ end
32
+
33
+ def by_tz_env
34
+ ENV['TZ'].presence
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kernel
4
+ # Raise exception with text "Not yet implemented".
5
+ def nyi
6
+ raise "Not yet implemented (Called in #{caller.first})"
7
+ end
8
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/patches/time/local_time_zone'
3
+ require 'active_support/core_ext/time/zones'
4
+ require 'eac_ruby_utils/local_time_zone'
4
5
 
5
- ::Time.zone = ::Time.local_time_zone
6
+ ::Time.zone = ::EacRubyUtils::LocalTimeZone.auto
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.57.0'
4
+ VERSION = '0.58.0'
5
5
  end
@@ -5,7 +5,8 @@ require 'eac_ruby_utils/inflector'
5
5
  RSpec.describe ::EacRubyUtils::Inflector do
6
6
  describe '#variableize' do
7
7
  {
8
- '_A_variableName' => 'a_variablename'
8
+ '_A_variableName' => 'a_variablename',
9
+ 'àéíöũ' => 'aeiou'
9
10
  }.each do |source, expected|
10
11
  context "when source is \"#{source}\"" do
11
12
  it { expect(described_class.variableize(source)).to eq(expected) }
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/local_time_zone'
4
+
5
+ RSpec.describe(::EacRubyUtils::LocalTimeZone) do
6
+ describe '#auto' do
7
+ context 'when TZ environment variable is set' do
8
+ let(:expected_time_zone) { 'America/Sao_Paulo' }
9
+
10
+ before do
11
+ ENV['TZ'] = expected_time_zone
12
+ end
13
+
14
+ it { expect(described_class.auto).to eq(expected_time_zone) }
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehbrs-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-02 00:00:00.000000000 Z
11
+ date: 2021-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm-tools
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '3.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: telegram-bot-ruby
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
95
109
  - !ruby/object:Gem::Dependency
96
110
  name: eac_ruby_gem_support
97
111
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +164,8 @@ files:
150
164
  - lib/ehbrs/runner/google/translate.rb
151
165
  - lib/ehbrs/runner/self.rb
152
166
  - lib/ehbrs/runner/self/test.rb
167
+ - lib/ehbrs/runner/telegram.rb
168
+ - lib/ehbrs/runner/telegram/send_message.rb
153
169
  - lib/ehbrs/runner/vg.rb
154
170
  - lib/ehbrs/runner/vg/ips.rb
155
171
  - lib/ehbrs/runner/vg/wii.rb
@@ -166,8 +182,11 @@ files:
166
182
  - lib/ehbrs/self.rb
167
183
  - lib/ehbrs/self/observers/used_space.rb
168
184
  - lib/ehbrs/self/observers/with_persistence.rb
185
+ - lib/ehbrs/telegram.rb
186
+ - lib/ehbrs/telegram/message_sending.rb
169
187
  - lib/ehbrs/tools.rb
170
188
  - lib/ehbrs/tools/application.rb
189
+ - lib/ehbrs/tools/instance.rb
171
190
  - lib/ehbrs/tools/version.rb
172
191
  - lib/ehbrs/user_dirs.rb
173
192
  - lib/ehbrs/vg.rb
@@ -279,13 +298,17 @@ files:
279
298
  - vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb
280
299
  - vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb
281
300
  - vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
301
+ - vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb
282
302
  - vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb
283
303
  - vendor/eac_cli/lib/eac_cli/parser.rb
284
304
  - vendor/eac_cli/lib/eac_cli/parser/alternative.rb
285
305
  - vendor/eac_cli/lib/eac_cli/parser/alternative/argv.rb
286
306
  - vendor/eac_cli/lib/eac_cli/parser/alternative/double_dash.rb
307
+ - vendor/eac_cli/lib/eac_cli/parser/alternative/long_options.rb
308
+ - vendor/eac_cli/lib/eac_cli/parser/alternative/option_argument.rb
287
309
  - vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb
288
310
  - vendor/eac_cli/lib/eac_cli/parser/alternative/positionals.rb
311
+ - vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
289
312
  - vendor/eac_cli/lib/eac_cli/parser/collector.rb
290
313
  - vendor/eac_cli/lib/eac_cli/parser/error.rb
291
314
  - vendor/eac_cli/lib/eac_cli/patches.rb
@@ -420,6 +443,7 @@ files:
420
443
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/string_list.rb
421
444
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/symbol_list.rb
422
445
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/value.rb
446
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb
423
447
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/on_clean_ruby_environment.rb
424
448
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/options_consumer.rb
425
449
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patch.rb
@@ -434,6 +458,8 @@ files:
434
458
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/hash.rb
435
459
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/options_consumer.rb
436
460
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb
461
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb
462
+ - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb
437
463
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb
438
464
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb
439
465
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb
@@ -459,7 +485,6 @@ files:
459
485
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb
460
486
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time.rb
461
487
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/default_time_zone_set.rb
462
- - vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/local_time_zone.rb
463
488
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash.rb
464
489
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/entry_key_error.rb
465
490
  - vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/node.rb
@@ -504,6 +529,7 @@ files:
504
529
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb
505
530
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb
506
531
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb
532
+ - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb
507
533
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb
508
534
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerable/boolean_combinations_spec.rb
509
535
  - vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/current_spec.rb
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/time/zones'
4
- require 'eac_ruby_utils/envs'
5
-
6
- class Time
7
- class << self
8
- TIMEDATECTL_TIMEZONE_LINE_PATTERN = %r{\s*Time zone:\s*(\S+/\S+)\s}.freeze
9
-
10
- def local_time_zone
11
- local_time_zone_by_timedatectl || local_time_zone_by_offset
12
- end
13
-
14
- def local_time_zone_by_timedatectl
15
- executable = ::EacRubyUtils::Envs.local.executable('timedatectl', '--version')
16
- return nil unless executable.exist?
17
-
18
- TIMEDATECTL_TIMEZONE_LINE_PATTERN.if_match(executable.command.execute!) { |m| m[1] }
19
- end
20
-
21
- def local_time_zone_by_offset
22
- ::ActiveSupport::TimeZone[::Time.now.getlocal.gmt_offset].name
23
- end
24
- end
25
- end