[intellij sh] IDEA-267920 Fix plugin compatibility problem
[idea/community.git] / plugins / sh / src / com / intellij / sh / run / ShConfigurationType.java
1 // Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.sh.run;
3
4 import com.intellij.execution.configurations.ConfigurationTypeUtil;
5 import com.intellij.execution.configurations.RunConfiguration;
6 import com.intellij.execution.configurations.SimpleConfigurationType;
7 import com.intellij.openapi.project.Project;
8 import com.intellij.openapi.util.NotNullLazyValue;
9 import com.intellij.sh.SHIcons;
10 import com.intellij.sh.ShBundle;
11 import com.intellij.sh.ShLanguage;
12 import com.intellij.util.EnvironmentUtil;
13 import org.jetbrains.annotations.NotNull;
14 import org.jetbrains.annotations.Nullable;
15
16 public final class ShConfigurationType extends SimpleConfigurationType {
17   ShConfigurationType() {
18     super("ShConfigurationType", ShLanguage.INSTANCE.getID(),
19           ShBundle.message("sh.run.configuration.description.0.configuration", ShLanguage.INSTANCE.getID()),
20           NotNullLazyValue.createValue(() -> SHIcons.ShFile));
21   }
22
23   @Override
24   public @NotNull RunConfiguration createTemplateConfiguration(@NotNull Project project) {
25     ShRunConfiguration configuration = new ShRunConfiguration(project, this, ShLanguage.INSTANCE.getID());
26     String defaultShell = getDefaultShell();
27     if (defaultShell != null) {
28       configuration.setInterpreterPath(defaultShell);
29     }
30     String projectPath = project.getBasePath();
31     if (projectPath != null) {
32       configuration.setScriptWorkingDirectory(projectPath);
33     }
34     return configuration;
35   }
36
37   public static ShConfigurationType getInstance() {
38     return ConfigurationTypeUtil.findConfigurationType(ShConfigurationType.class);
39   }
40
41   public static @Nullable String getDefaultShell() {
42     return EnvironmentUtil.getValue("SHELL");
43   }
44 }