Skip to content

Commit 825f891

Browse files
committed
feat: add inline documentation and examples to robot.toml.json
Users now get rich documentation directly in their editor when editing robot.toml configurations through JSON schema integration. The schema works seamlessly with the Even Better TOML VS Code extension (https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml), which is powered by Taplo. Enhancements to robot.toml.json: - Comprehensive inline documentation (markdownDescription) for every field - TOML code examples extracted from configuration docs - Direct links to RobotCode documentation via Taplo integration - Full compatibility with Even Better TOML and other Taplo-based editors Improvements to schema generator: - Complete type hints for all inner functions - Detailed docstrings for better code clarity - More robust TOML code block extraction regex
1 parent 6a3d5a3 commit 825f891

10 files changed

Lines changed: 10189 additions & 5953 deletions

File tree

docs/public/schemas/robot.toml.json

Lines changed: 9757 additions & 0 deletions
Large diffs are not rendered by default.

etc/robot.toml.json

Lines changed: 0 additions & 5876 deletions
This file was deleted.

hatch.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies = [
2727
"GitPython",
2828
"semantic-version",
2929
"robotremoteserver",
30-
"apischema",
30+
"mashumaro",
3131
]
3232
dependency-groups = ["all"]
3333
workspace.members = [

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,11 +341,11 @@
341341
"tomlValidation": [
342342
{
343343
"fileMatch": "robot.toml",
344-
"url": "https://raw.githubusercontent.com/robotcodedev/robotcode/main/etc/robot.toml.json"
344+
"url": "https://www.robotcode.io/schemas/robot.toml.json"
345345
},
346346
{
347347
"fileMatch": ".robot.toml",
348-
"url": "https://raw.githubusercontent.com/robotcodedev/robotcode/main/etc/robot.toml.json"
348+
"url": "https://www.robotcode.io/schemas/robot.toml.json"
349349
}
350350
],
351351
"configurationDefaults": {

packages/analyze/src/robotcode/analyze/config.py

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ class ModifiersConfig(BaseOptions):
3737
[tool.robotcode-analyze.modifiers]
3838
extend_ignore = ["VariableNotFound", "multiple-keywords"]
3939
```
40-
"""
40+
""",
41+
alias="extend-ignore",
4142
)
4243
error: Optional[List[str]] = field(
4344
description="""
@@ -61,7 +62,8 @@ class ModifiersConfig(BaseOptions):
6162
[tool.robotcode-analyze.modifiers]
6263
extend_error = ["VariableNotFound", "multiple-keywords"]
6364
```
64-
"""
65+
""",
66+
alias="extend-error",
6567
)
6668
warning: Optional[List[str]] = field(
6769
description="""
@@ -85,7 +87,8 @@ class ModifiersConfig(BaseOptions):
8587
[tool.robotcode-analyze.modifiers]
8688
extend_warning = ["VariableNotFound", "multiple-keywords"]
8789
```
88-
"""
90+
""",
91+
alias="extend-warning",
8992
)
9093
information: Optional[List[str]] = field(
9194
description="""
@@ -109,7 +112,8 @@ class ModifiersConfig(BaseOptions):
109112
[tool.robotcode-analyze.modifiers]
110113
extend_information = ["VariableNotFound", "multiple-keywords"]
111114
```
112-
"""
115+
""",
116+
alias="extend-information",
113117
)
114118
hint: Optional[List[str]] = field(
115119
description="""
@@ -133,15 +137,16 @@ class ModifiersConfig(BaseOptions):
133137
[tool.robotcode-analyze.modifiers]
134138
extend_hint = ["VariableNotFound", "multiple-keywords"]
135139
```
136-
"""
140+
""",
141+
alias="extend-hint",
137142
)
138143

139144

140145
@dataclass
141146
class CacheConfig(BaseOptions):
142147
"""Cache configuration."""
143148

144-
cache_dir: Optional[str] = field(description="Path to the cache directory.")
149+
cache_dir: Optional[str] = field(description="Path to the cache directory.", alias="cache-dir")
145150

146151
ignored_libraries: Optional[List[str]] = field(
147152
description="""\
@@ -156,8 +161,12 @@ class CacheConfig(BaseOptions):
156161
For robot framework internal libraries, you have to specify the full module name like
157162
`robot.libraries.Remote`.
158163
""",
164+
alias="ignored-libraries",
165+
)
166+
extend_ignored_libraries: Optional[List[str]] = field(
167+
description="Extend the ignored libraries setting.",
168+
alias="extend-ignored-libraries",
159169
)
160-
extend_ignored_libraries: Optional[List[str]] = field(description="Extend the ignored libraries setting.")
161170

162171
ignored_variables: Optional[List[str]] = field(
163172
description="""\
@@ -171,8 +180,12 @@ class CacheConfig(BaseOptions):
171180
- `MyVariables`
172181
- `myvars.subpackage.subpackage`
173182
""",
183+
alias="ignored-variables",
184+
)
185+
extend_ignored_variables: Optional[List[str]] = field(
186+
description="Extend the ignored variables setting.",
187+
alias="extend-ignored-variables",
174188
)
175-
extend_ignored_variables: Optional[List[str]] = field(description="Extend the ignored variables setting.")
176189

177190
ignore_arguments_for_library: Optional[List[str]] = field(
178191
description="""\
@@ -190,10 +203,12 @@ class CacheConfig(BaseOptions):
190203
191204
_Ensure your library functions correctly without arguments e.g. by defining default
192205
values for all arguments._
193-
"""
206+
""",
207+
alias="ignore-arguments-for-library",
194208
)
195209
extend_ignore_arguments_for_library: Optional[List[str]] = field(
196-
description="Extend the ignore arguments for library settings."
210+
description="Extend the ignore arguments for library settings.",
211+
alias="extend-ignore-arguments-for-library",
197212
)
198213

199214
cache_namespaces: Optional[bool] = field(
@@ -209,6 +224,7 @@ class CacheConfig(BaseOptions):
209224
cache_namespaces = false
210225
```
211226
""",
227+
alias="cache-namespaces",
212228
)
213229

214230

@@ -258,8 +274,12 @@ class CodeConfig(BaseOptions):
258274
exit_code_mask = ["error", "warn"]
259275
```
260276
""",
277+
alias="exit-code-mask",
278+
)
279+
extend_exit_code_mask: Optional[ExitCodeMaskList] = field(
280+
description="Extend the exit code mask setting.",
281+
alias="extend-exit-code-mask",
261282
)
262-
extend_exit_code_mask: Optional[ExitCodeMaskList] = field(description="Extend the exit code mask setting.")
263283

264284
collect_unused: Optional[bool] = field(
265285
description="""\
@@ -273,6 +293,7 @@ class CodeConfig(BaseOptions):
273293
collect_unused = true
274294
```
275295
""",
296+
alias="collect-unused",
276297
)
277298

278299

@@ -292,7 +313,10 @@ class AnalyzeConfig(BaseOptions):
292313
```
293314
"""
294315
)
295-
extend_code: Optional[CodeConfig] = field(description="Extend the code analysis configuration.")
316+
extend_code: Optional[CodeConfig] = field(
317+
description="Extend the code analysis configuration.",
318+
alias="extend-code",
319+
)
296320

297321
modifiers: Optional[ModifiersConfig] = field(
298322
description="""\
@@ -320,16 +344,24 @@ class AnalyzeConfig(BaseOptions):
320344
extend-hint = ["KeywordNotFound"]
321345
extend-information = ["MultipleKeywords"]
322346
```
323-
"""
347+
""",
348+
alias="extend-modifiers",
324349
)
325350

326351
cache: Optional[CacheConfig] = field(description="Defines the cache configuration.")
327-
extend_cache: Optional[CacheConfig] = field(description="Extend the cache configuration.")
352+
extend_cache: Optional[CacheConfig] = field(
353+
description="Extend the cache configuration.",
354+
alias="extend-cache",
355+
)
328356

329357
exclude_patterns: Optional[List[str]] = field(
330358
description="Specifies glob patterns for excluding files and folders from analysing by the language server.",
359+
alias="exclude-patterns",
360+
)
361+
extend_exclude_patterns: Optional[List[str]] = field(
362+
description="Extend the exclude patterns.",
363+
alias="extend-exclude-patterns",
331364
)
332-
extend_exclude_patterns: Optional[List[str]] = field(description="Extend the exclude patterns.")
333365

334366
global_library_search_order: Optional[List[str]] = field(
335367
description="""\
@@ -341,9 +373,11 @@ class AnalyzeConfig(BaseOptions):
341373
so you can define a global order here. Just make sure to call the `Set Library Search Order`
342374
keyword somewhere in your robot file or internally in your library.
343375
""",
376+
alias="global-library-search-order",
344377
)
345378
extend_global_library_search_order: Optional[List[str]] = field(
346-
description="Extend the global library search order setting."
379+
description="Extend the global library search order setting.",
380+
alias="extend-global-library-search-order",
347381
)
348382

349383
semantic_model: Optional[bool] = field(
@@ -365,6 +399,7 @@ class AnalyzeConfig(BaseOptions):
365399
semantic-model = true
366400
```
367401
""",
402+
alias="semantic-model",
368403
)
369404

370405
load_library_timeout: Optional[int] = field(
@@ -396,6 +431,7 @@ class AnalyzeConfig(BaseOptions):
396431
# load_library_timeout = 15
397432
```
398433
""",
434+
alias="load-library-timeout",
399435
)
400436

401437
def to_workspace_analysis_config(self) -> WorkspaceAnalysisConfig:

0 commit comments

Comments
 (0)