public static int Handle(HydrateParameters options)
{
if (!Directory.Exists(options.Path))
{
if (options.Path.Contains(".htm"))
{
Debug.WriteLine("Supply only the directory, not the path to the file.");
Console.Error.WriteLine("Supply only the directory, not the path to the file.");
}
else
{
Debug.WriteLine("Could not find " + options.Path);
Console.Error.WriteLine("Could not find " + options.Path);
}
return 1;
}
Console.WriteLine("Starting Hydrating.");
var layout = new Layout
{
SizeAndOrientation = SizeAndOrientation.FromString(options.SizeAndOrientation)
};
var collectionSettings = new CollectionSettings
{
XMatterPackName = "Video",
Language1Iso639Code = options.VernacularIsoCode,
Language2Iso639Code = options.NationalLanguage1IsoCode,
Language3Iso639Code = options.NationalLanguage2IsoCode
};
XMatterPackFinder xmatterFinder = new XMatterPackFinder(new[] { BloomFileLocator.GetInstalledXMatterDirectory() });
var locator = new BloomFileLocator(collectionSettings, xmatterFinder, ProjectContext.GetFactoryFileLocations(),
ProjectContext.GetFoundFileLocations(), ProjectContext.GetAfterXMatterFileLocations());
var bookInfo = new BookInfo(options.Path, true);
var book = new Book.Book(bookInfo, new BookStorage(options.Path, locator, new BookRenamedEvent(), collectionSettings),
null, collectionSettings, null, null, new BookRefreshEvent());
if (null == book.OurHtmlDom.SelectSingleNodeHonoringDefaultNS("//script[contains(text(),'bloomPlayer.js')]"))
{
var element = book.OurHtmlDom.Head.AppendChild(book.OurHtmlDom.RawDom.CreateElement("script")) as XmlElement;
element.IsEmpty = false;
element.SetAttribute("type", "text/javascript");
element.SetAttribute("src", "bloomPlayer.js");
}
AddRequisiteJsFiles(options.Path);
//we might change this later, or make it optional, but for now, this will prevent surprises to processes
//running this CLI... the folder name won't change out from under it.
book.LockDownTheFileAndFolderName = true;
book.SetLayout(layout);
book.BringBookUpToDate(new NullProgress());
Console.WriteLine("Finished Hydrating.");
Debug.WriteLine("Finished Hydrating.");
return 0;
}