/* * Copyright (C) 2016 Didier Clermonté * Copyright (C) 2016 Christian Pierre Momon * * This file is part of Siba. * * Siba is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package org.dclermonte.siba.cli; import java.io.File; import java.util.ResourceBundle; import org.apache.commons.lang3.StringUtils; import org.dclermonte.siba.SibaException; import org.dclermonte.siba.model.SibaManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This class CLI is for use from Command Line Interface. * * */ public class SibaCLI { public static final Logger logger = LoggerFactory.getLogger(SibaCLI.class); private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("org.dclermonte.siba.cli.messages"); //$NON-NLS-1$ public static void backup(final File directoryToSave) throws SibaException { File result; result = SibaManager.backup(directoryToSave); System.out.println(BUNDLE.getString("confirmDialog.text") + result.getName()); //$NON-NLS-1$ return; } /** * * This method is called for Backup from CLI. * * @param directoryToSave * @param targetDirectory * @throws SibaException */ public static void backup(final File directoryToSave, final File targetDirectory) throws SibaException { File result; result = SibaManager.backup(directoryToSave, targetDirectory); System.out.println(BUNDLE.getString("confirmDialog.text") + result.getName()); //$NON-NLS-1$ return; } /** * * This method is called for Check from CLI. anObject * * @param fileToCheck * @throws SibaException */ public static void check(final File fileToCheck) throws SibaException { boolean result; result = SibaManager.check(fileToCheck); String yourFile = BUNDLE.getString("confirmDialogYourString.text"); //$NON-NLS-1$ String good = BUNDLE.getString("confirmDialogGood.text"); //$NON-NLS-1$ String bad = BUNDLE.getString("confirmDialogBad.text"); //$NON-NLS-1$ if (result) { System.out.println(yourFile + fileToCheck.getName() + good); } else { System.out.println(yourFile + fileToCheck.getName() + bad); } return; } /** * * This method send help response. * */ public static void help() { System.out.println("usage :"); System.out.println("Siba :"); System.out.println("Siba [-h |-help| --help]"); System.out.println("siba backup directoryToSave [target]"); System.out.println("siba check [filename | filename.tgz | filename.tgz.md5]"); } /** * * This method launch CLI. * * @param args */ public static void run(final String[] args) { try { // This part implements an automate. int parameterCount = args.length; if (parameterCount == 0) { help(); } else if (StringUtils.equals(args[0], "-h") || StringUtils.equals(args[0], "-help") || StringUtils.equals(args[0], "--help")) { help(); } else if (StringUtils.equals(args[0], "backup")) { if (parameterCount == 1) { backup(null, null); } else if (parameterCount == 2) { backup(new File(args[1])); } else if (parameterCount == 3) { backup(new File(args[1]), new File(args[2])); } else { throw new SibaException(BUNDLE.getString("ToManyParameter.text")); //$NON-NLS-1$ } } else if (StringUtils.equals(args[0], "check")) { if (parameterCount == 1) { check(null); } else if (parameterCount == 2) { String fileToCheckName; if (!args[1].endsWith("tgz") && !args[1].endsWith("md5")) { fileToCheckName = args[1].concat(".tgz.md5"); } else if (args[1].endsWith("tgz")) { fileToCheckName = args[1].concat(".md5"); } else { fileToCheckName = args[1]; } File fileToCheck = new File(fileToCheckName); check(fileToCheck); } else { throw new SibaException(BUNDLE.getString("ToManyParameter.text")); //$NON-NLS-1$ } } else { System.out.println(BUNDLE.getString("badUsage.text")); help(); } } catch (SibaException sibaException) { System.err.println("SibaException = " + sibaException.getMessage()); sibaException.printStackTrace(); if (!(sibaException.getCause() == null)) { logger.info("SibaException chainée = " + sibaException.getCause().getMessage()); } help(); } } }