소스 검색

Add separate mirrors for packages and plugins

main
Sindre Stephansen 2 년 전
부모
커밋
1023d0f2e5
로그인 계정: sindre <sindre@sindrestephansen.com> GPG 키 ID: B06FC67D17A46ADE
6개의 변경된 파일28개의 추가작업 그리고 16개의 파일을 삭제
  1. +3
    -1
      package-list.yaml
  2. +1
    -1
      sync/src/config/__init__.py
  3. +11
    -2
      sync/src/config/parse.py
  4. +6
    -4
      sync/src/main.py
  5. +4
    -4
      sync/src/maven/packages.py
  6. +3
    -4
      sync/src/maven/plugins.py

+ 3
- 1
package-list.yaml 파일 보기

@@ -1,10 +1,12 @@
maven: maven:
mirrors:
package-mirrors:
- "https://repo.maven.apache.org/maven2" - "https://repo.maven.apache.org/maven2"
- "https://repo1.maven.org/maven2" - "https://repo1.maven.org/maven2"
- "https://oss.sonatype.org/content/repositories/snapshots" - "https://oss.sonatype.org/content/repositories/snapshots"
- "https://packages.confluent.io/maven" - "https://packages.confluent.io/maven"
- "https://registry.quarkus.io/maven" - "https://registry.quarkus.io/maven"

plugin-mirrors:
- "https://plugins.gradle.org/m2" - "https://plugins.gradle.org/m2"


configurations: configurations:


+ 1
- 1
sync/src/config/__init__.py 파일 보기

@@ -1,3 +1,3 @@
from .packages import Package from .packages import Package
from .plugins import Plugin from .plugins import Plugin
from .parse import Configuration, Config, parse_config
from .parse import Configuration, Config, MavenMirrors, parse_config

+ 11
- 2
sync/src/config/parse.py 파일 보기

@@ -19,10 +19,16 @@ class Configuration:
packages: list[Package] packages: list[Package]




@dataclass
class MavenMirrors:
package_mirrors: list[str]
plugin_mirrors: list[str]


@dataclass @dataclass
class Config: class Config:
configurations: list[Configuration] configurations: list[Configuration]
mirrors: list[str]
mirrors: MavenMirrors




def parse_config(path: Path) -> Optional[Config]: def parse_config(path: Path) -> Optional[Config]:
@@ -69,5 +75,8 @@ def parse_config(path: Path) -> Optional[Config]:
Configuration(kotlin, gradle, plugins, packages) Configuration(kotlin, gradle, plugins, packages)
for (kotlin, gradle), (plugins, packages) in configurations.items() for (kotlin, gradle), (plugins, packages) in configurations.items()
], ],
data.get('maven', {}).get('mirrors', []),
MavenMirrors(
data.get('maven', {}).get('package-mirrors', []),
data.get('maven', {}).get('plugin-mirrors', []),
),
) )

+ 6
- 4
sync/src/main.py 파일 보기

@@ -4,7 +4,7 @@ import dataclasses
import logging import logging
from pathlib import Path from pathlib import Path


from config import parse_config, Configuration
from config import parse_config, Configuration, MavenMirrors
from gradle import create_gradle from gradle import create_gradle
from maven import get_effective_packages from maven import get_effective_packages
from maven.plugins import get_effective_plugins from maven.plugins import get_effective_plugins
@@ -12,7 +12,7 @@ from maven.plugins import get_effective_plugins
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)




async def resolve_kotlin(configuration: Configuration, mirrors: list[str]):
async def resolve_kotlin(configuration: Configuration, mirrors: MavenMirrors):
packages = [ packages = [
resolved resolved
for package in configuration.packages for package in configuration.packages
@@ -35,8 +35,10 @@ async def main(package_list: Path, output_dir: Path, gradle_repo: str) -> None:
print('Error in configuration') print('Error in configuration')
elif not config.configurations: elif not config.configurations:
print('No configurations defined, nothing to do.') print('No configurations defined, nothing to do.')
elif not config.mirrors:
print('No mirrors defined. Add maven.mirrors in the config file.')
elif not config.mirrors.package_mirrors and [p for c in config.configurations for p in c.packages]:
print('No package mirrors defined. Add maven.package-mirrors in the config file.')
elif not config.mirrors.plugin_mirrors and [p for c in config.configurations for p in c.plugins]:
print('No plugin mirrors defined. Add maven.plugin-mirrors in the config file.')
else: else:
for i, configuration in enumerate(config.configurations): for i, configuration in enumerate(config.configurations):
logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}') logger.info(f'Resolving configuration kotlin={configuration.kotlin_version}, gradle={configuration.gradle_version}')


+ 4
- 4
sync/src/maven/packages.py 파일 보기

@@ -2,7 +2,7 @@ import dataclasses
import logging import logging
from typing import Optional, Iterable from typing import Optional, Iterable


from config import Package
from config import Package, MavenMirrors
from maven.fetch import fetch_pom from maven.fetch import fetch_pom
from maven.version import resolve_version from maven.version import resolve_version
from pom import PropertyMissing, Properties from pom import PropertyMissing, Properties
@@ -10,7 +10,7 @@ from pom import PropertyMissing, Properties
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)




async def get_effective_packages(package: Package, mirrors: Iterable[str]) -> list[Package]:
async def get_effective_packages(package: Package, mirrors: MavenMirrors) -> list[Package]:
""" """
Get a list of packages that is required for Gradle to fetch this package. Get a list of packages that is required for Gradle to fetch this package.


@@ -25,13 +25,13 @@ async def get_effective_packages(package: Package, mirrors: Iterable[str]) -> li
""" """
versions = [ versions = [
dataclasses.replace(package, version=version) dataclasses.replace(package, version=version)
for version in await resolve_version(package, mirrors)
for version in await resolve_version(package, mirrors.package_mirrors)
] ]


deps = [ deps = [
dep dep
for v in versions for v in versions
for dep in await get_dependencies(v, mirrors)
for dep in await get_dependencies(v, mirrors.package_mirrors)
] ]


return versions + deps return versions + deps


+ 3
- 4
sync/src/maven/plugins.py 파일 보기

@@ -1,15 +1,14 @@
import dataclasses import dataclasses
from typing import Iterable


from config import Plugin
from config import Plugin, MavenMirrors
from maven.version import resolve_version from maven.version import resolve_version




async def get_effective_plugins(plugin: Plugin, mirrors: Iterable[str]) -> list[Plugin]:
async def get_effective_plugins(plugin: Plugin, mirrors: MavenMirrors) -> list[Plugin]:
if plugin.version: if plugin.version:
return [ return [
dataclasses.replace(plugin, version=version) dataclasses.replace(plugin, version=version)
for version in await resolve_version(plugin.package, mirrors)
for version in await resolve_version(plugin.package, mirrors.plugin_mirrors)
] ]
else: else:
return [plugin] return [plugin]

불러오는 중...
취소
저장