mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-30 18:26:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import dataclasses
 | |
| import pathlib
 | |
| 
 | |
| REPO_ROOT = pathlib.Path(__file__).parent.parent
 | |
| 
 | |
| 
 | |
| @dataclasses.dataclass
 | |
| class Package:
 | |
|     # TODO: This doesn't have the actual package names.
 | |
|     directory: str
 | |
|     main_module_name: str
 | |
| 
 | |
|     def root_from_directory(self) -> str:
 | |
|         ups = self.directory.count("/") + 1
 | |
| 
 | |
|         return "/".join([".."] * ups)
 | |
| 
 | |
| 
 | |
| packages = [
 | |
|     Package(directory="metadata-ingestion", main_module_name="datahub"),
 | |
|     Package(directory="datahub-actions", main_module_name="datahub_actions"),
 | |
|     Package(
 | |
|         directory="metadata-ingestion-modules/airflow-plugin",
 | |
|         main_module_name="datahub_airflow_plugin",
 | |
|     ),
 | |
|     Package(
 | |
|         directory="metadata-ingestion-modules/dagster-plugin",
 | |
|         main_module_name="datahub_dagster_plugin",
 | |
|     ),
 | |
|     Package(
 | |
|         directory="metadata-ingestion-modules/gx-plugin",
 | |
|         main_module_name="datahub_gx_plugin",
 | |
|     ),
 | |
|     Package(
 | |
|         directory="metadata-ingestion-modules/prefect-plugin",
 | |
|         main_module_name="prefect_datahub",
 | |
|     ),
 | |
| ]
 | |
| 
 | |
| generation_header = f"# Auto-generated by {pathlib.Path(__file__).relative_to(REPO_ROOT)}. Do not edit manually."
 | |
| 
 | |
| template = """\
 | |
| #!/bin/bash
 | |
| %s
 | |
| 
 | |
| set -euxo pipefail
 | |
| 
 | |
| ROOT=%s
 | |
| MODULE=%s
 | |
| 
 | |
| if [[ ! ${RELEASE_SKIP_TEST:-} ]] && [[ ! ${RELEASE_SKIP_INSTALL:-} ]]; then
 | |
|     ${ROOT}/gradlew build  # also runs tests
 | |
| elif [[ ! ${RELEASE_SKIP_INSTALL:-} ]]; then
 | |
|     ${ROOT}/gradlew install
 | |
| fi
 | |
| 
 | |
| # Check packaging constraint.
 | |
| python -c 'import setuptools; where="./src"; assert setuptools.find_packages(where) == setuptools.find_namespace_packages(where), "you seem to be missing or have extra __init__.py files"'
 | |
| 
 | |
| # Update the release version.
 | |
| if [[ ! ${RELEASE_VERSION:-} ]]; then
 | |
|     echo "RELEASE_VERSION is not set"
 | |
|     exit 1
 | |
| fi
 | |
| sed -i.bak "s/__version__ = .*$/__version__ = \\"$(echo $RELEASE_VERSION|sed s/-/+/)\\"/" src/${MODULE}/_version.py
 | |
| 
 | |
| # Build and upload the release.
 | |
| rm -rf build dist || true
 | |
| python -m build
 | |
| if [[ ! ${RELEASE_SKIP_UPLOAD:-} ]]; then
 | |
|     python -m twine upload 'dist/*'
 | |
| fi
 | |
| mv src/${MODULE}/_version.py.bak src/${MODULE}/_version.py
 | |
| """
 | |
| 
 | |
| for package in packages:
 | |
|     script_path = REPO_ROOT / package.directory / "scripts/release.sh"
 | |
| 
 | |
|     script_path.write_text(
 | |
|         template
 | |
|         % (
 | |
|             generation_header,
 | |
|             package.root_from_directory(),
 | |
|             package.main_module_name,
 | |
|         )
 | |
|     )
 | 
