高木のブログ

Nature Remo EのCLIツールを作った

2022/02/13

だいぶ前に作った、Nature Remo E用のGem(Nature Remo E用のGem作った)にCLIコマンドを追加した

Gemは作ったことあったけど、CLIはなかったのでその練習みたいな感じ https://github.com/ytkg/nature_remo_e/pull/5/

使い方

インストール

$ gem install remoe

セットアップ(認証の設定)

$ export NATURE_REMO_API_TOKEN=HOGEHOGE

値を取得する

remoe で使えるようになっている

$ remoe
coefficient: 1
cumulative_electric_energy_effective_digits: 6
normal_direction_cumulative_electric_energy: 74914
cumulative_electric_energy_unit: 1
reverse_direction_cumulative_electric_energy: 10
measured_instantaneous: 737

--json オプションでJSON形式で取得もできるようにしてる

$ remoe --json | jq .
{
  "coefficient": 1,
  "cumulative_electric_energy_effective_digits": 6,
  "normal_direction_cumulative_electric_energy": 74914,
  "cumulative_electric_energy_unit": 1,
  "reverse_direction_cumulative_electric_energy": 10,
  "measured_instantaneous": 740
}

サブコマンドで個別の値だけ取れる

$ remoe measured_instantaneous
729

補足

Thorのパッチを当てた(後日追記する)

lib/patches/thor_ext.rb
class Thor
  class << self
    def exit_on_failure?
      true
    end

    def help(shell, subcommand = false)
      list = printable_commands(true, subcommand)
      Thor::Util.thor_classes_in(self).each do |klass|
        list += klass.printable_commands(false)
      end
      # list.sort! { |a, b| a[0] <=> b[0] }

      if defined?(@package_name) && @package_name
        shell.say "#{@package_name} commands:"
      else
        shell.say "Commands:"
      end

      shell.print_table(list, :indent => 2, :truncate => true)
      shell.say
      class_options_help(shell)
    end
  end
end

ytkg

Written by ytkg, Twitter, GitHub