diff --git a/polyapi/deployables.py b/polyapi/deployables.py index ac4f743..d5c8bea 100644 --- a/polyapi/deployables.py +++ b/polyapi/deployables.py @@ -112,20 +112,24 @@ class PolyDeployConfig(TypedDict): def get_all_deployable_files_windows(config: PolyDeployConfig) -> List[str]: # Constructing the Windows command using dir and findstr - include_pattern = " ".join(f"*.{f}" if "." in f else f"*.{f}" for f in config["include_files_or_extensions"]) or "*" - exclude_pattern = '|'.join(config["exclude_dirs"]) - pattern = '|'.join(f"polyConfig: {name}" for name in config["type_names"]) or 'polyConfig' + include_pattern = " ".join(f"*.{f}" for f in config["include_files_or_extensions"]) or "*" + exclude_pattern = ' '.join(f"\\{f}" for f in config["exclude_dirs"]) + pattern = ' '.join(f"\\" for name in config["type_names"]) or 'polyConfig' - exclude_command = f" | findstr /V /I \"{exclude_pattern}\"" if exclude_pattern else '' - search_command = f" | findstr /M /I /F:/ /C:\"{pattern}\"" + # Using two regular quotes or two smart quotes throws "The syntax of the command is incorrect". + # For some reason, starting with a regular quote and leaving the end without a quote works. + exclude_command = f" | findstr /V /I \"{exclude_pattern}" if exclude_pattern else '' + search_command = f" | findstr /M /I /F:/ {pattern}" result = [] for dir_path in config["include_dirs"]: - dir_command = f"dir /S /P /B {include_pattern} {dir_path}" + if dir_path is not '.': + include_pattern = " ".join(f"{dir_path}*.{f}" for f in config["include_files_or_extensions"]) or "*" + dir_command = f"dir {include_pattern} /S /P /B" full_command = f"{dir_command}{exclude_command}{search_command}" try: output = subprocess.check_output(full_command, shell=True, text=True) - result.extend(output.strip().split('\r\n')) + result.extend(output.strip().split('\n')) except subprocess.CalledProcessError: pass return result @@ -154,7 +158,7 @@ def get_all_deployable_files(config: PolyDeployConfig) -> List[str]: if not config.get("include_files_or_extensions"): config["include_files_or_extensions"] = ["py"] if not config.get("exclude_dirs"): - config["exclude_dirs"] = ["poly", "node_modules", "dist", "build", "output", ".vscode", ".poly", ".github", ".husky", ".yarn"] + config["exclude_dirs"] = ["Lib", "node_modules", "dist", "build", "output", ".vscode", ".poly", ".github", ".husky", ".yarn", ".venv"] is_windows = os.name == "nt" if is_windows: diff --git a/polyapi/prepare.py b/polyapi/prepare.py index af953ec..c8babc5 100644 --- a/polyapi/prepare.py +++ b/polyapi/prepare.py @@ -1,5 +1,6 @@ import os import sys +import subprocess from typing import List, Tuple, Literal import requests @@ -135,6 +136,18 @@ def prepare_deployables(lazy: bool = False, disable_docs: bool = False, disable_ # NOTE: write_updated_deployable has side effects that update deployable.fileRevision which is in both this list and parsed_deployables for deployable in dirty_deployables: write_updated_deployable(deployable, disable_docs) + # Re-stage any updated staged files. + staged = subprocess.check_output('git diff --name-only --cached', shell=True, text=True, ).split('\n') + rootPath = subprocess.check_output('git rev-parse --show-toplevel', shell=True, text=True).replace('\n', '') + for deployable in dirty_deployables: + try: + deployableName = deployable["file"].replace('\\', '/').replace(f"{rootPath}/", '') + if deployableName in staged: + print(f'Staging {deployableName}') + subprocess.run(['git', 'add', deployableName]) + except: + print('Warning: File staging failed, check that all files are staged properly.') + print("Poly deployments are prepared.") save_deployable_records(parsed_deployables) diff --git a/pyproject.toml b/pyproject.toml index 78f2d57..ce2b703 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=61.2", "wheel"] [project] name = "polyapi-python" -version = "0.3.8.dev0" +version = "0.3.8.dev1" description = "The Python Client for PolyAPI, the IPaaS by Developers for Developers" authors = [{ name = "Dan Fellin", email = "dan@polyapi.io" }] dependencies = [