diff --git a/codex-cli/package.json b/codex-cli/package.json index 5fbac8300b..9e1c81bdc0 100644 --- a/codex-cli/package.json +++ b/codex-cli/package.json @@ -10,7 +10,7 @@ "node": ">=16" }, "files": [ - "bin", + "bin/codex.js", "vendor" ], "repository": { diff --git a/codex-cli/scripts/build_npm_package.py b/codex-cli/scripts/build_npm_package.py index 5d4bc99c4e..261b9e0b61 100755 --- a/codex-cli/scripts/build_npm_package.py +++ b/codex-cli/scripts/build_npm_package.py @@ -255,9 +255,6 @@ def stage_sources(staging_dir: Path, version: str, package: str) -> None: bin_dir = staging_dir / "bin" bin_dir.mkdir(parents=True, exist_ok=True) shutil.copy2(CODEX_CLI_ROOT / "bin" / "codex.js", bin_dir / "codex.js") - rg_manifest = CODEX_CLI_ROOT / "bin" / "rg" - if rg_manifest.exists(): - shutil.copy2(rg_manifest, bin_dir / "rg") readme_src = REPO_ROOT / "README.md" if readme_src.exists(): @@ -316,7 +313,7 @@ def stage_sources(staging_dir: Path, version: str, package: str) -> None: package_json["version"] = version if package == "codex": - package_json["files"] = ["bin"] + package_json["files"] = ["bin/codex.js"] package_json["optionalDependencies"] = { CODEX_PLATFORM_PACKAGES[platform_package]["npm_name"]: ( f"npm:{CODEX_NPM_NAME}@" diff --git a/codex-cli/scripts/test_build_npm_package.py b/codex-cli/scripts/test_build_npm_package.py new file mode 100644 index 0000000000..21afca8fe7 --- /dev/null +++ b/codex-cli/scripts/test_build_npm_package.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +import importlib.util +import json +from pathlib import Path +import tempfile +import unittest + + +BUILD_SCRIPT = Path(__file__).resolve().parent / "build_npm_package.py" +SPEC = importlib.util.spec_from_file_location("codex_build_npm_package", BUILD_SCRIPT) +if SPEC is None or SPEC.loader is None: + raise RuntimeError(f"Unable to load module from {BUILD_SCRIPT}") + +build_npm_package = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(build_npm_package) + + +class StageSourcesTest(unittest.TestCase): + def test_codex_meta_package_omits_ripgrep_manifest(self) -> None: + with tempfile.TemporaryDirectory() as temp_dir: + staging_dir = Path(temp_dir) + + build_npm_package.stage_sources(staging_dir, "0.1.0", "codex") + + with open(staging_dir / "package.json", encoding="utf-8") as fh: + package_json = json.load(fh) + + self.assertTrue((staging_dir / "bin" / "codex.js").is_file()) + self.assertFalse((staging_dir / "bin" / "rg").exists()) + self.assertEqual(package_json["files"], ["bin/codex.js"]) + + +if __name__ == "__main__": + unittest.main()