/** * Copyright 2016 LinkedIn Corp. All rights reserved. * * 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. */ package com.github.ambry.store; import com.github.ambry.config.VerifiableProperties; import com.github.ambry.tools.util.ToolUtils; import com.github.ambry.utils.Utils; import java.io.IOException; import java.util.Properties; import joptsimple.ArgumentAcceptingOptionSpec; import joptsimple.OptionParser; import joptsimple.OptionSet; /** * Common utilities used by many store tools */ class StoreToolsUtil { /** * Fetches the properties from Property file and generates the {@link VerifiableProperties} * @param args String array containing the arguments passed in * @return the {@link VerifiableProperties} generated from the properties in the property file * @throws IOException */ static VerifiableProperties getVerifiableProperties(String[] args) throws IOException { OptionParser parser = new OptionParser(); ArgumentAcceptingOptionSpec<String> propsFileOpt = parser.accepts("propsFile", "Properties file path") .withRequiredArg() .describedAs("propsFile") .ofType(String.class); OptionSet options = parser.parse(args); String propsFilePath = options.valueOf(propsFileOpt); Properties properties = Utils.loadProps(propsFilePath); ToolUtils.addClusterMapProperties(properties); return new VerifiableProperties(properties); } }