{"id":48840076,"url":"https://github.com/delphi-blocks/blocks","last_synced_at":"2026-06-07T12:02:02.551Z","repository":{"id":349944886,"uuid":"1194654493","full_name":"delphi-blocks/blocks","owner":"delphi-blocks","description":"Download, compile, and install versioned Delphi packages from GitHub into the IDE","archived":false,"fork":false,"pushed_at":"2026-05-30T09:50:43.000Z","size":835,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-30T11:22:37.028Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Pascal","has_issues":true,"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/delphi-blocks.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":null,"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":"2026-03-28T16:36:53.000Z","updated_at":"2026-05-30T09:50:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/delphi-blocks/blocks","commit_stats":null,"previous_names":["delphi-blocks/blocks"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/delphi-blocks/blocks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delphi-blocks%2Fblocks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delphi-blocks%2Fblocks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delphi-blocks%2Fblocks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delphi-blocks%2Fblocks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/delphi-blocks","download_url":"https://codeload.github.com/delphi-blocks/blocks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delphi-blocks%2Fblocks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34020187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-04-15T01:31:28.220Z","updated_at":"2026-06-07T12:02:02.544Z","avatar_url":"https://github.com/delphi-blocks.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DelphiBlocks\n\n\u003e **Early preview — work in progress.**\n\nA command-line package manager for Delphi / RAD Studio. DelphiBlocks automates downloading, compiling, and registering third-party Delphi packages sourced from a GitHub-hosted registry.\n\n## How it works\n\n1. Reads a JSON manifest from the [blocks-repository](https://github.com/delphi-blocks/blocks-repository).\n2. Downloads the package source as a ZIP from GitHub.\n3. Compiles it with MSBuild against the selected Delphi version.\n4. Registers the library paths in the Delphi registry and records the installation in a local database (`.blocks/`).\n5. Supports multiple Delphi IDE profiles via the `registrykey` workspace setting. Delphi allows launching with an alternative registry profile using the `-r` flag (e.g. `bds.exe -r MyProfile`).\n6. Supports custom package repositories. In addition to the default registry, you can add your own GitHub-hosted repositories as package sources.\n7. Supports multiple package versions and dependency management based on [SemVer](https://semver.org/): each package can publish many versions, and Blocks resolves the best match for a constraint and installs dependencies recursively. See [docs/versioning.md](docs/versioning.md).\n8. Supports custom scripts: a manifest can run built-in commands (e.g. copying resources) at lifecycle events such as `afterCompile` or `afterInstall`. See [docs/script.md](docs/script.md).\n\n## Requirements\n\n- Windows\n- Delphi / RAD Studio XE6 or later (BDS 14.0 – 37.0)\n- MSBuild (bundled with RAD Studio)\n\n## Usage\n\n```\nCommands:\n  install \u003cpackage\u003e        Install a package by id (vendor.name) or name.\n  uninstall \u003cpackage\u003e      Remove a package from the workspace and database.\n  init                     Initialise the workspace and download the package repository.\n  list                     List packages installed in the current workspace.\n  product [name[:key]...]  Show detected Delphi installations.\n  search [pattern]         Search the repository index by id, name, description or keywords.\n  config                   Read or write workspace or system configuration values.\n  view \u003cid[@version]\u003e      Show details of a package from the repository (latest if @version omitted).\n  version                  Print the version of the blocks executable.\n  upgrade                  Check for a newer release and download the setup if available.\n  help [command]           Show this message, or detailed help for a specific command.\n```\n\n### Quick start\n\n```bat\nREM Install DelphiBlocks\nwinget install DelphiBlocks.Blocks\n\nREM Initialise the workspace in the current directory (prompts for Delphi version)\nblocks init\n\nREM Install a package\nblocks install owner.package\n\nREM Install a specific version\nblocks install owner.package@1.2.0\n\nREM Uninstall\nblocks uninstall owner.package\n\nREM List installed packages\nblocks list\n\nREM Show detected Delphi installations\nblocks product\n\nREM Show all properties for each installation (active platforms, search paths, running status)\nblocks product /detail\n\nREM Show details for a specific version\nblocks product delphi13\nblocks product delphi13:blocks\n\nREM Show details for multiple versions at once\nblocks product delphi12 delphi13\n\nREM View package info\nblocks view owner.package@1.2.0\nblocks view owner.package /versions\n\nREM Manage repository sources\nblocks config sources\nblocks config /add sources=https://github.com/owner/my-repo\n```\n\n\u003e **Version constraints \u0026 dependencies:** append `@\u003cconstraint\u003e` to a package id to pin or restrict the version (e.g. `owner.package@^1.2.0`). The full constraint syntax and how dependency resolution works are documented in [docs/versioning.md](docs/versioning.md).\n\nFor the full list of commands and options, see the [command-line reference](docs/cli.md), or run `blocks help \u003ccommand\u003e`.\n\n## Output layout\n\nWhen `blocks install` compiles a package it overrides the MSBuild output paths so that artefacts live under predictable locations.\n\n| Artefact | Output path |\n|----------|-------------|\n| BPL files | `.blocks\\bpl\\` (release) and `.blocks\\bpl\\debug\\` (debug) |\n| DCP files | `.blocks\\dcp\\` (release) and `.blocks\\dcp\\debug\\` (debug) |\n| DCU files | `.blocks\\lib\\\u003cname\u003e\\\u003cPlatform\u003e\\` (release) and `.blocks\\lib\\\u003cname\u003e\\\u003cPlatform\u003e\\debug\\` (debug), where `\u003cname\u003e` is the manifest's `name` |\n\nThe fixed `.blocks\\` location makes installations under different IDE registry profiles (created with `bds.exe -r \u003ckey\u003e`) safe: each workspace gets its own `.blocks\\` tree, so artefacts from different profiles never collide.\n\nBoth **debug** and **release** configurations are compiled for every package. After the build, Blocks registers the DCU search paths under `HKCU\\Software\\Embarcadero\\\u003cprofile\u003e\\\u003cBdsVersion\u003e\\Library\\\u003cPlatform\u003e` together with the manifest's `sourcePath`.\n\n## Package manifest\n\nEach package in the repository is described by a JSON manifest file (`\u003cvendor\u003e.\u003cname\u003e.manifest.json`). Below is an annotated example.\n\n```jsonc\n{\n  \"$schema\": \"https://delphi-blocks.dev/schema/package.v1.json\",\n  \"id\": \"delphi-blocks.wirl\",       // vendor.name identifier\n  \"name\": \"WiRL\",                    // human-readable name\n  \"version\": \"4.6.0\",\n  \"description\": \"RESTful Library for Delphi\",\n  \"license\": \"Apache-2.0\",\n  \"homepage\": \"https://wirl.delphi-blocks.dev\",\n  \"author\": \"Paolo Rossi, Luca Minuti \u003cinfo@lucaminuti.it\u003e\",\n  \"keywords\": [\"rest\", \"http\", \"api\"],\n\n  \"repository\": {\n    \"type\": \"github\",\n    \"url\": \"https://github.com/delphi-blocks/WiRL/tree/v4.6.0\"\n  },\n\n  // \"sourcePath\" entries are registered in the Delphi library \"Browsing Path\".\n  // DCUs are written by Blocks to \u003cworkspace\u003e\\.blocks\\lib\\\u003cname\u003e\\\u003cPlatform\u003e[\\debug].\n  \"platforms\": {\n    \"Win32\": {\n      \"sourcePath\":     [\"Source\\\\Core\", \"Source\\\\Client\"],\n      \"releaseDCUPath\": [\"lib\\\\Win32\\\\release\"],\n      \"debugDCUPath\":   [\"lib\\\\Win32\\\\debug\"]\n    }\n  },\n\n  // Each entry maps to a .dproj file under packages\\\u003cfolder\u003e\\\n  \"packages\": [\n    { \"name\": \"WiRL\",       \"type\": [\"runtime\"] },\n    { \"name\": \"WiRLDesign\", \"type\": [\"designtime\"] }\n  ],\n\n  // Maps Delphi version names to the subfolder under packages\\ that contains\n  // the .dproj files for that version. A trailing + means \"this version or newer\".\n  \"packageOptions\": {\n    \"folders\": {\n      \"delphi11\":  \"11.0Alexandria\",\n      \"delphi12+\": \"12.0Athens\"\n    }\n  },\n\n  // version constraints follow semver syntax (@^x.y.z, @\u003e=x.y.z, etc.)\n  \"dependencies\": {\n    \"paolo-rossi.delphi-neon\": \"^3.1.0\"\n  }\n}\n```\n\nFor a full field-by-field reference, see [docs/manifest.md](docs/manifest.md).\n\n## Application manifest\n\nThe executable embeds `Source\\blocks.manifest`, which declares:\n\n- **Execution level** — `asInvoker` (no UAC elevation required).\n- **Supported OS** — Windows 10 and Windows 11.\n\n## Building from source\n\nAll source files are under `Source/`. The project has no external dependencies: open `Source\\Blocks.dproj` in Delphi / RAD Studio and compile. The compiled executable (`Blocks.exe`) is placed in the project root.\n\n## License\n\nApache License 2.0 — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelphi-blocks%2Fblocks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdelphi-blocks%2Fblocks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelphi-blocks%2Fblocks/lists"}