blob: 47ab4d44a06a1029e86ea06ae02e43c13bf6c366 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 QNX Software Systems and others.
* 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
*******************************************************************************/
package org.eclipse.cdt.internal.qt.core;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.cdt.qt.core.IQtInstall;
public class QtInstall implements IQtInstall {
private final Path qmakePath;
private String spec;
private Map<String, String> properties = new HashMap<>();
public QtInstall(Path qmakePath) {
this.qmakePath = qmakePath;
}
@Override
public Path getQmakePath() {
return qmakePath;
}
@Override
public Path getLibPath() {
return qmakePath.resolve("../lib"); //$NON-NLS-1$
}
@Override
public Path getQmlPath() {
return qmakePath.resolve("../../qml"); //$NON-NLS-1$
}
public static String getSpec(Path qmakePath) throws IOException {
if (Files.exists(qmakePath)) {
Process proc = new ProcessBuilder(qmakePath.toString(), "-query", "QMAKE_XSPEC").start(); //$NON-NLS-1$ //$NON-NLS-2$
try (BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()))) {
String line = reader.readLine();
if (line != null) {
return line.trim();
}
}
}
return null;
}
@Override
public String getSpec() {
if (spec == null) {
try {
spec = getSpec(getQmakePath());
} catch (IOException e) {
Activator.log(e);
}
}
return spec;
}
@Override
public void setProperty(String key, String value) {
properties.put(key, value);
}
@Override
public Map<String, String> getProperties() {
return Collections.unmodifiableMap(properties);
}
}