/* * ****************************************************************************** * Copyright (c) 2013 JavaTIC. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Yann Le Moigne - initial API and implementation * ***************************************************************************** */ package fr.javatic.vertx.webjar.puller; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; import org.eclipse.aether.repository.LocalRepository; import org.eclipse.aether.repository.RemoteRepository; import org.vertx.java.core.logging.Logger; public class RepositoryConfig { private LocalRepository localRepository; private List<RemoteRepository> remoteRepositories; public RepositoryConfig(Logger logger, String reposFileName) { remoteRepositories = new ArrayList<>(); try (InputStream is = getClass().getClassLoader().getResourceAsStream(reposFileName)) { if (is != null) { BufferedReader rdr = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rdr.readLine()) != null) { line = line.trim(); if (line.isEmpty() || line.startsWith("#")) { // blank line or comment continue; } int colonPos = line.indexOf(':'); if (colonPos == -1 || colonPos == line.length() - 1) { throw new IllegalArgumentException("Invalid repo: " + line); } String type = line.substring(0, colonPos); String repoID = line.substring(colonPos + 1); switch (type) { case "mavenLocal": localRepository = new LocalRepository(expandPath(repoID)); break; case "maven": remoteRepositories.add(new RemoteRepository.Builder(UUID.randomUUID().toString(), "default", repoID).build()); break; default: logger.info(String.format("%s repository are not supported webjar, will ignore '%s'", type, repoID)); } } } } catch (IOException e) { throw new RepositoryConfigException("Failed to load " + reposFileName + " " + e.getMessage(), e); } } public LocalRepository getLocalRepository() { return localRepository; } public List<RemoteRepository> getRemoteRepositories() { return Collections.unmodifiableList(remoteRepositories); } private String expandPath(String path) { return path.replace("~", System.getProperty("user.home")); } }