Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sandbox/bar/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"private": true,
"packageManager": "[email protected]",
"devDependencies": {
"@biomejs/biome": "2.0.0-beta.1"
"@biomejs/biome": "2.0.0-beta.3"
},
"scripts": {
"check": "biome check"
Expand Down
2 changes: 1 addition & 1 deletion sandbox/foo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"private": true,
"packageManager": "[email protected]",
"devDependencies": {
"@biomejs/biome": "2.0.0-beta.1"
"@biomejs/biome": "2.0.0-beta.3"
},
"scripts": {
"check": "biome check"
Expand Down
11 changes: 11 additions & 0 deletions sandbox/foo/src/subdir/biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"linter": {
"rules": {
"recommended": true,
"style": {
"useConst": "error"
}
}
}
}
3 changes: 3 additions & 0 deletions sandbox/foo/src/subdir/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
let a = 1;
let b = 2;
let foo = a == b;
8 changes: 8 additions & 0 deletions sandbox/food/biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"linter": {
"rules": {
"recommended": true
}
}
}
11 changes: 11 additions & 0 deletions sandbox/food/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "@biome-intellij-sandbox/foo",
"private": true,
"packageManager": "[email protected]",
"devDependencies": {
"@biomejs/biome": "2.0.0-beta.1"
},
"scripts": {
"check": "biome check"
}
}
3 changes: 3 additions & 0 deletions sandbox/food/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
let a = 1;
let b = 2;
let foo = a == b;
98 changes: 96 additions & 2 deletions sandbox/pnpm-lock.yaml

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

1 change: 1 addition & 0 deletions sandbox/pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
packages:
- foo
- bar
- food
14 changes: 14 additions & 0 deletions src/main/kotlin/com/github/biomejs/intellijbiome/BiomeConfig.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.github.biomejs.intellijbiome

import com.intellij.openapi.vfs.VirtualFile

object BiomeConfig {
const val baseName = "biome"
val validExtensions = listOf("json", "jsonc")

val validFileNames: Set<String> = validExtensions.map { "$baseName.$it" }.toSet()

fun isBiomeConfigFile(file: VirtualFile?): Boolean {
return file != null && validFileNames.contains(file.name)
}
}
47 changes: 12 additions & 35 deletions src/main/kotlin/com/github/biomejs/intellijbiome/BiomePackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,12 @@ class BiomePackage(private val project: Project) {
private val packageName = "@biomejs/biome"
private val packageDescription = NodePackageDescriptor(packageName)

fun getPackage(virtualFile: VirtualFile?): NodePackage? {
if (virtualFile != null) {
val available = packageDescription.listAvailable(
project,
NodeJsInterpreterManager.getInstance(project).interpreter,
virtualFile,
false,
true
)
if (available.isNotEmpty()) {
return available[0]
}
}

var pkg = packageDescription.findUnambiguousDependencyPackage(project) ?: NodePackage.findDefaultPackage(
project,
packageName,
NodeJsInterpreterManager.getInstance(project).interpreter
)

return pkg
fun getPackage(contextFileOrDirectory: VirtualFile?): NodePackage? {
val interpreter = NodeJsInterpreterManager.getInstance(project).interpreter
val listAvailable = packageDescription.listAvailable(project, interpreter, contextFileOrDirectory, false, true)
return listAvailable.firstOrNull()
?: packageDescription.findUnambiguousDependencyPackage(project)
?: NodePackage.findDefaultPackage(project, packageName, interpreter)
}

fun configPath(): String? {
Expand All @@ -61,24 +46,20 @@ class BiomePackage(private val project: Project) {
}
}

fun binaryPath(
configPath: String?,
virtualFile: VirtualFile,
showVersion: Boolean,
): String? {
fun binaryPath(virtualFile: VirtualFile?): String? {
val settings = BiomeSettings.getInstance(project)
val configurationMode = settings.configurationMode
return when (configurationMode) {
ConfigurationMode.DISABLED -> null // don't try to find the executable path if the configuration file does not exist.
// This will prevent start LSP and formatting in case if biome is not used in the project.
ConfigurationMode.AUTOMATIC -> if (configPath != null || showVersion) findBiomeExecutable(virtualFile) else null // if configuration mode is manual, return the executable path if it is not empty string.
ConfigurationMode.AUTOMATIC -> findBiomeExecutable(virtualFile) // if configuration mode is manual, return the executable path if it is not empty string.
// Otherwise, try to find the executable path.
ConfigurationMode.MANUAL -> settings.executablePath
}
}

private fun findBiomeExecutable(virtualFile: VirtualFile?): String? {
val path = getPackage(virtualFile)?.getAbsolutePackagePathToRequire(project)
private fun findBiomeExecutable(contextFileOrDirectory: VirtualFile?): String? {
val path = getPackage(contextFileOrDirectory)?.getAbsolutePackagePathToRequire(project)
if (path != null) {
return Paths.get(path, "bin/biome").toString()
}
Expand All @@ -92,12 +73,8 @@ class BiomePackage(private val project: Project) {
return null
}

val processHandler =
BiomeTargetRunBuilder(project)
.getBuilder(binaryPath)
.addParameters(listOf(ProcessCommandParameter.Value("--version")))
.build()
.startProcess()
val processHandler = BiomeTargetRunBuilder(project).getBuilder(binaryPath)
.addParameters(listOf(ProcessCommandParameter.Value("--version"))).build().startProcess()

return runCatching {
val result = runProcessFuture(processHandler).await()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package com.github.biomejs.intellijbiome.actions
import com.github.biomejs.intellijbiome.BiomeBundle
import com.github.biomejs.intellijbiome.BiomeIcons
import com.github.biomejs.intellijbiome.services.BiomeServerService
import com.github.biomejs.intellijbiome.services.BiomeServerService.Feature
import com.github.biomejs.intellijbiome.settings.BiomeConfigurable
import com.github.biomejs.intellijbiome.settings.BiomeSettings
import com.github.biomejs.intellijbiome.settings.Feature
import com.intellij.notification.NotificationAction
import com.intellij.notification.NotificationGroupManager
import com.intellij.notification.NotificationType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.github.biomejs.intellijbiome.actions
import com.github.biomejs.intellijbiome.BiomeBundle
import com.github.biomejs.intellijbiome.BiomeIcons
import com.github.biomejs.intellijbiome.services.BiomeServerService
import com.github.biomejs.intellijbiome.services.BiomeServerService.Feature
import com.github.biomejs.intellijbiome.settings.Feature
import com.github.biomejs.intellijbiome.settings.BiomeConfigurable
import com.github.biomejs.intellijbiome.settings.BiomeSettings
import com.intellij.notification.NotificationAction
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.intellij.execution.process.ProcessEvent
import com.intellij.execution.process.ProcessOutput
import java.util.concurrent.CompletableFuture

class ProcessResult( val processOutput: ProcessOutput)
class ProcessResult(val processOutput: ProcessOutput)


fun runProcessFuture(handler: OSProcessHandler): CompletableFuture<ProcessResult> {
Expand Down
Loading