Menschenkindlein / woengine

off-line engine without engine. Synchronizer.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README of Wöngine

Модули

Система синхронизатора модульная: на самом деле синхронизатор только вычисляет хеш-суммы файлов, сравнивает их с хранящимися на сервере и запрашивает выполнение определенных действий над полученной разницой. Реализация всех действий кроме чисто локальных лежит на модулях.

API для модуля:

(defgeneric digester (storage)
  (:documentation
   "Returns preferable digester.
Possible values :MD5, :SHA1 and other, supported by `ironclad'."))

(defgeneric initialize-empty (storage)
  (:documentation "Initializes empty storage. If needed.")
  (:method ((storage t)) nil))

(defgeneric retrieve-hashes (storage)
  (:documentation
   "Retrieves hashes in the same form as STORE-HASHES."))

(defgeneric store-hashes (storage hashes)
  (:documentation
   "Stores hashes, given as list."))

(defgeneric retrieve-files (storage local-root paths)
  (:documentation
   "Retrieves files.
Directories assumed to be existing."))

(defgeneric store-files (storage local-root local-paths)
  (:documentation
   "Stores files, given by relative path in the same relative remote path.
Overwrites existing files."))

(defgeneric make-remote-directories (storage paths)
  (:documentation
   "Makes remote directories."))

(defgeneric delete-remote (storage remote)
  (:documentation
   "Deletes remote files and directories"))

Работа с wöngine с использованием ftp модуля

Прежде всего, необходимо определить место хранения, делается это так:

(make-instance 'woengine:ftp-storage
               :digester :md5
               :host "ftp.server.url"
               :username "username"
               :password "password"
               :root "path/to/storage/root/")

К полученному объекту можно применить метод woengine:initialize-empty, который инициализирует директорию на ftp для работы с wöngine, а после этого, функцию woengine:sync, которая кроме первого параметра — объекта-места хранения принимает один обязательный параметр — путь к локальному корню синхронизации, а также один необязательный — направление синхронизации (по умолчанию nil — на сервер).

ВАЖНО

Поскольку хеши передаются как ascii, использование кириллицы в именах файлов не допускается! По моему, это к лучшему. :)

About

off-line engine without engine. Synchronizer.


Languages

Language:Common Lisp 100.0%