--- /dev/null
+{
+ 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}
+}
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
--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" }
}
#---------- 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
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
#---------- main program ----------
parseargs
-vesselclasses-init
argdefaults
httpclientsetup where-vessels
+info-cache-update
+vesselclasses-init
load-chart
widgets-setup
make-filters