Vendor Data Exporter, by Private Packagist
A command-line tool to fetch, from the Private Packagist API, information about a vendor's customers, the packages added to them, and the package versions they have access to according to the limitations set.
composer install --no-devThis project has a box.json configuration file for building a PHAR executable via Box (Box itself is not included in the dev dependencies, so follow installation instructions to install globally). To compile a PHAR executable of Vendor Data Exporter, run the following command:
box compileThe resulting PHAR executable can be used in the following examples by replacing bin/console with bin/packagist-vendor-data-exporter.phar.
To use Vendor Data Exporter, you must authenticate with the Private Packagist API using an API Token and Secret. These can be provided either via command flags or environment variables.
API credentials can be found on Private Packagist at: Your Organization → Settings → API Access.
The API token and secret can be passed in via the command flags --token and --secret respectively.
bin/console \
--token="<REPLACE-WITH-YOUR-TOKEN>" \
--secret="<REPLACE-WITH-YOUR-SECRET>"API credentials passed in via the command flags take precedence over environment variables.
The API token and secret can also be set in the environment variables PACKAGIST_API_TOKEN and PACKAGIST_API_SECRET respectively.
export PACKAGIST_API_TOKEN="<REPLACE-WITH-YOUR-TOKEN>"
export PACKAGIST_API_SECRET="<REPLACE-WITH-YOUR-SECRET>"
bin/consoleVendor Data Exporter will also check for the existence of a .env environment file in the current working directory, too. Real environment variables take precedence over environment variables defined in .env.
cat ".env"
PACKAGIST_API_TOKEN=<REPLACE-WITH-YOUR-TOKEN>
PACKAGIST_API_SECRET=<REPLACE-WITH-YOUR-SECRET>
bin/consoleBy default, the application will output the list of customer packages and versions in a text-based table to be viewed in the terminal (the txt format). Use this with a command such as less or more to view the entire list.
bin/console | lessAnother output format is JSON (json).
# Example: use the JQ command to further manipulate the data.
bin/console --format="json" | jq --raw-output ".[].name" | sort | xargs -l -i echo 'Customer "{}" found.'The final output is comma-separated values (csv).
# Example: upload the resulting CSV database to a webhook endpoint (for example, for your accounting software).
bin/console --format="csv" | curl -fsSL --request 'POST' --data '@-' "https://example.com/uploads/monthly-customer-data" --header "Authorization: Bearer ${ACCOUNTING_CREDENTIALS}"