/*-------------------------------------------------------------------------- * Copyright 2008 utgenome.org * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *--------------------------------------------------------------------------*/ //-------------------------------------- // utgb-shell Project // // Repair.java // Since: Feb 1, 2008 // // $URL$ // $Author$ //-------------------------------------- package org.utgenome.shell; import java.io.IOException; import org.utgenome.config.TrackConfiguration; import org.utgenome.shell.Create.ScaffoldFileFilter; import org.xerial.util.cui.OptionHandler; import org.xerial.util.cui.OptionParser; import org.xerial.util.cui.OptionParserException; import org.xerial.util.log.Logger; public class Repair extends UTGBShellSubCommandBase { private static Logger _logger = Logger.getLogger(Repair.class); private enum Opt { PACKAGE_NAME, GROUP, TARGET_FILE } private OptionParser optionParser = new OptionParser(); private String packageName = null; private String group = "org.utgenome.track"; private String repairTargetFile = null; private ScaffoldFileFilter scaffoldFilter = new Create.CreateAllScaffoldFileFilter(); public Repair() { optionParser.addOptionWithArgument(Opt.PACKAGE_NAME, "p", "package", "PACKAGE_NAME", "specify the java package name, e.g. org.yourdomain.track", new OptionHandler() { public void handle(OptionParser parser) throws OptionParserException { packageName = parser.getValue(Opt.PACKAGE_NAME); } }); optionParser.addOptionWithArgument(Opt.GROUP, "g", "group", "GROUP_NAME", "specify the maven group name of this project. default = org.utgenome.track", new OptionHandler() { public void handle(OptionParser parser) throws OptionParserException { group = parser.getValue(Opt.GROUP); } }); optionParser.addOptionWithArgument(Opt.TARGET_FILE, "f", "file", "FILENAME", "repair specified file only", new OptionHandler() { public void handle(OptionParser parser) throws OptionParserException { repairTargetFile = parser.getValue(Opt.TARGET_FILE); scaffoldFilter = new Create.ScaffoldFileFilter() { public boolean accept(String pathname) { return pathname.equals(repairTargetFile); } }; } }); } @Override public void execute(String[] args) throws UTGBShellException { try { optionParser.parse(args); try { TrackConfiguration config = loadTrackConfiguration(); Create.createScaffold(config.getProjectName(), config.getPackage(), config.getGroup(), "./", scaffoldFilter); } catch (UTGBShellException e) { _logger.info("No config/track-config.xml file found or the config file is collapsed"); // create from scratch if (optionParser.getArgumentLength() < 1) throw new UTGBShellException("please specify your package name with -p option and the project name as a command line argument."); String projectName = optionParser.getArgument(0); if (packageName == null) packageName = projectName; Create.createScaffold(projectName, packageName, group, "./", scaffoldFilter); } } catch (IOException e) { throw new UTGBShellException(e); } catch (OptionParserException e) { throw new UTGBShellException(e); } } @Override public String name() { return "repair"; } public String getDetailedDescription() { return loadUsage("help-repair.txt"); } public String getOneLinerDescription() { return "repair or restore template files"; } public String getOptionList() { return optionParser.helpMessage(); } }