| #!/usr/bin/env python3 |
| # |
| # Copyright 2019 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import datetime |
| import os |
| import sys |
| import json |
| |
| THIS_DIR = os.path.abspath(os.path.dirname(__file__)) |
| |
| # The template for the POM file. |
| POM_FILE_CONTENT = '''<?xml version="1.0" encoding="UTF-8"?> |
| <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
| <modelVersion>4.0.0</modelVersion> |
| <groupId>io.flutter</groupId> |
| <artifactId>{0}</artifactId> |
| <version>{1}</version> |
| <packaging>jar</packaging> |
| <dependencies> |
| {2} |
| </dependencies> |
| </project> |
| ''' |
| |
| POM_DEPENDENCY = ''' |
| <dependency> |
| <groupId>{0}</groupId> |
| <artifactId>{1}</artifactId> |
| <version>{2}</version> |
| <scope>compile</scope> |
| </dependency> |
| ''' |
| |
| MAVEN_METADATA_CONTENT = ''' |
| <metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd" modelVersion="1.1.0"> |
| <groupId>io.flutter</groupId> |
| <artifactId>{0}</artifactId> |
| <version>{1}</version> |
| <versioning> |
| <versions> |
| <version>{1}</version> |
| </versions> |
| <snapshot> |
| <timestamp>{2}</timestamp> |
| <buildNumber>0</buildNumber> |
| </snapshot> |
| <snapshotVersions> |
| <snapshotVersion> |
| <extension>jar</extension> |
| <value>{1}</value> |
| </snapshotVersion> |
| <snapshotVersion> |
| <extension>pom</extension> |
| <value>{1}</value> |
| </snapshotVersion> |
| </snapshotVersions> |
| </versioning> |
| </metadata> |
| ''' |
| |
| |
| def utf8(s): |
| return str(s, 'utf-8') if isinstance(s, (bytes, bytearray)) else s |
| |
| |
| def main(): |
| with open(os.path.join(THIS_DIR, 'files.json')) as f: |
| dependencies = json.load(f) |
| |
| parser = argparse.ArgumentParser( |
| description='Generate the POM file for the engine artifacts' |
| ) |
| parser.add_argument( |
| '--engine-artifact-id', |
| type=utf8, |
| required=True, |
| help='The artifact id. e.g. android_arm_release' |
| ) |
| parser.add_argument( |
| '--engine-version', |
| type=utf8, |
| required=True, |
| help='The engine commit hash' |
| ) |
| parser.add_argument( |
| '--destination', |
| type=utf8, |
| required=True, |
| help='The destination directory absolute path' |
| ) |
| parser.add_argument( |
| '--include-embedding-dependencies', |
| type=bool, |
| help='Include the dependencies for the embedding' |
| ) |
| |
| args = parser.parse_args() |
| engine_artifact_id = args.engine_artifact_id |
| engine_version = args.engine_version |
| artifact_version = '1.0.0-' + engine_version |
| out_file_name = '%s.pom' % engine_artifact_id |
| |
| pom_dependencies = '' |
| if args.include_embedding_dependencies: |
| for dependency in dependencies: |
| if not dependency['provides']: |
| # Don't include transitive dependencies since they aren't used by the embedding. |
| continue |
| group_id, artifact_id, version = dependency['maven_dependency'].split(':') |
| pom_dependencies += POM_DEPENDENCY.format(group_id, artifact_id, version) |
| |
| # Write the POM file. |
| with open(os.path.join(args.destination, out_file_name), 'w') as f: |
| f.write( |
| POM_FILE_CONTENT.format( |
| engine_artifact_id, artifact_version, pom_dependencies |
| ) |
| ) |
| |
| # Write the Maven metadata file. |
| with open(os.path.join(args.destination, |
| '%s.maven-metadata.xml' % engine_artifact_id), |
| 'w') as f: |
| timestamp = datetime.datetime.utcnow().strftime("%Y%m%d.%H%M%S") |
| f.write( |
| MAVEN_METADATA_CONTENT.format( |
| engine_artifact_id, artifact_version, timestamp |
| ) |
| ) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |