plating 0.0.0.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. plating-0.0.0.dev0/LICENSE +201 -0
  2. plating-0.0.0.dev0/PKG-INFO +223 -0
  3. plating-0.0.0.dev0/README.md +190 -0
  4. plating-0.0.0.dev0/VERSION +1 -0
  5. plating-0.0.0.dev0/pyproject.toml +115 -0
  6. plating-0.0.0.dev0/setup.cfg +4 -0
  7. plating-0.0.0.dev0/src/plating/__init__.py +27 -0
  8. plating-0.0.0.dev0/src/plating/_version.py +53 -0
  9. plating-0.0.0.dev0/src/plating/adorner/__init__.py +16 -0
  10. plating-0.0.0.dev0/src/plating/adorner/adorner.py +115 -0
  11. plating-0.0.0.dev0/src/plating/adorner/api.py +24 -0
  12. plating-0.0.0.dev0/src/plating/adorner/finder.py +22 -0
  13. plating-0.0.0.dev0/src/plating/adorner/templates.py +199 -0
  14. plating-0.0.0.dev0/src/plating/cli.py +317 -0
  15. plating-0.0.0.dev0/src/plating/config.py +106 -0
  16. plating-0.0.0.dev0/src/plating/error_handling.py +125 -0
  17. plating-0.0.0.dev0/src/plating/errors.py +142 -0
  18. plating-0.0.0.dev0/src/plating/generator.py +192 -0
  19. plating-0.0.0.dev0/src/plating/linting.py +235 -0
  20. plating-0.0.0.dev0/src/plating/models.py +75 -0
  21. plating-0.0.0.dev0/src/plating/plater.py +487 -0
  22. plating-0.0.0.dev0/src/plating/plating.py +207 -0
  23. plating-0.0.0.dev0/src/plating/schema.py +502 -0
  24. plating-0.0.0.dev0/src/plating/template_filters.py +117 -0
  25. plating-0.0.0.dev0/src/plating/template_functions.py +216 -0
  26. plating-0.0.0.dev0/src/plating/templates.py +232 -0
  27. plating-0.0.0.dev0/src/plating/test_runner.py +1005 -0
  28. plating-0.0.0.dev0/src/plating/types.py +71 -0
  29. plating-0.0.0.dev0/src/plating.egg-info/PKG-INFO +223 -0
  30. plating-0.0.0.dev0/src/plating.egg-info/SOURCES.txt +41 -0
  31. plating-0.0.0.dev0/src/plating.egg-info/dependency_links.txt +1 -0
  32. plating-0.0.0.dev0/src/plating.egg-info/entry_points.txt +2 -0
  33. plating-0.0.0.dev0/src/plating.egg-info/requires.txt +13 -0
  34. plating-0.0.0.dev0/src/plating.egg-info/top_level.txt +1 -0
  35. plating-0.0.0.dev0/tests/test_adorner.py +357 -0
  36. plating-0.0.0.dev0/tests/test_cli.py +71 -0
  37. plating-0.0.0.dev0/tests/test_end_to_end.py +438 -0
  38. plating-0.0.0.dev0/tests/test_integration.py +363 -0
  39. plating-0.0.0.dev0/tests/test_plater.py +701 -0
  40. plating-0.0.0.dev0/tests/test_plating_bundle.py +293 -0
  41. plating-0.0.0.dev0/tests/test_plating_discovery.py +267 -0
  42. plating-0.0.0.dev0/tests/test_schema.py +489 -0
  43. plating-0.0.0.dev0/tests/test_stir_migration.py +676 -0
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2025 provide.io llc
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,223 @@
1
+ Metadata-Version: 2.4
2
+ Name: plating
3
+ Version: 0.0.0.dev0
4
+ Summary: Documentation generation system for Terraform/OpenTofu providers
5
+ Author-email: Tim Perkins <code@tim.life>
6
+ Maintainer-email: "provide.io" <code@provide.io>
7
+ License: Apache-2.0
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Typing :: Typed
17
+ Requires-Python: >=3.11
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: jinja2>=3.1.6
21
+ Requires-Dist: rich>=13.0.0
22
+ Requires-Dist: pyvider>=0.0.0.post0
23
+ Requires-Dist: pyvider-hcl>=0.0.113
24
+ Requires-Dist: pyvider-cty>=0.0.111
25
+ Requires-Dist: provide-foundation>=0.0.0.dev3
26
+ Provides-Extra: dev
27
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
28
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
30
+ Requires-Dist: mypy>=1.10.0; extra == "dev"
31
+ Requires-Dist: ruff>=0.2.0; extra == "dev"
32
+ Dynamic: license-file
33
+
34
+ # ๐Ÿฝ๏ธ Plating
35
+
36
+ > A sophisticated documentation generation system for Terraform/OpenTofu providers
37
+
38
+ Plating is a powerful documentation system that brings culinary elegance to technical documentation. Just as a chef carefully plates and garnishes a dish, Plating helps you present your Terraform provider documentation beautifully.
39
+
40
+ ## โœจ Features
41
+
42
+ - **๐ŸŽฏ Automatic Documentation Generation** - Generate comprehensive docs from your provider code
43
+ - **๐Ÿ‘— Smart Component Dressing** - Automatically create documentation templates for undocumented components
44
+ - **๐Ÿฝ๏ธ Beautiful Plating** - Render documentation with examples, schemas, and rich formatting
45
+ - **๐Ÿ” Component Discovery** - Automatically find and document resources, data sources, and functions
46
+ - **๐Ÿ“ Jinja2 Templates** - Flexible templating with custom functions and filters
47
+ - **๐Ÿ”„ Schema Integration** - Extract and format provider schemas automatically
48
+
49
+ ## ๐Ÿ“ฆ Prerequisites
50
+
51
+ > **Important:** This project uses `uv` for Python environment and package management.
52
+
53
+ ### Install UV
54
+
55
+ Visit [UV Documentation](https://github.com/astral-sh/uv) for more information.
56
+
57
+ ```bash
58
+ # On macOS and Linux.
59
+ curl -LsSf https://astral.sh/uv/install.sh | sh
60
+
61
+ # On Windows.
62
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
63
+
64
+ # Using pipx (if you prefer)
65
+ pipx install uv
66
+
67
+ # Update UV to latest version
68
+ uv self update
69
+ ```
70
+
71
+ ## ๐Ÿš€ Getting Started
72
+
73
+ ### Development Setup
74
+
75
+ ```bash
76
+ # Clone the repository
77
+ git clone https://github.com/provide-io/plating.git
78
+ cd plating
79
+
80
+ # Create virtual environment
81
+ uv venv
82
+
83
+ # Activate virtual environment
84
+ source .venv/bin/activate # On Linux/macOS
85
+ # or
86
+ .venv\Scripts\activate # On Windows
87
+
88
+ # Install dependencies
89
+ uv sync
90
+ ```
91
+
92
+ ### Installing as a Package
93
+
94
+ ```bash
95
+ # Install from PyPI
96
+ uv add plating
97
+
98
+ # Or install from source
99
+ uv add git+https://github.com/provide-io/plating.git
100
+ ```
101
+
102
+ ## ๐Ÿ“š Usage Examples
103
+
104
+ ### 1. Dress Your Components
105
+
106
+ First, create `.plating` bundles for your undocumented components:
107
+
108
+ ```bash
109
+ # Dress all missing components
110
+ plating dress
111
+
112
+ # Dress only resources
113
+ plating dress --component-type resource
114
+ ```
115
+
116
+ ### 2. Customize Templates
117
+
118
+ Edit the generated templates in `.plating/docs/`:
119
+
120
+ ```markdown
121
+ ---
122
+ page_title: "Resource: my_resource"
123
+ ---
124
+
125
+ # my_resource
126
+
127
+ {{ "{{ example('basic') }}" }}
128
+
129
+ ## Schema
130
+
131
+ {{ "{{ schema() }}" }}
132
+ ```
133
+
134
+ ### 3. Generate Documentation
135
+
136
+ Render your documentation:
137
+
138
+ ```bash
139
+ # Generate docs in ./docs directory
140
+ plating plate
141
+
142
+ # Custom output directory
143
+ plating plate --output-dir ./documentation
144
+ ```
145
+
146
+ ## ๐Ÿ“‚ Bundle Structure
147
+
148
+ Each component has a `.plating` bundle:
149
+
150
+ ```
151
+ my_resource.plating/
152
+ โ”œโ”€โ”€ docs/
153
+ โ”‚ โ”œโ”€โ”€ my_resource.tmpl.md # Main template
154
+ โ”‚ โ””โ”€โ”€ _partial.md # Reusable partials
155
+ โ”œโ”€โ”€ examples/
156
+ โ”‚ โ”œโ”€โ”€ basic.tf # Example configurations
157
+ โ”‚ โ””โ”€โ”€ advanced.tf
158
+ โ””โ”€โ”€ fixtures/ # Test data
159
+ โ””โ”€โ”€ test_config.json
160
+ ```
161
+
162
+ ## ๐ŸŽจ Template Functions
163
+
164
+ Plating provides powerful template functions:
165
+
166
+ - `{{ "{{ example('name') }}" }}` - Include an example file
167
+ - `{{ "{{ schema() }}" }}` - Render component schema
168
+ - `{{ "{{ partial('name') }}" }}` - Include a partial template
169
+ - `{{ "{{ anchor('text') }}" }}` - Create header anchors
170
+
171
+ ## ๐Ÿงช Testing
172
+
173
+ Test your examples with the built-in test runner:
174
+
175
+ ```bash
176
+ # Test all examples
177
+ plating test
178
+
179
+ # Test specific component types
180
+ plating test --component-type resource
181
+ ```
182
+
183
+ ## ๐Ÿ”ง Configuration
184
+
185
+ Configure Plating in your `pyproject.toml`:
186
+
187
+ ```toml
188
+ [tool.plating]
189
+ provider_name = "my_provider"
190
+ output_dir = "docs"
191
+ component_types = ["resource", "data_source", "function"]
192
+ ```
193
+
194
+ ## ๐Ÿ—๏ธ Architecture
195
+
196
+ Plating follows a modular architecture:
197
+
198
+ - **PlatingBundle** - Represents documentation bundles
199
+ - **PlatingPlater** - Renders documentation
200
+ - **PlatingDresser** - Creates documentation templates
201
+ - **PlatingDiscovery** - Finds components and bundles
202
+ - **SchemaProcessor** - Extracts provider schemas
203
+
204
+ ## ๐Ÿค Contributing
205
+
206
+ Contributions are welcome! Please feel free to submit a Pull Request.
207
+
208
+ ## ๐Ÿ“œ License
209
+
210
+ Apache 2.0
211
+
212
+ ## ๐Ÿ™ Acknowledgments
213
+
214
+ Built with โค๏ธ using:
215
+ - [attrs](https://www.attrs.org/) - Python classes without boilerplate
216
+ - [Jinja2](https://jinja.palletsprojects.com/) - Powerful templating
217
+ - [pyvider](https://github.com/provide-io/pyvider) - Terraform provider framework
218
+ - [click](https://click.palletsprojects.com/) - Command line interface
219
+ - [rich](https://rich.readthedocs.io/) - Beautiful terminal output
220
+
221
+ ---
222
+
223
+ *Plating - Making documentation as delightful as a well-plated dish* ๐Ÿฝ๏ธ
@@ -0,0 +1,190 @@
1
+ # ๐Ÿฝ๏ธ Plating
2
+
3
+ > A sophisticated documentation generation system for Terraform/OpenTofu providers
4
+
5
+ Plating is a powerful documentation system that brings culinary elegance to technical documentation. Just as a chef carefully plates and garnishes a dish, Plating helps you present your Terraform provider documentation beautifully.
6
+
7
+ ## โœจ Features
8
+
9
+ - **๐ŸŽฏ Automatic Documentation Generation** - Generate comprehensive docs from your provider code
10
+ - **๐Ÿ‘— Smart Component Dressing** - Automatically create documentation templates for undocumented components
11
+ - **๐Ÿฝ๏ธ Beautiful Plating** - Render documentation with examples, schemas, and rich formatting
12
+ - **๐Ÿ” Component Discovery** - Automatically find and document resources, data sources, and functions
13
+ - **๐Ÿ“ Jinja2 Templates** - Flexible templating with custom functions and filters
14
+ - **๐Ÿ”„ Schema Integration** - Extract and format provider schemas automatically
15
+
16
+ ## ๐Ÿ“ฆ Prerequisites
17
+
18
+ > **Important:** This project uses `uv` for Python environment and package management.
19
+
20
+ ### Install UV
21
+
22
+ Visit [UV Documentation](https://github.com/astral-sh/uv) for more information.
23
+
24
+ ```bash
25
+ # On macOS and Linux.
26
+ curl -LsSf https://astral.sh/uv/install.sh | sh
27
+
28
+ # On Windows.
29
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
30
+
31
+ # Using pipx (if you prefer)
32
+ pipx install uv
33
+
34
+ # Update UV to latest version
35
+ uv self update
36
+ ```
37
+
38
+ ## ๐Ÿš€ Getting Started
39
+
40
+ ### Development Setup
41
+
42
+ ```bash
43
+ # Clone the repository
44
+ git clone https://github.com/provide-io/plating.git
45
+ cd plating
46
+
47
+ # Create virtual environment
48
+ uv venv
49
+
50
+ # Activate virtual environment
51
+ source .venv/bin/activate # On Linux/macOS
52
+ # or
53
+ .venv\Scripts\activate # On Windows
54
+
55
+ # Install dependencies
56
+ uv sync
57
+ ```
58
+
59
+ ### Installing as a Package
60
+
61
+ ```bash
62
+ # Install from PyPI
63
+ uv add plating
64
+
65
+ # Or install from source
66
+ uv add git+https://github.com/provide-io/plating.git
67
+ ```
68
+
69
+ ## ๐Ÿ“š Usage Examples
70
+
71
+ ### 1. Dress Your Components
72
+
73
+ First, create `.plating` bundles for your undocumented components:
74
+
75
+ ```bash
76
+ # Dress all missing components
77
+ plating dress
78
+
79
+ # Dress only resources
80
+ plating dress --component-type resource
81
+ ```
82
+
83
+ ### 2. Customize Templates
84
+
85
+ Edit the generated templates in `.plating/docs/`:
86
+
87
+ ```markdown
88
+ ---
89
+ page_title: "Resource: my_resource"
90
+ ---
91
+
92
+ # my_resource
93
+
94
+ {{ "{{ example('basic') }}" }}
95
+
96
+ ## Schema
97
+
98
+ {{ "{{ schema() }}" }}
99
+ ```
100
+
101
+ ### 3. Generate Documentation
102
+
103
+ Render your documentation:
104
+
105
+ ```bash
106
+ # Generate docs in ./docs directory
107
+ plating plate
108
+
109
+ # Custom output directory
110
+ plating plate --output-dir ./documentation
111
+ ```
112
+
113
+ ## ๐Ÿ“‚ Bundle Structure
114
+
115
+ Each component has a `.plating` bundle:
116
+
117
+ ```
118
+ my_resource.plating/
119
+ โ”œโ”€โ”€ docs/
120
+ โ”‚ โ”œโ”€โ”€ my_resource.tmpl.md # Main template
121
+ โ”‚ โ””โ”€โ”€ _partial.md # Reusable partials
122
+ โ”œโ”€โ”€ examples/
123
+ โ”‚ โ”œโ”€โ”€ basic.tf # Example configurations
124
+ โ”‚ โ””โ”€โ”€ advanced.tf
125
+ โ””โ”€โ”€ fixtures/ # Test data
126
+ โ””โ”€โ”€ test_config.json
127
+ ```
128
+
129
+ ## ๐ŸŽจ Template Functions
130
+
131
+ Plating provides powerful template functions:
132
+
133
+ - `{{ "{{ example('name') }}" }}` - Include an example file
134
+ - `{{ "{{ schema() }}" }}` - Render component schema
135
+ - `{{ "{{ partial('name') }}" }}` - Include a partial template
136
+ - `{{ "{{ anchor('text') }}" }}` - Create header anchors
137
+
138
+ ## ๐Ÿงช Testing
139
+
140
+ Test your examples with the built-in test runner:
141
+
142
+ ```bash
143
+ # Test all examples
144
+ plating test
145
+
146
+ # Test specific component types
147
+ plating test --component-type resource
148
+ ```
149
+
150
+ ## ๐Ÿ”ง Configuration
151
+
152
+ Configure Plating in your `pyproject.toml`:
153
+
154
+ ```toml
155
+ [tool.plating]
156
+ provider_name = "my_provider"
157
+ output_dir = "docs"
158
+ component_types = ["resource", "data_source", "function"]
159
+ ```
160
+
161
+ ## ๐Ÿ—๏ธ Architecture
162
+
163
+ Plating follows a modular architecture:
164
+
165
+ - **PlatingBundle** - Represents documentation bundles
166
+ - **PlatingPlater** - Renders documentation
167
+ - **PlatingDresser** - Creates documentation templates
168
+ - **PlatingDiscovery** - Finds components and bundles
169
+ - **SchemaProcessor** - Extracts provider schemas
170
+
171
+ ## ๐Ÿค Contributing
172
+
173
+ Contributions are welcome! Please feel free to submit a Pull Request.
174
+
175
+ ## ๐Ÿ“œ License
176
+
177
+ Apache 2.0
178
+
179
+ ## ๐Ÿ™ Acknowledgments
180
+
181
+ Built with โค๏ธ using:
182
+ - [attrs](https://www.attrs.org/) - Python classes without boilerplate
183
+ - [Jinja2](https://jinja.palletsprojects.com/) - Powerful templating
184
+ - [pyvider](https://github.com/provide-io/pyvider) - Terraform provider framework
185
+ - [click](https://click.palletsprojects.com/) - Command line interface
186
+ - [rich](https://rich.readthedocs.io/) - Beautiful terminal output
187
+
188
+ ---
189
+
190
+ *Plating - Making documentation as delightful as a well-plated dish* ๐Ÿฝ๏ธ
@@ -0,0 +1 @@
1
+ 0.0.0.dev0