grassgis 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +10 -5
- data/lib/grassgis/context.rb +82 -15
- data/lib/grassgis/module.rb +4 -14
- data/lib/grassgis/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 299ce1dcdebe07da42c2207549ab9fdeacc9cb2b
|
4
|
+
data.tar.gz: 206df84d976c27567c4a5fe7fc3dd1949d5f92d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be5e141c19ebc4880733387277d61a47fca4993ba1b74e57de8461c52b93965d83d3380864acc3aa37ac9886c53674d463b098ee0b193f2b7742c843c49a845d
|
7
|
+
data.tar.gz: f9d883babf14d38607cc7430c964cfd10d017a246256b135ef6a26a6ba65db142481c94700744d975c081047506305aca059050870bb164355e8fc744ece2b29
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# GrassGis
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/grassgis)
|
4
|
+
[](https://travis-ci.org/jgoizueta/grassgis)
|
5
|
+
|
3
6
|
Support for scripting GRASS with Ruby.
|
4
7
|
|
5
8
|
## Installation
|
@@ -40,11 +43,13 @@ end
|
|
40
43
|
|
41
44
|
## Roadmap
|
42
45
|
|
43
|
-
* Write
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
* Write more documentation with examples.
|
47
|
+
* Add some session helpers:
|
48
|
+
- Method to clean GRASS temporaries ($GISBASE/etc/clean_temp), or do
|
49
|
+
it automatically when disposing the session.
|
50
|
+
- Methods to check if maps exist
|
51
|
+
- Methods that return information as objects (arrays, hashes), e.g.
|
52
|
+
values returned by r.what, the current region, etc.
|
48
53
|
|
49
54
|
### GRASS cooking DSL
|
50
55
|
|
data/lib/grassgis/context.rb
CHANGED
@@ -17,13 +17,14 @@ module GrassGis
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
config[:message_format] ||= 'plain'
|
20
|
-
config[:true_color] = true unless config.
|
21
|
-
config[:transparent] = true unless config.
|
22
|
-
config[:png_auto_write] = true unless config.
|
20
|
+
config[:true_color] = true unless config.key?(:true_color)
|
21
|
+
config[:transparent] = true unless config.key?(:transparent)
|
22
|
+
config[:png_auto_write] = true unless config.key?(:png_auto_write)
|
23
23
|
config[:gnuplot] ||= 'gnuplot -persist'
|
24
24
|
config[:gui] ||= 'wxpython'
|
25
25
|
|
26
26
|
config[:errors] ||= :raise
|
27
|
+
config[:echo] = :commands unless config.key?(:echo)
|
27
28
|
|
28
29
|
@config = config
|
29
30
|
|
@@ -76,6 +77,10 @@ module GrassGis
|
|
76
77
|
last.error_output
|
77
78
|
end
|
78
79
|
|
80
|
+
def configuration
|
81
|
+
@config
|
82
|
+
end
|
83
|
+
|
79
84
|
def allocate
|
80
85
|
@gisrc = Tempfile.new('gisrc')
|
81
86
|
@gisrc.puts "LOCATION_NAME: #{@config[:location]}"
|
@@ -112,7 +117,7 @@ module GrassGis
|
|
112
117
|
end
|
113
118
|
insert_path 'PATH', *paths
|
114
119
|
insert_path 'MANPATH', File.join(@config[:gisbase], 'man')
|
115
|
-
@history =
|
120
|
+
@history = []
|
116
121
|
end
|
117
122
|
|
118
123
|
def dispose
|
@@ -129,7 +134,7 @@ module GrassGis
|
|
129
134
|
define_method root_module.to_sym do
|
130
135
|
var_name = "@#{root_module}"
|
131
136
|
m = instance_variable_get(var_name)
|
132
|
-
m ||= Module.new(root_module,
|
137
|
+
m ||= Module.new(root_module, context: self)
|
133
138
|
instance_variable_set var_name, m
|
134
139
|
m
|
135
140
|
end
|
@@ -159,8 +164,57 @@ module GrassGis
|
|
159
164
|
instance_eval(&blk)
|
160
165
|
end
|
161
166
|
|
167
|
+
def dry?
|
168
|
+
@config[:dry]
|
169
|
+
end
|
170
|
+
|
171
|
+
def execute(cmd)
|
172
|
+
@history << cmd
|
173
|
+
if @config[:echo]
|
174
|
+
puts cmd.to_s(with_input: false)
|
175
|
+
end
|
176
|
+
log_file = @config[:log] || @config[:history]
|
177
|
+
if log_file
|
178
|
+
log_timestamp log_file
|
179
|
+
log log_file, cmd.to_s(with_input: true)
|
180
|
+
end
|
181
|
+
unless dry?
|
182
|
+
cmd.run error_output: :reparate
|
183
|
+
end
|
184
|
+
if cmd.output
|
185
|
+
puts cmd.output if @config[:echo] == :output
|
186
|
+
end
|
187
|
+
handle_errors cmd
|
188
|
+
cmd
|
189
|
+
end
|
190
|
+
|
162
191
|
private
|
163
192
|
|
193
|
+
def log_timestamp(file)
|
194
|
+
log file, Time.now
|
195
|
+
end
|
196
|
+
|
197
|
+
def log(file, message)
|
198
|
+
if file && message
|
199
|
+
File.open(file, 'a') do |log_file|
|
200
|
+
log_file.puts message
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def handle_errors(cmd)
|
206
|
+
GrassGis.error cmd, @config[:errors]
|
207
|
+
if @config[:echo] == :output || @config[:log] || @config[:errors] == :console
|
208
|
+
error_info = GrassGis.error_info(cmd)
|
209
|
+
if error_info
|
210
|
+
if @config[:errors] == :console || @config[:echo] == :output
|
211
|
+
STDERR.puts error_info
|
212
|
+
end
|
213
|
+
log @config[:log], error_info
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
164
218
|
def bool_var(value)
|
165
219
|
value ? 'TRUE' : 'FALSE'
|
166
220
|
end
|
@@ -221,15 +275,27 @@ module GrassGis
|
|
221
275
|
#
|
222
276
|
# Other pararameters:
|
223
277
|
#
|
224
|
-
#
|
225
|
-
#
|
226
|
-
#
|
227
|
-
#
|
278
|
+
# :errors to define the behaviour when a GRASS command fails:
|
279
|
+
# * :raise is the default and raises on errors
|
280
|
+
# * :console shows standar error output of commands
|
281
|
+
# * :quiet error output is retained but not shown
|
282
|
+
#
|
283
|
+
# If :errors is anything other than :raise, it is up to the user
|
284
|
+
# to check each command for errors. With the :console option
|
285
|
+
# the standar error output of commands is sent to the console
|
286
|
+
# and is not accessible through the command's error_output method.
|
287
|
+
#
|
288
|
+
# :log is used to define a loggin file where executed commands
|
289
|
+
# and its output is written.
|
290
|
+
#
|
291
|
+
# :history is used to define a loggin file where only
|
292
|
+
# executed commands are written.
|
228
293
|
#
|
229
|
-
#
|
230
|
-
#
|
231
|
-
#
|
232
|
-
#
|
294
|
+
# :echo controls what is echoed to the standard output
|
295
|
+
# and can be one of the following options:
|
296
|
+
# * :commands show all executed commands (the default)
|
297
|
+
# * :output show the output of commands too
|
298
|
+
# * false don't echo anything
|
233
299
|
#
|
234
300
|
def self.session(config, &blk)
|
235
301
|
context = Context.new(config)
|
@@ -246,10 +312,11 @@ module GrassGis
|
|
246
312
|
command && (!!command.error || (command.status_value && command.status_value != 0))
|
247
313
|
end
|
248
314
|
|
249
|
-
def error_info(command)
|
315
|
+
def self.error_info(command)
|
250
316
|
if command
|
251
317
|
if command.error
|
252
|
-
command.error.
|
318
|
+
info = "Error (#{command.error.class}):\n"
|
319
|
+
info << command.error.to_s
|
253
320
|
elsif (command.status_value && command.status_value != 0)
|
254
321
|
info = "Exit code #{command.status_value}\n"
|
255
322
|
info << command.error_output if command.error_output
|
data/lib/grassgis/module.rb
CHANGED
@@ -14,9 +14,7 @@ module GrassGis
|
|
14
14
|
def initialize(id, options = {})
|
15
15
|
@id = id.to_s
|
16
16
|
@parent = options[:parent]
|
17
|
-
@
|
18
|
-
@history = @configuration[:history] || []
|
19
|
-
@errors = @configuration[:errors] || :raise
|
17
|
+
@context = options[:context]
|
20
18
|
end
|
21
19
|
|
22
20
|
def name
|
@@ -54,22 +52,14 @@ module GrassGis
|
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
57
|
-
@
|
58
|
-
|
59
|
-
run_options = {}
|
60
|
-
if @errors == :console
|
61
|
-
run_options[:error_output] = :console
|
62
|
-
else
|
63
|
-
run_options[:error_output] = :separate
|
64
|
-
end
|
65
|
-
cmd.run run_options
|
55
|
+
if @context
|
56
|
+
@context.execute cmd
|
66
57
|
end
|
67
|
-
GrassGis.error cmd, @errors
|
68
58
|
cmd
|
69
59
|
end
|
70
60
|
|
71
61
|
def method_missing(method, *args)
|
72
|
-
m = Module.new(method, parent: self,
|
62
|
+
m = Module.new(method, parent: self, context: @context)
|
73
63
|
if args.size > 0
|
74
64
|
m.run *args
|
75
65
|
else
|
data/lib/grassgis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grassgis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javier Goizueta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sys_cmd
|