chiark / gitweb /
Initial import.
[rocl] / elite-find
CommitLineData
1304202a 1#! /usr/bin/tclsh
2
3package require "elite" "1.0.0"
4
5proc ok {s vv expr} {
6 global argv0
7 set ip [interp create]
8 foreach v $vv {
9 upvar 1 $v var
10 if {[array exists var]} {
11 foreach {k d} [array get var] {
12 $ip eval [list set ${v}($k) $d]
13 }
14 } else {
15 $ip eval [list set $v $var]
16 }
17 }
18 elite-worldinfo p $s
19 foreach {k v} [array get p] {
20 $ip eval [list set $k $v]
21 }
22 if {[catch { $ip eval [list expr $expr] } rc]} {
23 puts stderr "$argv0: error in expression: $rc"
24 exit 1
25 }
26 interp delete $ip
27 return $rc
28}
29
30set g $galaxy1
31set d 70
32for {set i 0} {$i < [llength $argv]} {incr i} {
33 set a [lindex $argv $i]
34 switch -glob -- $a {
35 "-g" {
36 incr i
37 set a [lindex $argv $i]
38 set g [parse-galaxy-spec $a]
39 if {[string equal $g ""]} {
40 puts stderr "$argv0: bad galaxy string `$a'"
41 exit 1
42 }
43 destructure {. g} $g
44 }
45 "--" {
46 incr i
47 break
48 }
49 "-*" {
50 puts stderr "usage: $argv0 \[-g GALAXY\] \[EXPR\]"
51 exit 1
52 }
53 default {
54 break
55 }
56 }
57}
58
59set expr {}
60if {$i == [llength $argv] - 1} {
61 set expr [lindex $argv $i]
62} elseif {$i != [llength $argv]} {
63 puts stderr "usage: $argv0 \[-g GALAXY\] \[EXPR\]"
64 exit 1
65}
66set ww [worldinfo $g]
67foreach {s x y} $ww {
68 if {[string equal $expr ""] || [ok $s {} $expr]} {
69 puts [world-summary $s]
70 }
71}