grassgis 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/grassgis.svg)](http://badge.fury.io/rb/grassgis)
|
4
|
+
[![Build Status](https://travis-ci.org/jgoizueta/grassgis.svg)](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
|