Skip to content

continuous-delphi/delphi-inspect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

delphi-inspect

delphi-inspect logo

Delphi CI GitHub Release License: MIT Ask DeepWiki Continuous Delphi

Deterministic Delphi toolchain discovery and normalization for Delphi systems.

TLDR;

# Object mode (default) -- returns PowerShell objects; pipe, filter, or assign directly
$ver  = pwsh delphi-inspect.ps1 -Version
$d7   = pwsh delphi-inspect.ps1 -Resolve D7
$all  = pwsh delphi-inspect.ps1 -ListKnown
$inst = pwsh delphi-inspect.ps1 -ListInstalled -Platform Win32 -BuildSystem DCC -Readiness all
$best = pwsh delphi-inspect.ps1 -DetectLatest

# Example using MSBuild with Delphi 13 Florence
# Use "Locate" to pin a Delphi version within your script so it can be run
# on developer machines that may have custom RAD Studio installation paths
# Locate with: VER370, Florence, Delphi 13, or 13 Florence...whichever is your preference
./delphi-inspect.ps1 -Locate -Name Florence | ./delphi-msbuild.ps1 -ProjectFile 'MyProj.dproj' -Platform Win64


# Text format -- human-readable output
pwsh delphi-inspect.ps1
pwsh delphi-inspect.ps1 -Version -Format text
pwsh delphi-inspect.ps1 -Resolve D7 -Format text
pwsh delphi-inspect.ps1 -Resolve -Name D7 -Format text
pwsh delphi-inspect.ps1 -Resolve "Delphi 11" -Format text
pwsh delphi-inspect.ps1 -ListKnown -Format text
pwsh delphi-inspect.ps1 -ListInstalled -Platform Win32 -BuildSystem DCC -Format text
pwsh delphi-inspect.ps1 -ListInstalled -Platform Win32 -BuildSystem DCC -Readiness all -Format text
pwsh delphi-inspect.ps1 -DetectLatest -Format text
pwsh delphi-inspect.ps1 -DetectLatest -Platform Win64 -BuildSystem DCC -Format text

# JSON format -- machine envelope for CI pipelines
pwsh delphi-inspect.ps1 -Resolve D7 -Format json
pwsh delphi-inspect.ps1 -ListKnown -Format json
pwsh delphi-inspect.ps1 -ListInstalled -Platform Win32 -BuildSystem MSBuild -Readiness all -Format json
pwsh delphi-inspect.ps1 -DetectLatest -Platform Win64 -BuildSystem DCC -Format json

Philosophy

Continuous Delphi meets Delphi developers where they are.

Whether you are building manually on a desktop PC, running FinalBuilder scripts on a cloned server, or ready to adopt (or have already adopted) GitHub Actions, the tools here work at your level today without requiring you to change everything at once.

The goal is not to replace your workflow - the goal is to incrementally enhance it.

PowerShell Compatibility

Runs on the widely available Windows PowerShell 5.1 (powershell.exe) and the newer PowerShell 7+ (pwsh).

Note: the test suite requires pwsh.

Commands

Command Description
Version Print tool version and dataset metadata
ListKnown List all known Delphi versions from the dataset
ListInstalled List all Delphi versions with readiness state
DetectLatest Return the single highest-versioned ready install
Locate Return the installation root directory for a specific installed version
Resolve Resolve an alias or VER### to a canonical entry

See docs/commands.md for full command reference including switches, output formats, exit codes, and any functionality differences between implementations.

Output formats

-Format controls the output mode. Valid values:

  • object (default) -- emits PowerShell objects to the pipeline. Pipe, filter, or assign directly. No text formatting is applied.
  • text -- human-readable formatted output, one record per line or block.
  • json -- machine envelope with ok/command/tool/result structure. Suitable for CI pipelines and non-PowerShell consumers.

Machine output

Property names in result match the dataset field names exactly.

Success (-Version):

{
  "ok": true,
  "command": "version",
  "tool": {
    "name": "delphi-inspect",
    "version": "X.Y.Z"
  },
  "result": {
    "schemaVersion": "1.0.0",
    "dataVersion": "0.1.0",
    "generatedUtcDate": "YYYY-MM-DD"
  }
}

Success (-Resolve):

{
  "ok": true,
  "command": "resolve",
  "tool": {
    "name": "delphi-inspect",
    "version": "X.Y.Z"
  },
  "result": {
    "verDefine": "VER150",
    "productName": "Delphi 7",
    "compilerVersion": "15.0",
    "packageVersion": "70",
    "regKeyRelativePath": "\\Software\\Borland\\Delphi\\7.0",
    "aliases": ["VER150", "Delphi7", "D7"]
  }
}

All result fields are always present in JSON output; optional fields that are absent in the dataset appear as null rather than being omitted.

Error:

{
  "ok": false,
  "command": "version",
  "tool": {
    "name": "delphi-inspect",
    "version": "X.Y.Z"
  },
  "error": {
    "code": 3,
    "message": "Data file not found: ..."
  }
}

Dataset

The implementations consumes the canonical dataset from delphi-compiler-versions. The JSON dataset is the single source of truth.

todo

The gen/ folder produces a standalone pwsh script with the dataset embedded as a PowerShell here-string.

Artifacts support the same three-tier dataset resolution priority. A newer delphi-compiler-versions.json file found will take precedence over the embedded data without regenerating or recompiling.


continuous-delphi logo

Part of Continuous Delphi

This tool is part of the Continuous-Delphi ecosystem, focused on improving engineering discipline for long-lived Delphi systems.

About

[TOOL] Inspect Delphi installations by discovering installed versions and resolving compiler aliases for consistent toolchain selection.

Topics

Resources

License

Stars

Watchers

Forks

Contributors