Skip to content

Commit ef24790

Browse files
committed
feat(cli): use central dockerfile definitions, add capability to find airbyte-repo-root
1 parent 99327c2 commit ef24790

File tree

12 files changed

+374
-192
lines changed

12 files changed

+374
-192
lines changed

airbyte_cdk/cli/airbyte_cdk/_connector.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,14 @@
4444

4545
import rich_click as click
4646

47-
# from airbyte_cdk.test.standard_tests import pytest_hooks
48-
from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
49-
from airbyte_cdk.test.standard_tests.test_resources import find_connector_root_from_name
5047
from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
5148

49+
# from airbyte_cdk.test.standard_tests import pytest_hooks
50+
from airbyte_cdk.utils.connector_paths import (
51+
find_connector_root_from_name,
52+
resolve_connector_name_and_directory,
53+
)
54+
5255
click.rich_click.TEXT_MARKUP = "markdown"
5356

5457
pytest: ModuleType | None

airbyte_cdk/cli/airbyte_cdk/_image.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
import rich_click as click
1212

13-
from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
1413
from airbyte_cdk.models.connector_metadata import MetadataFile
14+
from airbyte_cdk.utils.connector_paths import resolve_connector_name_and_directory
1515
from airbyte_cdk.utils.docker import (
1616
ConnectorImageBuildError,
1717
build_connector_image,
@@ -28,37 +28,49 @@ def image_cli_group() -> None:
2828

2929

3030
@image_cli_group.command()
31-
@click.option(
32-
"--connector-name",
31+
@click.argument(
32+
"connector",
33+
required=False,
3334
type=str,
34-
help="Name of the connector to test. Ignored if --connector-directory is provided.",
35-
)
36-
@click.option(
37-
"--connector-directory",
38-
type=click.Path(exists=True, file_okay=False, path_type=Path),
39-
help="Path to the connector directory.",
35+
metavar="[CONNECTOR]",
4036
)
4137
@click.option("--tag", default="dev", help="Tag to apply to the built image (default: dev)")
4238
@click.option("--no-verify", is_flag=True, help="Skip verification of the built image")
39+
@click.option(
40+
"--dockerfile",
41+
type=click.Path(exists=True, file_okay=True, path_type=Path),
42+
help="Optional. Override the Dockerfile used for building the image.",
43+
)
4344
def build(
44-
connector_name: str | None = None,
45-
connector_directory: Path | None = None,
45+
connector: str | None = None,
4646
*,
4747
tag: str = "dev",
4848
no_verify: bool = False,
49+
dockerfile: Path | None = None,
4950
) -> None:
5051
"""Build a connector Docker image.
5152
52-
This command builds a Docker image for a connector, using either
53-
the connector's Dockerfile or a base image specified in the metadata.
54-
The image is built for both AMD64 and ARM64 architectures.
53+
[CONNECTOR] can be a connector name (e.g. 'source-pokeapi'), a path to a connector directory, or omitted to use the current working directory.
54+
If a string containing '/' is provided, it is treated as a path. Otherwise, it is treated as a connector name.
5555
"""
5656
if not verify_docker_installation():
5757
click.echo(
5858
"Docker is not installed or not running. Please install Docker and try again.", err=True
5959
)
6060
sys.exit(1)
6161

62+
connector_name = None
63+
connector_directory = None
64+
if connector is None:
65+
# Use cwd logic in resolve_connector_name_and_directory
66+
pass
67+
elif "/" in connector or "\\" in connector:
68+
# Assume it's a path to a connector directory
69+
connector_directory = Path(connector)
70+
else:
71+
# Otherwise, assume it's a connector name
72+
connector_name = connector
73+
6274
connector_name, connector_directory = resolve_connector_name_and_directory(
6375
connector_name=connector_name,
6476
connector_directory=connector_directory,
@@ -81,6 +93,7 @@ def build(
8193
metadata=metadata,
8294
tag=tag,
8395
no_verify=no_verify,
96+
dockerfile_override=dockerfile or None,
8497
)
8598
except ConnectorImageBuildError as e:
8699
click.echo(

airbyte_cdk/cli/airbyte_cdk/_secrets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
from rich.console import Console
4444
from rich.table import Table
4545

46-
from airbyte_cdk.cli.airbyte_cdk._util import (
46+
from airbyte_cdk.utils.connector_paths import (
4747
resolve_connector_name,
4848
resolve_connector_name_and_directory,
4949
)

airbyte_cdk/cli/airbyte_cdk/_util.py

Lines changed: 0 additions & 69 deletions
This file was deleted.

airbyte_cdk/test/standard_tests/connector_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from airbyte_cdk.test.standard_tests.models import (
2525
ConnectorTestScenario,
2626
)
27-
from airbyte_cdk.test.standard_tests.test_resources import (
27+
from airbyte_cdk.utils.connector_paths import (
2828
ACCEPTANCE_TEST_CONFIG,
2929
find_connector_root,
3030
)

airbyte_cdk/test/standard_tests/declarative_sources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from airbyte_cdk.test.standard_tests._job_runner import IConnector
1313
from airbyte_cdk.test.standard_tests.models import ConnectorTestScenario
1414
from airbyte_cdk.test.standard_tests.source_base import SourceTestSuiteBase
15-
from airbyte_cdk.test.standard_tests.test_resources import MANIFEST_YAML
15+
from airbyte_cdk.utils.connector_paths import MANIFEST_YAML
1616

1717

1818
def md5_checksum(file_path: Path) -> str:

airbyte_cdk/test/standard_tests/test_resources.py

Lines changed: 0 additions & 69 deletions
This file was deleted.

airbyte_cdk/test/standard_tests/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
)
1313
from airbyte_cdk.test.standard_tests.destination_base import DestinationTestSuiteBase
1414
from airbyte_cdk.test.standard_tests.source_base import SourceTestSuiteBase
15-
from airbyte_cdk.test.standard_tests.test_resources import (
15+
from airbyte_cdk.utils.connector_paths import (
1616
METADATA_YAML,
1717
find_connector_root_from_name,
1818
)

0 commit comments

Comments
 (0)