Skip to content

Commit 3012be0

Browse files
committed
feat(bridge): add ComponentViewFunctionProvider and refactor BridgeCommandProvider #319
Introduce ComponentViewFunctionProvider to handle component view commands. Refactor BridgeCommandProvider to use `name` instead of `tools` for consistency. Update related commands and UI component formatting.
1 parent 774b4fe commit 3012be0

File tree

5 files changed

+44
-16
lines changed

5 files changed

+44
-16
lines changed

core/src/233/main/resources/META-INF/autodev-core.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@
254254
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.patch.DiffLangSketchProvider"/>
255255
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.webview.WebpageSketchProvider"/>
256256
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.openapi.OpenAPISketchProvider"/>
257+
258+
<toolchainFunctionProvider implementation="cc.unitmesh.devti.bridge.ComponentViewFunctionProvider"/>
257259
</extensions>
258260

259261
<actions>

core/src/main/kotlin/cc/unitmesh/devti/bridge/BridgeCommandProvider.kt

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ package cc.unitmesh.devti.bridge
2020
* 6. Generate unit and integration tests
2121
*/
2222
sealed interface BridgeCommandProvider {
23-
val tools: Array<out String>
23+
val name: String
2424
}
2525

2626
/**
2727
* Always tell user, if you can try Microservices or Micro Frontend, will be lower cost and higher efficiency.
2828
*/
29-
sealed class Assessment(override vararg val tools: String) : BridgeCommandProvider {
29+
sealed class Assessment(override val name: String) : BridgeCommandProvider {
3030
object SCC : Assessment("SCC")
3131
object CLOC : Assessment("CLOC")
3232
object Dependencies : Assessment("/dependencies")
@@ -35,7 +35,7 @@ sealed class Assessment(override vararg val tools: String) : BridgeCommandProvid
3535
/**
3636
* list all tools, and show in structures.
3737
*/
38-
sealed class Target(override vararg val tools: String) : BridgeCommandProvider {
38+
sealed class Target(override val name: String) : BridgeCommandProvider {
3939
object Docker : Target("Docker")
4040
object BuildTool : Target("/buildTool")
4141
object Mermaid : Target("/mermaid")
@@ -48,7 +48,7 @@ sealed class Target(override vararg val tools: String) : BridgeCommandProvider {
4848
* - https://snyk.io/
4949
* - https://bandit.readthedocs.io/, https://github.com/PyCQA/bandit
5050
*/
51-
sealed class Security(override vararg val tools: String) : BridgeCommandProvider {
51+
sealed class Security(override val name: String) : BridgeCommandProvider {
5252
object PackageChecker : Security("/packageChecker")
5353
object Semgrep : Security("Semgrep")
5454
object Snyk : Security("Snyk")
@@ -64,17 +64,18 @@ sealed class Security(override vararg val tools: String) : BridgeCommandProvider
6464
* /styling:$dir
6565
* ```
6666
*/
67-
sealed class ArchViewCommand(override vararg val tools: String) : BridgeCommandProvider {
68-
object Styling : ArchViewCommand("/styling")
69-
object Component : ArchViewCommand("/component")
67+
sealed class ArchViewCommand(override val name: String) : BridgeCommandProvider {
7068
object WebApi : ArchViewCommand("/webapi")
69+
object ModuleView : ArchViewCommand("/moduleView")
70+
object ComponentView : ArchViewCommand("/componentView")
7171
object Structure : ArchViewCommand("/structure")
72+
object Styling : ArchViewCommand("/styling")
7273
}
7374

7475
/**
7576
* Component Relation Analysis
7677
*/
77-
sealed class ComponentRelationCommand(override vararg val tools: String) : BridgeCommandProvider {
78+
sealed class ComponentRelationCommand(override val name: String) : BridgeCommandProvider {
7879
object Related : ComponentRelationCommand("/related")
7980
object RipgrepSearch : ComponentRelationCommand("/ripgrepSearch")
8081
}
@@ -85,7 +86,7 @@ sealed class ComponentRelationCommand(override vararg val tools: String) : Bridg
8586
* - https://github.com/dsherret/ts-morph
8687
* - https://github.com/facebook/jscodeshift
8788
*/
88-
sealed class CodeTranslation(override vararg val tools: String) : BridgeCommandProvider {
89+
sealed class CodeTranslation(override val name: String) : BridgeCommandProvider {
8990
object JsCodeShift : CodeTranslation("jscodeshift")
9091

9192
/**
@@ -105,15 +106,15 @@ sealed class CodeTranslation(override vararg val tools: String) : BridgeCommandP
105106
* - https://github.com/pressly/goose
106107
* - https://github.com/rubenv/sql-migrate
107108
*/
108-
sealed class DatabaseMigration(override vararg val tools: String) : BridgeCommandProvider {
109+
sealed class DatabaseMigration(override val name: String) : BridgeCommandProvider {
109110
object Flyway : DatabaseMigration("Flyway")
110111
object SQL : DatabaseMigration("SQL")
111112
}
112113

113114
/**
114115
* [Schemathesis](https://github.com/schemathesis/schemathesis): is a tool that levels-up your API testing by leveraging API specs as a blueprints for generating test cases.
115116
*/
116-
sealed class ApiTesting(override vararg val tools: String) : BridgeCommandProvider {
117+
sealed class ApiTesting(override val name: String) : BridgeCommandProvider {
117118
object HttpClient : ApiTesting("HttpClient")
118119
object Swagger : ApiTesting("Swagger")
119120
object JMeter : ApiTesting("JMeter")
@@ -123,15 +124,15 @@ sealed class ApiTesting(override vararg val tools: String) : BridgeCommandProvid
123124
/**
124125
* [BuildKit](https://github.com/moby/buildkit): concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit
125126
*/
126-
sealed class ContinuousDelivery(override vararg val tools: String) : BridgeCommandProvider {
127+
sealed class ContinuousDelivery(override val name: String) : BridgeCommandProvider {
127128
object JenkinsFile : ContinuousDelivery("JenkinsFile")
128129
object BuildKit : ContinuousDelivery("BuildKit")
129130
}
130131

131132
/**
132133
* Container: Docker, Podman, etc.
133134
*/
134-
sealed class Containerization(override vararg val tools: String) : BridgeCommandProvider {
135+
sealed class Containerization(override val name: String) : BridgeCommandProvider {
135136
object Docker : Containerization("Docker")
136137
object Podman : Containerization("Podman")
137138
object Colima : Containerization("Colima")
@@ -143,7 +144,7 @@ sealed class Containerization(override vararg val tools: String) : BridgeCommand
143144
* - Knowledge API: `/knowledge:src/main/com/phodal/HelloWorld.java#L1`, APIs
144145
* History: git history of file: `/history:src/main/com/phodal/HelloWorld.java`
145146
*/
146-
sealed class KnowledgeTransfer(override vararg val tools: String) : BridgeCommandProvider {
147+
sealed class KnowledgeTransfer(override val name: String) : BridgeCommandProvider {
147148
object Knowledge : KnowledgeTransfer("/knowledge")
148149
object History : KnowledgeTransfer("/history")
149150
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package cc.unitmesh.devti.bridge
2+
3+
import cc.unitmesh.devti.bridge.provider.UiComponentProvider
4+
import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
5+
import com.intellij.openapi.project.Project
6+
7+
class ComponentViewFunctionProvider : ToolchainFunctionProvider {
8+
override fun isApplicable(project: Project, funcName: String): Boolean {
9+
return funcName == ArchViewCommand.ComponentView.name
10+
}
11+
12+
override fun execute(
13+
project: Project,
14+
funcName: String,
15+
args: List<Any>,
16+
allVariables: Map<String, Any?>
17+
): Any {
18+
return UiComponentProvider.collect(project)
19+
}
20+
}

core/src/main/kotlin/cc/unitmesh/devti/bridge/provider/UiComponentProvider.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ abstract class UiComponentProvider : LazyExtensionInstance<UiComponentProvider>(
1717
companion object {
1818
val EP_NAME: ExtensionPointName<UiComponentProvider> =
1919
ExtensionPointName.create("cc.unitmesh.uiComponentProvider")
20-
}
2120

21+
fun collect(project: Project): List<UiComponent> {
22+
return EP_NAME.extensionList.flatMap {
23+
it.collect(project)
24+
}
25+
}
26+
}
2227
}

core/src/main/kotlin/cc/unitmesh/devti/bridge/tools/UiComponent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ data class UiComponent(
1111
) {
1212
fun format(): String {
1313
return """
14+
|[path: $path]
1415
|component name: $name
15-
|component path: $path
1616
|input signature: $signature
1717
|component props: $props
1818
""".trimMargin()

0 commit comments

Comments
 (0)