59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #! /usr/bin/env python
 | |
| # Copyright 2022 The Matrix.org Foundation C.I.C.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| import sys
 | |
| from pathlib import Path
 | |
| from typing import Dict, List
 | |
| 
 | |
| import tomli
 | |
| 
 | |
| 
 | |
| def main() -> None:
 | |
|     lockfile_path = Path(__file__).parent.parent.joinpath("poetry.lock")
 | |
|     with open(lockfile_path, "rb") as lockfile:
 | |
|         lockfile_content = tomli.load(lockfile)
 | |
| 
 | |
|     # Poetry 1.3+ lockfile format:
 | |
|     # There's a `files` inline table in each [[package]]
 | |
|     packages_to_assets: Dict[str, List[Dict[str, str]]] = {
 | |
|         package["name"]: package["files"] for package in lockfile_content["package"]
 | |
|     }
 | |
| 
 | |
|     success = True
 | |
| 
 | |
|     for package_name, assets in packages_to_assets.items():
 | |
|         has_sdist = any(asset["file"].endswith(".tar.gz") for asset in assets)
 | |
|         if not has_sdist:
 | |
|             success = False
 | |
|             print(
 | |
|                 f"Locked package {package_name!r} does not have a source distribution!",
 | |
|                 file=sys.stderr,
 | |
|             )
 | |
| 
 | |
|     if not success:
 | |
|         print(
 | |
|             "\nThere were some problems with the Poetry lockfile (poetry.lock).",
 | |
|             file=sys.stderr,
 | |
|         )
 | |
|         sys.exit(1)
 | |
| 
 | |
|     print(
 | |
|         f"Poetry lockfile OK. {len(packages_to_assets)} locked packages checked.",
 | |
|         file=sys.stderr,
 | |
|     )
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |