File tree Expand file tree Collapse file tree 3 files changed +28
-2
lines changed Expand file tree Collapse file tree 3 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -157,5 +157,15 @@ post_hooks:
157
157
- "black ."
158
158
` ` `
159
159
160
+ # ## protected_dirs
161
+
162
+ Specify directories to preserve when updating the client.
163
+
164
+ ` ` ` yaml
165
+ protected_dirs:
166
+ - "util"
167
+ - "cli"
168
+ ` ` `
169
+
160
170
[changelog.md] : CHANGELOG.md
161
171
[poetry] : https://python-poetry.org/
Original file line number Diff line number Diff line change 2
2
3
3
import json
4
4
import mimetypes
5
+ import os
5
6
import shutil
6
7
import subprocess
7
8
import sys
@@ -127,7 +128,21 @@ def update(self) -> Sequence[GeneratorError]:
127
128
if not self .package_dir .is_dir ():
128
129
return [GeneratorError (detail = f"Directory { self .package_dir } not found" )]
129
130
print (f"Updating { self .package_name } " )
130
- shutil .rmtree (self .package_dir )
131
+
132
+ if not self .config .protected_dirs :
133
+ shutil .rmtree (self .package_dir )
134
+ else :
135
+ files_and_dirs : List [str ] = os .listdir (self .package_dir )
136
+ for protected_dir in self .config .protected_dirs :
137
+ files_and_dirs .remove (protected_dir )
138
+
139
+ for file_or_dir in files_and_dirs :
140
+ path = os .path .join (self .package_dir , file_or_dir )
141
+ if os .path .isfile (path ):
142
+ os .remove (path )
143
+ if os .path .isdir (path ):
144
+ shutil .rmtree (path )
145
+
131
146
self ._create_package ()
132
147
self ._build_models ()
133
148
self ._build_api ()
@@ -170,7 +185,7 @@ def _get_errors(self) -> List[GeneratorError]:
170
185
return errors
171
186
172
187
def _create_package (self ) -> None :
173
- self .package_dir .mkdir ()
188
+ self .package_dir .mkdir (exist_ok = True )
174
189
# Package __init__.py
175
190
package_init = self .package_dir / "__init__.py"
176
191
Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ class Config(BaseModel):
27
27
project_name_override : Optional [str ]
28
28
package_name_override : Optional [str ]
29
29
package_version_override : Optional [str ]
30
+ protected_dirs : Optional [List [str ]]
30
31
post_hooks : List [str ] = [
31
32
"autoflake -i -r --remove-all-unused-imports --remove-unused-variables --ignore-init-module-imports ." ,
32
33
"isort ." ,
You can’t perform that action at this time.
0 commit comments