package com.intellij.perlplugin.extensions.module.builder;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import com.intellij.openapi.projectRoots.SdkModificator;
import com.intellij.openapi.projectRoots.SdkTypeId;
import com.intellij.openapi.roots.RootProvider;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
/**
* Created by ELI-HOME on 05-May-15.
*/
public class PerlSdk implements Sdk {
@NonNls
private final String libPath;
PerlSdkTypeId perlSdkTypeId = new PerlSdkTypeId();
public PerlSdk(String libPath) {
this.libPath = libPath;
}
private static String getConvertedHomePath(Sdk sdk) {
String path = sdk.getHomePath().replace('/', File.separatorChar);
if (!path.endsWith(File.separator)) {
path = path + File.separator;
}
return path;
}
public String suggestHomePath() {
return libPath;
}
public boolean isValidSdkHome(String path) {
if (!path.endsWith("/")) {
path = path + "/";
}
return new File(path + "perl.exe").exists() || new File(path + "perl.sh").exists();
}
public String suggestSdkName(String currentSdkName, String sdkHome) {
return currentSdkName;
}
@NotNull
@Override
public SdkTypeId getSdkType() {
return perlSdkTypeId;
}
@NotNull
@Override
public String getName() {
return perlSdkTypeId.getName();
}
@Nullable
@Override
public String getVersionString() {
return PerlSdkType.getFullVersionString(getHomePath());
}
@Nullable
@Override
public String getHomePath() {
return libPath;
}
@Nullable
@Override
public VirtualFile getHomeDirectory() {
return VirtualFileManager.getInstance().refreshAndFindFileByUrl(libPath);
}
@NotNull
@Override
public RootProvider getRootProvider() {
return null;
}
@NotNull
@Override
public SdkModificator getSdkModificator() {
return new PerlSdkModificator();
}
@Nullable
@Override
public SdkAdditionalData getSdkAdditionalData() {
return null;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Nullable
@Override
public <T> T getUserData(@NotNull Key<T> key) {
return null;
}
@Override
public <T> void putUserData(@NotNull Key<T> key, @Nullable T t) {
}
}