Class: Prremote::CLI
- Inherits:
-
Thor
- Object
- Thor
- Prremote::CLI
- Defined in:
- lib/prremote/cli.rb
Class Method Summary collapse
Instance Method Summary collapse
- #deploy(*files) ⇒ Object
- #eval(expr) ⇒ Object
- #install ⇒ Object
- #list ⇒ Object
- #ls ⇒ Object
- #reset ⇒ Object
- #run_script(*files) ⇒ Object
- #undeploy ⇒ Object
- #version ⇒ Object
- #watch(*files) ⇒ Object
Class Method Details
.exit_on_failure? ⇒ Boolean
21 22 23 |
# File 'lib/prremote/cli.rb', line 21 def self.exit_on_failure? true end |
Instance Method Details
#deploy(*files) ⇒ Object
67 68 69 70 71 72 73 74 |
# File 'lib/prremote/cli.rb', line 67 def deploy(*files) raise Thor::Error, 'At least one file is required.' if files.empty? port = resolve_port Commands::Deploy.new(port: port, baud: [:baud]).call(*files) rescue StandardError => e raise Thor::Error, e. end |
#eval(expr) ⇒ Object
93 94 95 96 97 98 |
# File 'lib/prremote/cli.rb', line 93 def eval(expr) port = resolve_port Commands::EvalCmd.new(port: port, baud: [:baud]).call(expr) rescue StandardError => e raise Thor::Error, e. end |
#install ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/prremote/cli.rb', line 33 def install version = [:version] || VERSION board = [:board] unless board puts "Specify a board with --board / -b. Supported boards:" RuntimeManager::BOARDS.each { |b| puts " #{b}" } puts puts "Example: prremote install -b esp32c6" return end unless RuntimeManager::BOARDS.include?(board) raise Thor::Error, "Unknown board '#{board}'. Supported boards: #{RuntimeManager::BOARDS.join(', ')}" end Commands::Install.new(version: version, board: board, port: [:port], verbose: [:verbose]).call rescue StandardError => e raise Thor::Error, e. end |
#list ⇒ Object
111 112 113 114 115 116 117 118 |
# File 'lib/prremote/cli.rb', line 111 def list devices = Detector.new.list_devices if devices.empty? puts 'No serial devices found.' else devices.each { |d| puts "#{d[:port]} (#{d[:label]})" } end end |
#ls ⇒ Object
77 78 79 80 81 82 |
# File 'lib/prremote/cli.rb', line 77 def ls port = resolve_port Commands::Ls.new(port: port, baud: [:baud]).call rescue StandardError => e raise Thor::Error, e. end |
#reset ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/prremote/cli.rb', line 121 def reset port = resolve_port serial = Serial.new(port, [:baud]) serial.write("\x03") sleep 0.1 puts 'Reset signal sent.' rescue StandardError => e raise Thor::Error, e. ensure serial&.close end |
#run_script(*files) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/prremote/cli.rb', line 56 def run_script(*files) raise Thor::Error, 'At least one file is required.' if files.empty? port = resolve_port Commands::Run.new(port: port, baud: [:baud]).call(*files) rescue StandardError => e raise Thor::Error, e. end |
#undeploy ⇒ Object
85 86 87 88 89 90 |
# File 'lib/prremote/cli.rb', line 85 def undeploy port = resolve_port Commands::Undeploy.new(port: port, baud: [:baud]).call rescue StandardError => e raise Thor::Error, e. end |
#version ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/prremote/cli.rb', line 134 def version puts "prremote: #{VERSION}" puts "runtime: #{fetch_runtime_version}" begin major = Mrbc.major_version puts "mrbc: #{Mrbc.version} (#{Mrbc.bin})" unless major && major >= Mrbc::REQUIRED_MAJOR puts " ** mrbc is too old (need #{Mrbc::REQUIRED_MAJOR}.x) **" puts " Hint: the path can be set via MRBC environment variable." end rescue StandardError => e puts "mrbc: (#{e.})" end end |
#watch(*files) ⇒ Object
101 102 103 104 105 106 107 108 |
# File 'lib/prremote/cli.rb', line 101 def watch(*files) raise Thor::Error, 'At least one file is required.' if files.empty? port = resolve_port Commands::Watch.new(port: port, baud: [:baud]).call(*files) rescue StandardError => e raise Thor::Error, e. end |