mirror of
https://github.com/kiwix/kiwix-tools.git
synced 2025-09-22 11:22:38 -04:00
Adapt kiwix-manage to new kiwix-lib API.
- Books are identified by Id, not by index. - No more current option.
This commit is contained in:
parent
74fecd34e6
commit
bf40d4ff91
@ -30,25 +30,26 @@ using namespace std;
|
||||
|
||||
enum supportedAction { NONE, ADD, SHOW, REMOVE };
|
||||
|
||||
void show(kiwix::Library library)
|
||||
void show(kiwix::Library* library)
|
||||
{
|
||||
std::vector<kiwix::Book>::iterator itr;
|
||||
auto booksIds = library->getBooksIds();
|
||||
unsigned int inc = 1;
|
||||
for (itr = library.books.begin(); itr != library.books.end(); ++itr) {
|
||||
for(auto& id: booksIds) {
|
||||
auto& book = library->getBookById(id);
|
||||
std::cout << "#" << inc++ << std::endl
|
||||
<< "id:\t\t" << itr->id << std::endl
|
||||
<< "path:\t\t" << itr->path << std::endl
|
||||
<< "indexpath:\t" << itr->indexPath << std::endl
|
||||
<< "url:\t\t" << itr->url << std::endl
|
||||
<< "title:\t\t" << itr->title << std::endl
|
||||
<< "name:\t\t" << itr->name << std::endl
|
||||
<< "tags:\t\t" << itr->tags << std::endl
|
||||
<< "description:\t" << itr->description << std::endl
|
||||
<< "creator:\t" << itr->creator << std::endl
|
||||
<< "date:\t\t" << itr->date << std::endl
|
||||
<< "articleCount:\t" << itr->articleCount << std::endl
|
||||
<< "mediaCount:\t" << itr->mediaCount << std::endl
|
||||
<< "size:\t\t" << itr->size << " KB" << std::endl
|
||||
<< "id:\t\t" << book.getId() << std::endl
|
||||
<< "path:\t\t" << book.getPath() << std::endl
|
||||
<< "indexpath:\t" << book.getIndexPath() << std::endl
|
||||
<< "url:\t\t" << book.getUrl() << std::endl
|
||||
<< "title:\t\t" << book.getTitle() << std::endl
|
||||
<< "name:\t\t" << book.getName() << std::endl
|
||||
<< "tags:\t\t" << book.getTags() << std::endl
|
||||
<< "description:\t" << book.getDescription() << std::endl
|
||||
<< "creator:\t" << book.getCreator() << std::endl
|
||||
<< "date:\t\t" << book.getDate() << std::endl
|
||||
<< "articleCount:\t" << book.getArticleCount() << std::endl
|
||||
<< "mediaCount:\t" << book.getMediaCount() << std::endl
|
||||
<< "size:\t\t" << book.getSize() << " KB" << std::endl
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
@ -68,14 +69,14 @@ void usage()
|
||||
}
|
||||
|
||||
|
||||
bool handle_show(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
bool handle_show(kiwix::Library* library, const std::string& libraryPath,
|
||||
int argc, char* argv[])
|
||||
{
|
||||
show(libraryManager->cloneLibrary());
|
||||
show(library);
|
||||
return(0);
|
||||
}
|
||||
|
||||
bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
bool handle_add(kiwix::Library* library, const std::string& libraryPath,
|
||||
int argc, char* argv[])
|
||||
{
|
||||
string zimPath;
|
||||
@ -84,7 +85,6 @@ bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
kiwix::supportedIndexType indexBackend = kiwix::XAPIAN;
|
||||
string url;
|
||||
string origID = "";
|
||||
bool setCurrent = false;
|
||||
int option_index = 0;
|
||||
int c = 0;
|
||||
bool resultCode = 0;
|
||||
@ -102,7 +102,6 @@ bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
{"indexPath", required_argument, 0, 'i'},
|
||||
{"indexBackend", required_argument, 0, 'b'},
|
||||
{"zimPathToSave", required_argument, 0, 'z'},
|
||||
{"current", no_argument, 0, 'c'},
|
||||
{0, 0, 0, 0}};
|
||||
|
||||
c = getopt_long(argc, argv, "cz:u:i:b:", long_options, &option_index);
|
||||
@ -117,10 +116,6 @@ bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
origID = optarg;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
setCurrent = true;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
indexPath = optarg;
|
||||
break;
|
||||
@ -143,15 +138,14 @@ bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
}
|
||||
|
||||
if (!zimPath.empty()) {
|
||||
kiwix::Manager manager(library);
|
||||
zimPathToSave = zimPathToSave == "." ? zimPath : zimPathToSave;
|
||||
string bookId = libraryManager->addBookFromPathAndGetId(
|
||||
string bookId = manager.addBookFromPathAndGetId(
|
||||
zimPath, zimPathToSave, url, false);
|
||||
if (!bookId.empty()) {
|
||||
if (setCurrent)
|
||||
libraryManager->setCurrentBookId(bookId);
|
||||
/* Save the index infos if necessary */
|
||||
if (!indexPath.empty())
|
||||
libraryManager->setBookIndex(bookId, indexPath, indexBackend);
|
||||
manager.setBookIndex(bookId, indexPath, indexBackend);
|
||||
} else {
|
||||
cerr << "Unable to build or save library file '" << libraryPath << "'"
|
||||
<< endl;
|
||||
@ -165,28 +159,25 @@ bool handle_add(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
return(resultCode);
|
||||
}
|
||||
|
||||
bool handle_remove(kiwix::Manager* libraryManager, const std::string& libraryPath,
|
||||
bool handle_remove(kiwix::Library* library, const std::string& libraryPath,
|
||||
int argc, char* argv[])
|
||||
{
|
||||
unsigned int bookIndex = 0;
|
||||
const unsigned int totalBookCount = libraryManager->getBookCount(true, true);
|
||||
std::string bookId = 0;
|
||||
const unsigned int totalBookCount = library->getBookCount(true, true);
|
||||
bool exitCode = 0;
|
||||
|
||||
if (argc > 3) {
|
||||
bookIndex = atoi(argv[3]);
|
||||
bookId = argv[3];
|
||||
}
|
||||
|
||||
if (bookIndex > 0 && bookIndex <= totalBookCount) {
|
||||
libraryManager->removeBookByIndex(bookIndex - 1);
|
||||
} else {
|
||||
if (!library->removeBookById(bookId)) {
|
||||
if (totalBookCount > 0) {
|
||||
std::cerr
|
||||
<< "Invalid book index number. Please give a number between 1 and "
|
||||
<< totalBookCount << std::endl;
|
||||
<< "Invalid book id." << std::endl;
|
||||
exitCode = 1;
|
||||
} else {
|
||||
std::cerr
|
||||
<< "Invalid book index number. Library is empty, no book to delete."
|
||||
<< "Invalid book id. Library is empty, no book to delete."
|
||||
<< std::endl;
|
||||
exitCode = 1;
|
||||
}
|
||||
@ -199,7 +190,7 @@ int main(int argc, char** argv)
|
||||
{
|
||||
string libraryPath = "";
|
||||
supportedAction action = NONE;
|
||||
kiwix::Manager libraryManager;
|
||||
kiwix::Library library;
|
||||
|
||||
/* Argument parsing */
|
||||
if (argc > 2) {
|
||||
@ -224,21 +215,22 @@ int main(int argc, char** argv)
|
||||
libraryPath = isRelativePath(libraryPath)
|
||||
? computeAbsolutePath(getCurrentDirectory(), libraryPath)
|
||||
: libraryPath;
|
||||
libraryManager.readFile(libraryPath, false);
|
||||
kiwix::Manager manager(&library);
|
||||
manager.readFile(libraryPath, false);
|
||||
|
||||
/* SHOW */
|
||||
bool exitCode = 0;
|
||||
if (action == SHOW) {
|
||||
exitCode = handle_show(&libraryManager, libraryPath, argc, argv);
|
||||
exitCode = handle_show(&library, libraryPath, argc, argv);
|
||||
} else if (action == ADD) {
|
||||
exitCode = handle_add(&libraryManager, libraryPath, argc, argv);
|
||||
exitCode = handle_add(&library, libraryPath, argc, argv);
|
||||
} else if (action == REMOVE) {
|
||||
exitCode = handle_remove(&libraryManager, libraryPath, argc, argv);
|
||||
exitCode = handle_remove(&library, libraryPath, argc, argv);
|
||||
}
|
||||
|
||||
/* Rewrite the library file */
|
||||
if (action == REMOVE || action == ADD) {
|
||||
libraryManager.writeFile(libraryPath);
|
||||
library.writeToFile(libraryPath);
|
||||
}
|
||||
|
||||
exit(exitCode);
|
||||
|
Loading…
x
Reference in New Issue
Block a user