Skip to content

Commit

Permalink
Merge pull request #31 from vitallium/rubymine-support
Browse files Browse the repository at this point in the history
Add support for RubyMine
  • Loading branch information
Fapiko authored Jul 3, 2023
2 parents 6426c31 + ffd315f commit be33b08
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 3 deletions.
3 changes: 2 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Currently supported Run Configurations:
- NodeJS
- Python
- PHP
- Ruby

Unfortunately, each run configuration type needs to be added manually. New run configuration support can be added
by request.
Expand Down
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ dependencies {
implementation(project(":better_direnv-products-shellscript"))
implementation(project(":better_direnv-products-python"))
implementation(project(":better_direnv-products-phpstorm"))
implementation(project(":better_direnv-products-rubymine"))
}

// Configure Gradle IntelliJ Plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pluginGroup=com.fapiko.jetbrains.plugins.better_direnv
pluginName=better_direnv
# SemVer format -> https://semver.org
pluginVersion=1.1.0
pluginVersion=1.2.0
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# for insight into build numbers and IntelliJ Platform versions.
# Issue filed in https://youtrack.jetbrains.com/issue/PY-56172/RunConfigurationpatchCommandLine-Not-Called-In-20222
Expand Down
18 changes: 18 additions & 0 deletions modules/products/rubymine/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
fun properties(key: String) = project.findProperty(key).toString()

plugins {
id("org.jetbrains.intellij")
}

// Configure Gradle IntelliJ Plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
intellij {
version.set(properties("platformVersion"))
type.set("IU")

// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file.
plugins.set(listOf("org.jetbrains.plugins.ruby:223.7571.4"))
}

dependencies {
implementation(project(":better_direnv-core"))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.fapiko.jetbrains.plugins.better_direnv.runconfigs;

import com.intellij.execution.configurations.GeneralCommandLine;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.openapi.options.SettingsEditor;
import com.fapiko.jetbrains.plugins.better_direnv.settings.DirenvSettings;
import com.fapiko.jetbrains.plugins.better_direnv.settings.ui.RunConfigSettingsEditor;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.ruby.ruby.run.configuration.AbstractRubyRunConfiguration;
import org.jetbrains.plugins.ruby.ruby.run.configuration.RubyRunConfigurationExtension;

import java.util.Map;

public class RubyMineRunConfigurationExtension extends RubyRunConfigurationExtension {

@Override
protected void readExternal(@NotNull AbstractRubyRunConfiguration runConfiguration, @NotNull Element element) {
RunConfigSettingsEditor.readExternal(runConfiguration, element);
}

@Override
protected void writeExternal(@NotNull AbstractRubyRunConfiguration runConfiguration, @NotNull Element element) {
RunConfigSettingsEditor.writeExternal(runConfiguration, element);
}

@Override
protected @Nullable <P extends AbstractRubyRunConfiguration<?>> SettingsEditor<P> createEditor(@NotNull P configuration) {
return new RunConfigSettingsEditor<>(configuration);
}

@Nullable
@Override
protected String getEditorTitle() {
return RunConfigSettingsEditor.getEditorTitle();
}

@Override
public boolean isApplicableFor(@NotNull AbstractRubyRunConfiguration<?> configuration) {
return true;
}

@Override
public boolean isEnabledFor(@NotNull AbstractRubyRunConfiguration<?> applicableConfiguration, @Nullable RunnerSettings runnerSettings) {
return true;
}

@Override
protected void patchCommandLine(@NotNull AbstractRubyRunConfiguration configuration, @Nullable RunnerSettings runnerSettings, @NotNull GeneralCommandLine cmdLine, @NotNull String runnerId) {
DirenvSettings direnvSettings = configuration.getCopyableUserData(RunConfigSettingsEditor.USER_DATA_KEY);

Map<String, String> newEnv = RunConfigSettingsEditor.collectEnv(direnvSettings, configuration.getProject().getBasePath());

for (Map.Entry<String, String> set : newEnv.entrySet()) {
cmdLine.withEnvironment(set.getKey(), set.getValue());
}
}
}
3 changes: 2 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ include(
"modules/products/nodejs",
"modules/products/shellscript",
"modules/products/python",
"modules/products/phpstorm"
"modules/products/phpstorm",
"modules/products/rubymine"
)

rootProject.children.forEach {
Expand Down
7 changes: 7 additions & 0 deletions src/main/resources/META-INF/direnv-rubymine.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<idea-plugin>
<extensions defaultExtensionNs="org.jetbrains.plugins.ruby">
<runConfigurationExtension
implementation="com.fapiko.jetbrains.plugins.better_direnv.runconfigs.RubyMineRunConfigurationExtension"
id="direnvRubyMineRunConfig"/>
</extensions>
</idea-plugin>
1 change: 1 addition & 0 deletions src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
<depends optional="true" config-file="direnv-javascript.xml">JavaScript</depends>
<depends optional="true" config-file="direnv-python.xml">com.intellij.modules.python</depends>
<depends optional="true" config-file="direnv-phpstorm.xml">com.jetbrains.php</depends>
<depends optional="true" config-file="direnv-rubymine.xml">org.jetbrains.plugins.ruby</depends>
</idea-plugin>

0 comments on commit be33b08

Please sign in to comment.