Publishable provides a thin layer over SFTP so that a list of items can be
published to a remote server.
It contains a
Site module and a
File module, along with a specification for
ItemInterface if not working with the file system. These can be mixed into
classes that expose the correct interface to make them easy to
example/publish for a basic implementation.
Site must implement:
#each(&block), that enumerates objects conforming to
ItemInterface says you must implement:
#contents, that returns the contents to be written;
#digest, a hash to determine whether the item has changed;
#url, the url that the item lives at.
There is also the
File module which has default implementations of
ItemInterface for a file on the file system, it requires that the method
#path is defined to return the path to the file.
The class that includes
Site has a
#publish(store, config) method defined on
store is the path to a local cache for digests;
config is a hash containing:
host, the host to publish to;
base, the base path to write to;
user, the username to use;
pass, the password to use, if omitted you will be prompted.