Command Line Samples#
Enabling CLI Execution#
Poetry allows you to test command line invocation direction in the virtualenv using the
prefix poetry run.
Note: CLI mapping is performed in
pyproject.tomland shims are recreated duringpoetry install:... [tool.poetry.scripts] tap-mysource = 'singer_sdk.tests.sample_tap_parquet.parquet_tap:cli'
The CLI commands defined here will be configured automatically when the python library is installed by a user.
For example, to run --help#
poetry install && \
poetry run tap-mysource --help
Run in sync mode with auto-discovery#
poetry install && \
poetry run tap-mysource \
--config singer_sdk/samples/sample_tap_parquet/parquet-config.sample.json
Run in sync mode with a catalog file input#
poetry install && \
poetry run tap-mysource \
--config singer_sdk/samples/sample_tap_parquet/parquet-config.sample.json
--catalog singer_sdk/samples/sample_tap_parquet/parquet-catalog.sample.json
Run in discovery mode#
poetry install && \
poetry run tap-mysource --discover \
--config singer_sdk/samples/sample_tap_parquet/parquet-config.sample.json
Run in discovery mode with a passed catalog file#
poetry install && \
poetry run tap-mysource --discover \
--config singer_sdk/samples/sample_tap_parquet/parquet-config.sample.json \
--catalog singer_sdk/samples/sample_tap_parquet/parquet-catalog.sample.json
Test connectivity#
The --test option allows the user to validate configuration and assess connectivity.
poetry install && \
poetry run tap-mysource --test \
--config singer_sdk/samples/sample_tap_parquet/parquet-config.sample.json
Package Information#
The --about option displays metadata about the package.
$ poetry run sdk-tap-countries-sample --about
Name: sample-tap-countries
Version: [could not be detected]
Sdk_Version: 0.3.5
Capabilities: ['sync', 'catalog', 'state', 'discover']
Settings: {'type': 'object', 'properties': {}}
This information can also be printed in JSON format for consumption by other applications
$ poetry run sdk-tap-countries-sample --about --format json
{
"name": "sample-tap-countries",
"version": "[could not be detected]",
"sdk_version": "0.3.5",
"capabilities": [
"sync",
"catalog",
"state",
"discover"
],
"settings": {
"type": "object",
"properties": {}
}
}
Invocation options#
There a are few options available to invoke your connector.
Poetry#
Activate the Poetry environment with poetry shell or prefix all your commands with poetry run. The commands you then run are the same ones you’d use if you installed your package with pip.
Shell Script#
Following are some simple shell scripts (e.g. my-tap.sh) that can save you from typing poetry install and poetry run my-tap too many times.
Taps#
#!/bin/sh
# This simple script allows you to test your tap from any directory, while still taking
# advantage of the poetry-managed virtual environment.
# Adapted from: https://github.com/python-poetry/poetry/issues/2179#issuecomment-668815276
unset VIRTUAL_ENV
STARTDIR=$(pwd)
TOML_DIR=$(dirname "$0")
cd "$TOML_DIR" || exit
poetry install 1>&2
poetry run my-tap $*
Targets#
#!/bin/sh
# This simple script allows you to test your target from any directory, while still taking
# advantage of the poetry-managed virtual environment.
# Adapted from: https://github.com/python-poetry/poetry/issues/2179#issuecomment-668815276
unset VIRTUAL_ENV
STARTDIR=$(pwd)
TOML_DIR=$(dirname "$0")
cd "$TOML_DIR" || exit
poetry install 1>&2
poetry run my-target $* < /dev/stdin
Meltano#
The cookiecutter templates also come with a meltano.yml for you to try your package with Meltano. To use it, you’ll have to declare settings and their types.
For example:
plugins:
extractors:
- name: my-tap
namespace: my_tap
executable: -e .
capabilities:
- state
- catalog
- discover
settings:
- name: base_url
kind: string
- name: api_key
kind: password
Comparison#
native/shell/ |
|
|
|---|---|---|
Configuration store |
Config JSON file ( |
|
Simple invocation |
|
|
Other CLI options |
|
|
ELT |
|
|