From: Ian Jackson Date: Sun, 25 Jul 2010 13:10:52 +0000 (+0100) Subject: where-vessels phones home for vessel info X-Git-Tag: 6.6.0~4 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-test.git;a=commitdiff_plain;h=5ec8840d7a85a2eb96eea32c50c1139c83f92c70;ds=sidebyside where-vessels phones home for vessel info --- diff --git a/.gitignore b/.gitignore index 9beb60b..0f48304 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ yarrg/yarrg yarrg/routesearch yarrg/_*.* +yarrg/_vessel-info-cache yarrg/OCEAN-*.db yarrg/Writer.lock yarrg/DATA diff --git a/yarrg/icons/vessel-info b/yarrg/icons/vessel-info new file mode 100644 index 0000000..1bfc767 --- /dev/null +++ b/yarrg/icons/vessel-info @@ -0,0 +1,21 @@ +{ + smsloop am sl Sloop + lgsloop bm ct Cutter + dhow cm dh Dhow + longship dm ls Longship + baghlah em bg Baghlah + junk eo jk Junk + merchbrig fm mb {Merchant Brig} + warbrig gm wb {War Brig} + xebec hm xe Xebec + merchgal jm mg {Merchant Galleon} + warfrig im wf {War Frigate} + grandfrig km gf {Grand Frigate} +} +{ + celtic E {Emerald class} + icy F {Frost class} + rogue R {Rogue class} + verdant V {Verdant class} + inferno I {Inferno class} +} diff --git a/yarrg/where-vessels b/yarrg/where-vessels index c5ec9b0..c6636d6 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -103,6 +103,8 @@ proc nextarg {} { set notes_loc vessel-notes set scraper {./yppedia-ocean-scraper --chart} +set info_cache _vessel-info-cache +set info_source rsync.yarrg.chiark.net::yarrg/vessel-info proc parseargs {} { global ai argv @@ -118,6 +120,7 @@ proc parseargs {} { --clipboard-file { load-clipboard-file [nextarg] } --local-html-dir { lappend scraper --local-html-dir=[nextarg] } --notes { glset notes_loc [nextarg] } + --vessel-info-source { glset info_source [nextarg] } --debug { incr debug } default { badusage "unknown option $arg" } } @@ -246,34 +249,33 @@ proc display-note-infos {} { #---------- vessel properties ---------- -set vessel_class_info { - smsloop am sl Sloop - lgsloop bm ct Cutter - dhow cm dh Dhow - longship dm ls Longship - baghlah em bg Baghlah - junk eo jk Junk - merchbrig fm mb {Merchant Brig} - warbrig gm wb {War Brig} - xebec hm xe Xebec - merchgal jm mg {Merchant Galleon} - warfrig im wf {War Frigate} - grandfrig km gf {Grand Frigate} -} - -set vessel_subclass_info { - celtic E {Emerald class} - icy F {Frost class} - rogue R {Rogue class} - verdant V {Verdant class} - inferno I {Inferno class} +proc info-cache-update {} { + global info_source info_cache + file mkdir $info_cache + exec sh -c "cp -u icons/* $info_cache/." + + if {[string length $info_source]} { + set cmdl [list \ + rsync -udLKtOzm \ + --exclude=*~ --exclude=*.bak --exclude=.* --exclude=*.tmp \ + $info_source/ $info_cache 2>@ stderr] + debug "INFO-CACHE $cmdl" + eval exec $cmdl + } + + set f [open $info_cache/vessel-info] + glset vessel_class_data [read $f] + close $f } proc vesselclasses-init {} { global vc_game2code vc_code2abbrev vc_code2full vc_codes - global vessel_class_info vessel_subclass_info + + global vessel_class_data + manyset $vessel_class_data classinfos subclassinfos + set vc_codes {} - foreach {game code abbrev full} $vessel_class_info { + foreach {game code abbrev full} $classinfos { if {![regexp {^[a-z][a-z]$} $code code]} { error "bad code" } if {![regexp {^[a-z][a-z]$} $abbrev abbrev]} { error "bad abbrev" } lappend vc_codes $code @@ -287,7 +289,7 @@ proc vesselclasses-init {} { global vsc_game2code set vsc_game2code(null) {} set vsc_code2report() Ordinary - foreach {game code full} $vessel_subclass_info { + foreach {game code full} $subclassinfos { if {![regexp {^[A-Z]$} $code code]} { error "bad code" } set vsc_game2code($game) $code set vsc_code2report($code) $full @@ -1179,9 +1181,10 @@ proc invoke_notes {} { #---------- main program ---------- parseargs -vesselclasses-init argdefaults httpclientsetup where-vessels +info-cache-update +vesselclasses-init load-chart widgets-setup make-filters