X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Fwhere-vessels;h=c6636d6a96ff20bcf6c45eddf370dc4396ca874a;hp=c5ec9b03ffec39e97ebf2d30a9421912e1145cb9;hb=5ec8840d7a85a2eb96eea32c50c1139c83f92c70;hpb=46618d1dccfe80ac3a3d64e2f6259dad6bcdcffa 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