{"id":38568616,"url":"https://github.com/softwareone-platform/mpt-tool","last_synced_at":"2026-02-24T13:00:39.019Z","repository":{"id":331461094,"uuid":"1125201464","full_name":"softwareone-platform/mpt-tool","owner":"softwareone-platform","description":"Python CLI tool for managing migrations","archived":false,"fork":false,"pushed_at":"2026-02-19T14:00:07.000Z","size":378,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-19T14:06:56.675Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softwareone-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-30T10:07:45.000Z","updated_at":"2026-02-19T09:07:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b49aa1a-a49d-4385-aecc-2469b304c4d5","html_url":"https://github.com/softwareone-platform/mpt-tool","commit_stats":null,"previous_names":["softwareone-platform/mpt-tool"],"tags_count":6,"template":false,"template_full_name":"softwareone-platform/swo-extension-playground","purl":"pkg:github/softwareone-platform/mpt-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softwareone-platform","download_url":"https://codeload.github.com/softwareone-platform/mpt-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softwareone-platform%2Fmpt-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29783615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-17T07:58:13.070Z","updated_at":"2026-02-24T13:00:39.013Z","avatar_url":"https://github.com/softwareone-platform.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=softwareone-platform_mpt-tool\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-tool)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=softwareone-platform_mpt-tool\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=softwareone-platform_mpt-tool)\n\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n# SoftwareONE MPT Tool\n\nA Python-based migration tool for extensions that standardizes migration execution. It provides a CLI-based interface\nto manage both schema and data migrations across multiple backends, ensuring consistent behavior in all environments.\n\n## Documentation\n\n📚 **[Complete Usage Guide](docs/PROJECT_DESCRIPTION.md)**\n\n## Getting started\n\n### Prerequisites\n\n- Docker and Docker Compose plugin (`docker compose` CLI)\n- `make`\n- [CodeRabbit CLI](https://www.coderabbit.ai/cli) (optional. Used for running review check locally)\n\n\n### Make targets overview\n\nCommon development workflows are wrapped in the `Makefile`. Run `make help` to see the list of available commands.\n\n### How the Makefile works\n\nThe project uses a modular Makefile structure that organizes commands into logical groups:\n\n- **Main Makefile** (`Makefile`): Entry point that automatically includes all `.mk` files from the `make/` directory\n- **Modular includes** (`make/*.mk`): Commands are organized by category:\n  - `common.mk` - Core development commands (build, test, format, etc.)\n  - `repo.mk` - Repository management and dependency commands\n  - `migrations.mk` - Database migration commands (Only available in extension repositories)\n  - `external_tools.mk` - Integration with external tools\n\n\nYou can extend the Makefile with your own custom commands creating a `local.mk` file inside make folder. This file is\nautomatically ignored by git, so your personal commands won't affect other developers or appear in version control.\n\n\n### Setup\n\nFollow these steps to set up the development environment:\n\n#### 1. Clone the repository\n\n```bash\ngit clone \u003crepository-url\u003e\n```\n```bash\ncd mpt-tool\n```\n\n#### 2. Create environment configuration\n\nCopy the sample environment file and update it with your values:\n\n```bash\ncp .env.sample .env\n```\n\nEdit the `.env` file with your actual configuration values. See the [Configuration](#configuration) section for details on available variables.\n\n#### 3. Build the Docker images\n\nBuild the development environment:\n\n```bash\nmake build\n```\n\nThis will create the Docker images with all required dependencies and the virtualenv.\n\n#### 4. Verify the setup\n\nRun the test suite to ensure everything is configured correctly:\n\n```bash\nmake test\n```\n\nYou're now ready to start developing! See [Running the cli](#running-the-cli) for next steps.\n\n\n## Running the cli\n\nBefore running, ensure your `.env` file is populated.\n\nStart the cli:\n\n```bash\nmake run\n```\n\n## Developer utilities\n\nUseful helper targets during development:\n\n```bash\nmake bash      # open a bash shell in the app container\nmake check     # run ruff, flake8, and lockfile checks\nmake check-all # run checks and tests\nmake format    # auto-format code and imports\nmake review    # check the code in the cli by running CodeRabbit\n```\n\n## Configuration\n\nThe following environment variables are typically set in `.env`. Docker Compose reads them when using the Make targets described above.\n\n### Application\n\n| Environment Variable                   | Default                 | Example                              | Description                                                                                 |\n|----------------------------------------|-------------------------|--------------------------------------|---------------------------------------------------------------------------------------------|\n| `MPT_API_BASE_URL`                     | `http://localhost:8000` | `https://portal.softwareone.com/mpt` | SoftwareONE Marketplace API URL                                                             |\n| `MPT_API_TOKEN`                        | -                       | eyJhbGciOiJSUzI1N...                 | SoftwareONE Marketplace API Token                                                           |\n| `MPT_TOOL_STORAGE_TYPE`                | `local`                 | `airtable`                           | Storage type for MPT tools (local or airtable)                                              |\n| `MPT_TOOL_STORAGE_AIRTABLE_API_KEY`    | -                       | patXXXXXXXXXXXXXX                    | Airtable API key for MPT tool storage (required when storage type is airtable)              |\n| `MPT_TOOL_STORAGE_AIRTABLE_BASE_ID`    | -                       | appXXXXXXXXXXXXXX                    | Airtable base ID for MPT tool storage (required when storage type is airtable)              |\n| `MPT_TOOL_STORAGE_AIRTABLE_TABLE_NAME` | -                       | MigrationTracking                    | Airtable table name for MPT tool storage (required when storage type is airtable)           |\n| `SERVICE_VERSION`                      | empty                   | `5.4.2`                              | Optional service version saved in migration state when a migration state is created         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareone-platform%2Fmpt-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftwareone-platform%2Fmpt-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareone-platform%2Fmpt-tool/lists"}