Class: Prremote::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/prremote/cli.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/prremote/cli.rb', line 20

def self.exit_on_failure?
  true
end

Instance Method Details

#deploy(*files) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/prremote/cli.rb', line 53

def deploy(*files)
  raise Thor::Error, 'At least one file is required.' if files.empty?

  port = resolve_port
  Commands::Deploy.new(port: port, baud: options[:baud]).call(*files)
rescue StandardError => e
  raise Thor::Error, e.message
end

#eval(expr) ⇒ Object



79
80
81
82
83
84
# File 'lib/prremote/cli.rb', line 79

def eval(expr)
  port = resolve_port
  Commands::EvalCmd.new(port: port, baud: options[:baud]).call(expr)
rescue StandardError => e
  raise Thor::Error, e.message
end

#installObject



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/prremote/cli.rb', line 29

def install
  version = options[:version] || VERSION
  board = options[:board] || 'picow'
  unless RuntimeManager::BOARDS.include?(board)
    raise Thor::Error, "Unknown board '#{board}'. Valid values: #{RuntimeManager::BOARDS.join(', ')}"
  end

  Commands::Install.new(version: version, board: board).call
rescue StandardError => e
  raise Thor::Error, e.message
end

#listObject



97
98
99
100
101
102
103
104
# File 'lib/prremote/cli.rb', line 97

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

#lsObject



63
64
65
66
67
68
# File 'lib/prremote/cli.rb', line 63

def ls
  port = resolve_port
  Commands::Ls.new(port: port, baud: options[:baud]).call
rescue StandardError => e
  raise Thor::Error, e.message
end

#resetObject



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/prremote/cli.rb', line 107

def reset
  port = resolve_port
  serial = Serial.new(port, options[:baud])
  serial.write("\x03")
  sleep 0.1
  puts 'Reset signal sent.'
rescue StandardError => e
  raise Thor::Error, e.message
ensure
  serial&.close
end

#run_script(*files) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/prremote/cli.rb', line 42

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: options[:baud]).call(*files)
rescue StandardError => e
  raise Thor::Error, e.message
end

#undeployObject



71
72
73
74
75
76
# File 'lib/prremote/cli.rb', line 71

def undeploy
  port = resolve_port
  Commands::Undeploy.new(port: port, baud: options[:baud]).call
rescue StandardError => e
  raise Thor::Error, e.message
end

#versionObject



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/prremote/cli.rb', line 120

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.message})"
  end
end

#watch(*files) ⇒ Object



87
88
89
90
91
92
93
94
# File 'lib/prremote/cli.rb', line 87

def watch(*files)
  raise Thor::Error, 'At least one file is required.' if files.empty?

  port = resolve_port
  Commands::Watch.new(port: port, baud: options[:baud]).call(*files)
rescue StandardError => e
  raise Thor::Error, e.message
end