8989 destination_path.parent.mkdir (parents= True, exist_ok= True)
9090 shutil.copy2 (item, destination_path)
9191
92- def remove_ignored(root: Path) -> None:
93- ignored_paths = sorted(
94- [path for path in root.rglob (" *" ) if is_ignored(path.relative_to (root))],
95- key= lambda path: len (path.parts ),
96- reverse= True,
97- )
98- for path in ignored_paths:
99- if path.is_dir ():
100- shutil.rmtree (path)
101- else :
102- path.unlink ()
103-
10492 for relative_path in preserve_paths:
10593 source_path = target / relative_path
10694 if not source_path.exists ():
@@ -121,6 +109,46 @@ jobs:
121109 child.unlink ()
122110
123111 copy_tree(generated, target)
112+ PY
113+
114+ - name: Install target project dependencies
115+ working-directory: target
116+ run: |
117+ python -m pip install --upgrade pip
118+ python -m pip install -r requirements-dev.txt
119+
120+ - name: Validate generated project
121+ working-directory: logic
122+ run: |
123+ python -m msra_codegen validate .. /target
124+
125+ - name: Restore preserved artifacts and remove generated noise
126+ run: |
127+ python - <<'PY'
128+ from fnmatch import fnmatch
129+ from pathlib import Path
130+ import shutil
131+
132+ target = Path(" target" )
133+ preserved_root = Path(" preserved" )
134+ preserve_paths = {{ source_sync.preserved_target_paths | tojson }}
135+ ignored_patterns = {{ source_sync.ignored_generated_patterns | tojson }}
136+
137+ def is_ignored(relative_path: Path) -> bool:
138+ relative_text = relative_path.as_posix ()
139+ return any(fnmatch(relative_text, pattern) for pattern in ignored_patterns)
140+
141+ def remove_ignored(root: Path) -> None:
142+ ignored_paths = sorted(
143+ [path for path in root.rglob (" *" ) if is_ignored(path.relative_to (root))],
144+ key= lambda path: len (path.parts ),
145+ reverse= True,
146+ )
147+ for path in ignored_paths:
148+ if path.is_dir ():
149+ shutil.rmtree (path)
150+ else :
151+ path.unlink ()
124152
125153 for relative_path in preserve_paths:
126154 source_path = preserved_root / relative_path
@@ -135,17 +163,6 @@ jobs:
135163 shutil.rmtree (preserved_root, ignore_errors= True)
136164 PY
137165
138- - name: Install target project dependencies
139- working-directory: target
140- run: |
141- python -m pip install --upgrade pip
142- python -m pip install -r requirements-dev.txt
143-
144- - name: Validate generated project
145- working-directory: logic
146- run: |
147- python -m msra_codegen validate .. /target
148-
149166 - name: Commit and push
150167 working-directory: target
151168 run: |
0 commit comments