mptools 0.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mp-download +67 -0
- data/bin/mp-edit +83 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58181d02c3ea1817b6cd546382c18ce5d67eb992
|
4
|
+
data.tar.gz: a7c5c42e94c7e10c3d6c315e9dab179dddc66450
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a4e2ee9f54c0da73c03765a43e29bb198e170b009df0ca611d70e213cde6602d32af9e304053451de57ed9d2baca4b67d74f2a2b137f1b65290e4ce2dc22157
|
7
|
+
data.tar.gz: b4a7e971efc42f7e87e45d36970b79f1508006a4fc1de30234b0f5f76800622fc5faa33ce184d1ed5283de0a03592d84551558dc4c693edb5903ad572e70ef83
|
data/bin/mp-download
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
ARGV.length!=3&&(puts("USAGE: mp-download <PORT> <MICROPYTHON FILENAME> <LOCAL FILENAME>");exit(1))
|
4
|
+
require 'serialport'
|
5
|
+
require 'timeout'
|
6
|
+
|
7
|
+
port, f_mc = ARGV
|
8
|
+
|
9
|
+
print "Opening serial port..."
|
10
|
+
begin
|
11
|
+
s = SerialPort.new(port)
|
12
|
+
rescue Errno::ENOENT
|
13
|
+
puts "FAIL"
|
14
|
+
puts "Could not open serial port to `#{port}`!"
|
15
|
+
exit(1)
|
16
|
+
end
|
17
|
+
puts "ok"
|
18
|
+
print "Interrupting program..."
|
19
|
+
s.write("\u0003\r\n\r\n")
|
20
|
+
ostr = ""
|
21
|
+
read_until_off = lambda do
|
22
|
+
loop do
|
23
|
+
begin
|
24
|
+
Timeout.timeout(0.1) do
|
25
|
+
ostr << s.read(1)
|
26
|
+
end
|
27
|
+
rescue Timeout::Error
|
28
|
+
break
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
read_until_off.call
|
34
|
+
|
35
|
+
unless ostr.reverse[0,4].reverse==">>> "
|
36
|
+
puts "FAIL"
|
37
|
+
puts "It is highly recommended that you plug out your"
|
38
|
+
puts "device and plug it back in and try running"
|
39
|
+
puts "this script again."
|
40
|
+
s.close
|
41
|
+
exit(1)
|
42
|
+
end
|
43
|
+
puts "ok"
|
44
|
+
print "Reading `#{f_mc}`..."
|
45
|
+
ostr.clear
|
46
|
+
s.write(%Q(open(#{f_mc.inspect},"r").read()\r\n))
|
47
|
+
ostr << s.read(1)
|
48
|
+
read_until_off.call
|
49
|
+
ostr = ostr.split("\r\n").drop(1).reverse.drop(1).reverse.join("\r\n")
|
50
|
+
if ostr[0,9] == "Traceback"
|
51
|
+
puts "FAIL"
|
52
|
+
puts "The file you want to download does not exist!"
|
53
|
+
exit(1)
|
54
|
+
end
|
55
|
+
puts "ok"
|
56
|
+
|
57
|
+
content = eval ostr.gsub("\\n","\n").gsub("\\t","\t").gsub("\\f","\f").gsub("\\r","\r")
|
58
|
+
|
59
|
+
print "Writing to `#{ARGV[2]}`..."
|
60
|
+
File.write(ARGV[2],content)
|
61
|
+
puts "ok"
|
62
|
+
|
63
|
+
print "Restarting..."
|
64
|
+
s.write("\u0004\r\n")
|
65
|
+
puts "ok"
|
66
|
+
s.close
|
67
|
+
puts "All done!"
|
data/bin/mp-edit
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
ARGV.length!=2&&(puts("USAGE: mp-download <PORT> <MICROPYTHON FILENAME>");exit(1))
|
4
|
+
require 'serialport'
|
5
|
+
require 'timeout'
|
6
|
+
|
7
|
+
port, f_mc = ARGV
|
8
|
+
|
9
|
+
print "Opening serial port..."
|
10
|
+
begin
|
11
|
+
s = SerialPort.new(port)
|
12
|
+
rescue Errno::ENOENT
|
13
|
+
puts "FAIL"
|
14
|
+
puts "Could not open serial port to `#{port}`!"
|
15
|
+
exit(1)
|
16
|
+
end
|
17
|
+
puts "ok"
|
18
|
+
print "Interrupting program..."
|
19
|
+
s.write("\u0003\r\n\r\n")
|
20
|
+
ostr = ""
|
21
|
+
read_until_off = lambda do
|
22
|
+
loop do
|
23
|
+
begin
|
24
|
+
Timeout.timeout(0.1) do
|
25
|
+
ostr << s.read(1)
|
26
|
+
end
|
27
|
+
rescue Timeout::Error
|
28
|
+
break
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
read_until_off.call
|
34
|
+
|
35
|
+
unless ostr.reverse[0,4].reverse==">>> "
|
36
|
+
puts "FAIL"
|
37
|
+
puts "It is highly recommended that you plug out your"
|
38
|
+
puts "device and plug it back in and try running"
|
39
|
+
puts "this script again."
|
40
|
+
s.close
|
41
|
+
exit(1)
|
42
|
+
end
|
43
|
+
puts "ok"
|
44
|
+
print "Reading `#{f_mc}`..."
|
45
|
+
ostr.clear
|
46
|
+
s.write(%Q(open(#{f_mc.inspect},"r").read()\r\n))
|
47
|
+
ostr << s.read(1)
|
48
|
+
read_until_off.call
|
49
|
+
ostr = ostr.split("\r\n").drop(1).reverse.drop(1).reverse.join("\r\n")
|
50
|
+
if ostr[0,9] == "Traceback"
|
51
|
+
puts "FAIL"
|
52
|
+
puts "The file you want to edit does not exist!"
|
53
|
+
exit(1)
|
54
|
+
end
|
55
|
+
|
56
|
+
content = eval ostr.gsub("\\n","\n").gsub("\\t","\t").gsub("\\f","\f").gsub("\\r","\r")
|
57
|
+
|
58
|
+
fname = "/tmp/mptools-#{f_mc.gsub("/","-")}"
|
59
|
+
if File.exists?(fname)
|
60
|
+
puts "FAIL"
|
61
|
+
puts "The file is already being edited by another session!"
|
62
|
+
exit(1)
|
63
|
+
end
|
64
|
+
|
65
|
+
File.write(fname,content)
|
66
|
+
puts "ok"
|
67
|
+
ed = ENV["VISUAL"]||"nano"
|
68
|
+
system("#{ed} #{fname}")
|
69
|
+
|
70
|
+
f_content = File.read(fname)
|
71
|
+
print "Re-uploading `#{f_mc}`..."
|
72
|
+
s.write(%Q(f=open(#{f_mc.inspect},"rw+");f.write(#{f_content.inspect});f.close()\r\n\r\n))
|
73
|
+
ostr << s.read(1)
|
74
|
+
read_until_off.call
|
75
|
+
puts "ok"
|
76
|
+
|
77
|
+
File.delete(fname)
|
78
|
+
|
79
|
+
print "Restarting..."
|
80
|
+
s.write("\u0004\r\n")
|
81
|
+
puts "ok"
|
82
|
+
s.close
|
83
|
+
puts "All done!"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mptools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sesshomariu
|
@@ -14,9 +14,13 @@ description: A variety of tools for your Micro Python
|
|
14
14
|
email:
|
15
15
|
executables:
|
16
16
|
- mp-upload
|
17
|
+
- mp-download
|
18
|
+
- mp-edit
|
17
19
|
extensions: []
|
18
20
|
extra_rdoc_files: []
|
19
21
|
files:
|
22
|
+
- bin/mp-download
|
23
|
+
- bin/mp-edit
|
20
24
|
- bin/mp-upload
|
21
25
|
homepage:
|
22
26
|
licenses: []
|