001    /*
002     * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org
003     * Copyright (C) 2011 NightLabs Consulting GmbH
004     *
005     * This program is free software: you can redistribute it and/or modify
006     * it under the terms of the GNU Affero General Public License as
007     * published by the Free Software Foundation, either version 3 of the
008     * License, or (at your option) any later version.
009     *
010     * This program is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013     * GNU Affero General Public License for more details.
014     *
015     * You should have received a copy of the GNU Affero General Public License
016     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
017     */
018    package org.cumulus4j.keymanager.cli;
019    
020    import java.io.IOException;
021    import java.io.InputStream;
022    import java.util.Properties;
023    
024    /**
025     * <p>
026     * {@link SubCommand} implementation for showing the version number of the command
027     * line tool.
028     * </p>
029     * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de
030     */
031    public class VersionSubCommand
032    extends SubCommand
033    {
034            public static String getVersion() throws IOException
035            {
036                    Properties properties = new Properties();
037                    String resourceName = "/META-INF/maven/org.cumulus4j/org.cumulus4j.keymanager.cli/pom.properties";
038                    InputStream in = VersionSubCommand.class.getResourceAsStream(resourceName);
039                    if (in == null)
040                            return "UNKNOWN";
041    
042                    try {
043                            properties.load(in);
044                    } catch (IOException x) {
045                            throw new IOException("Cannot read resource: " + resourceName, x);
046                    } finally {
047                            in.close();
048                    }
049                    String version = properties.getProperty("version");
050                    return version;
051            }
052    
053            @Override
054            public String getSubCommandName() {
055                    return "version";
056            }
057    
058            @Override
059            public String getSubCommandDescription() {
060                    return "Display the version of this JAR.";
061            }
062    
063            @Override
064            public void run() throws Exception
065            {
066                    System.out.println(getVersion());
067            }
068    }