[sword-devel] InstallMgr improvements
Troy A. Griffitts
scribe at crosswire.org
Sat Jan 1 16:29:34 MST 2005
The InstallMgr code has be updated to include support for recursive
directory installations. This is needed to support modules that contain
images and other media in subdirectories of their DataPath.
I've temporarily augmented our Finney genbook module with an image for
testing (sorry Chris for temporarily corrupting a module, but the
currently released installmgr code shouldn't download the extra
subdirectory)
Quickest access to the engine code is with the commandline installmgr
utility under sword/utilities/installmgr, and you can test with a
command like:
./installmgr -i #to initialize installmgr in case you've never used
it before
./installmgr -ri crosswire Finney #to download and install the Finney
module from crosswire
check for finney datapath directory and new image subdirectory installed
in your current module-set.
./installmgr -u Finney #uninstall Finney and be sure we've cleaned up
all datafiles, including image subdirectory.
If you're calling installmgr engine code directory from your
application, the API has changed slightly:
Names have been changed to better reflect our standard naming
conventions, and make more sense.
The 2 status reporting virtual methods have been moved from InstallMgr
class to a new StatusReporter class, and the InstallMgr constructor
takes an instance of your subclassed StatusReporter.
There is also a new mechanism to provide your own FTP tranport code, in
case you don't have CURL on your machine. There is a new base class:
FTPTransport that implements basic FTP functions and exposes a single
virtual method to override for subclasses:
char FTPTransport::getURL(const char *destPath, const char *sourceURL);
if you override this method and provide your own implementation to
retrieve sourceURL and save it to destPath, then you can supply this
subclass to the InstallMgr by overriding:
FTPTransport *InstallMgr::createFTPTransport(const char *host,
StatusReporter *statusReporter);
The default implementation returns our CURL or FTPLib subclass of
FTPTransport (I don't think FTPLib is completely functional yet:
#ifdef CURLAVAILABLE
return new CURLFTPTransport(host, statusReporter);
#else
return new FTPLibFTPTransport(host, statusReporter);
#endif
There have been some other useful methods added around the API recently
to support this and other things, you might check the ChangeLog or
unaptly named sword-cvs archives for svn checkins:
http://www.crosswire.org/pipermail/sword-cvs/
-Troy.
PS. I'm excited about and look hopefully toward all the desires to help!!!
More information about the sword-devel
mailing list