10
10
11
11
from codegen .gscli .generate .runner_imports import _generate_runner_imports
12
12
from codegen .gscli .generate .utils import LanguageType , generate_builtins_file
13
- from codegen .sdk .code_generation .doc_utils .canonicals import get_canonical_codemod_class_mdx , get_canonical_codemod_classes
13
+ from codegen .sdk .code_generation .codegen_sdk_codebase import get_codegen_sdk_codebase
14
+ from codegen .sdk .code_generation .doc_utils .generate_docs_json import generate_docs_json
14
15
from codegen .sdk .code_generation .doc_utils .skills import format_all_skills
15
- from codegen .sdk .code_generation .doc_utils .utils import get_all_classes_to_document
16
- from codegen .sdk .code_generation .mdx_docs_generation import render_mdx_for_codebase_page , render_mdx_page_for_class
17
- from codegen .sdk .code_generation .prompts .api_docs import get_codegen_sdk_codebase
18
- from codegen .sdk .core .codebase import PyCodebaseType
19
- from codegen .sdk .enums import ProgrammingLanguage
16
+ from codegen .sdk .code_generation .mdx_docs_generation import render_mdx_page_for_class
20
17
from codegen .sdk .python import PyClass
21
18
from codegen .sdk .skills .core .utils import get_all_skills , get_guide_skills_dict
22
19
@@ -110,18 +107,17 @@ def generate_docs(docs_dir: str) -> None:
110
107
111
108
This will generate docs using the codebase locally, including any unstaged changes
112
109
"""
113
- codebase = get_codegen_sdk_codebase ()
114
- generate_codegen_sdk_docs (docs_dir , codebase )
110
+ generate_codegen_sdk_docs (docs_dir )
115
111
# generate_canonical_codemod_docs(docs_dir, codebase)
116
- generate_skills_docs (docs_dir )
117
- generate_guides (docs_dir )
112
+ # generate_skills_docs(docs_dir)
113
+ # generate_guides(docs_dir)
118
114
119
115
120
116
def generate_guides (docs_dir : str ):
121
117
"""Updates code snippets in the guides with the latest skill implementations"""
122
118
guide_skills = get_guide_skills_dict ()
123
119
for guide_relative_path in guide_skills :
124
- guide_file_path = os .path .join (docs_dir , "codebase-sdk " , str (guide_relative_path ) + ".mdx" )
120
+ guide_file_path = os .path .join (docs_dir , "api-reference " , str (guide_relative_path ) + ".mdx" )
125
121
126
122
with open (guide_file_path ) as f :
127
123
file_content = f .read ()
@@ -143,23 +139,20 @@ def get_snippet_pattern(target_name: str) -> str:
143
139
return pattern
144
140
145
141
146
- def generate_codegen_sdk_docs (docs_dir : str , codebase : PyCodebaseType ) -> None :
142
+ def generate_codegen_sdk_docs (docs_dir : str ) -> None :
147
143
"""Generate the docs for the codegen_sdk API and update the mint.json"""
148
144
print (colored ("Generating codegen_sdk docs" , "green" ))
149
145
150
146
# Generate docs page for codebase api and write to the file system
151
- mdx_page = render_mdx_for_codebase_page (codebase )
152
- os .makedirs (os .path .join (docs_dir , "codebase-sdk" ), exist_ok = True )
153
- file_path = os .path .join (docs_dir , "codebase-sdk" , "codebase.mdx" )
154
- with open (file_path , "w" ) as f :
155
- f .write (mdx_page )
147
+ codebase = get_codegen_sdk_codebase ()
148
+ gs_docs = generate_docs_json (codebase , "HEAD" )
156
149
157
150
# Prepare the directories for the new docs
158
151
# Delete existing documentation directories if they exist
159
152
# So we remove generated docs for any classes which no longer exist
160
- python_docs_dir = os .path .join (docs_dir , "codebase-sdk " , "python" )
161
- typescript_docs_dir = os .path .join (docs_dir , "codebase-sdk " , "typescript" )
162
- core_dir = os .path .join (docs_dir , "codebase-sdk " , "core" )
153
+ python_docs_dir = os .path .join (docs_dir , "api-reference " , "python" )
154
+ typescript_docs_dir = os .path .join (docs_dir , "api-reference " , "typescript" )
155
+ core_dir = os .path .join (docs_dir , "api-reference " , "core" )
163
156
164
157
for dir_path in [python_docs_dir , typescript_docs_dir , core_dir ]:
165
158
if os .path .exists (dir_path ):
@@ -170,27 +163,27 @@ def generate_codegen_sdk_docs(docs_dir: str, codebase: PyCodebaseType) -> None:
170
163
os .makedirs (core_dir , exist_ok = True )
171
164
172
165
# Generate the docs pages for core, python, and typescript classes
173
- classes = get_all_classes_to_document (codebase )
174
166
175
167
# Write the generated docs to the file system, splitting between core, python, and typescript
176
168
# keep track of where we put each one so we can update the mint.json
177
169
python_set = set ()
178
170
typescript_set = set ()
179
171
core_set = set ()
180
172
# TODO replace this with new `get_mdx_for_class` function
181
- for class_name , class_obj in classes .items ():
173
+ for class_doc in gs_docs .classes :
174
+ class_name = class_doc .title
182
175
lower_class_name = class_name .lower ()
183
176
if lower_class_name .startswith ("py" ):
184
177
file_path = os .path .join (python_docs_dir , f"{ class_name } .mdx" )
185
- python_set .add (f"codebase-sdk /python/{ class_name } " )
178
+ python_set .add (f"api-reference /python/{ class_name } " )
186
179
elif lower_class_name .startswith (("ts" , "jsx" )):
187
180
file_path = os .path .join (typescript_docs_dir , f"{ class_name } .mdx" )
188
- typescript_set .add (f"codebase-sdk /typescript/{ class_name } " )
181
+ typescript_set .add (f"api-reference /typescript/{ class_name } " )
189
182
else :
190
183
file_path = os .path .join (core_dir , f"{ class_name } .mdx" )
191
- core_set .add (f"codebase-sdk /core/{ class_name } " )
184
+ core_set .add (f"api-reference /core/{ class_name } " )
192
185
193
- mdx_page = render_mdx_page_for_class (cls = class_obj , codebase = codebase )
186
+ mdx_page = render_mdx_page_for_class (cls_doc = class_doc )
194
187
with open (file_path , "w" ) as f :
195
188
f .write (mdx_page )
196
189
print (colored ("Finished writing new .mdx files" , "green" ))
@@ -201,7 +194,7 @@ def generate_codegen_sdk_docs(docs_dir: str, codebase: PyCodebaseType) -> None:
201
194
mint_data = json .load (mint_file )
202
195
203
196
# Find the "Codebase SDK" group where we want to add the pages
204
- codebase_sdk_group = next (group for group in mint_data ["navigation" ] if group ["group" ] == "GraphSitter Reference" )
197
+ codebase_sdk_group = next (group for group in mint_data ["navigation" ] if group ["group" ] == "API Reference" )
205
198
206
199
# Update the pages for each language group
207
200
for group in codebase_sdk_group ["pages" ]:
@@ -243,26 +236,3 @@ def filter_class(cls: PyClass):
243
236
if decorator .name == "skill_impl" and "external=True" in decorator .source :
244
237
return True
245
238
return False
246
-
247
-
248
- def generate_canonical_codemod_docs (docs_dir : str , codebase : PyCodebaseType ) -> None :
249
- """Generates docs for all canonical codemods"""
250
- print (colored ("Generating canonical codemod docs" , "green" ))
251
-
252
- print (colored ("> Grabbing canonicals" , "green" ))
253
- classes = get_canonical_codemod_classes (codebase , language = ProgrammingLanguage .PYTHON )
254
-
255
- # =====[ Write the canonical docs to the file system ]=====
256
- examples_dir = os .path .join (docs_dir , "codebase-sdk" , "examples" )
257
- print (colored (f"> Generating docs in { examples_dir } " , "green" ))
258
- docstrings = {k : get_canonical_codemod_class_mdx (v ) for k , v in classes .items ()}
259
- for k , v in docstrings .items ():
260
- file_path = os .path .join (examples_dir , f"{ k } .mdx" )
261
- with open (file_path , "w" ) as f :
262
- f .write (v )
263
-
264
- print (colored ("> Writing to disk" , "green" ))
265
-
266
-
267
- if __name__ == "__main__" :
268
- generate_skills_docs ("docs" )
0 commit comments