code-lts/cli-tools

CLI tools to manage output errors formatting for junit, checkstyle, teamcity, gitlab and github error formats

Maintainers

πŸ‘ wdes

Package info

github.com/code-lts/cli-tools

pkg:composer/code-lts/cli-tools

Statistics

Installs: 104 688

Dependents: 1

Suggesters: 0

Stars: 2

Open Issues: 0

v1.7.0 2026-01-22 09:28 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MPL-2.0 d4e4f00060468b34c129f4a5424171b4a43a9d82

cligithubjunitgitlabformattersteamcitycheckstyle

This package is auto-updated.

Last update: 2026-05-22 10:19:35 UTC


README

πŸ‘ codecov
πŸ‘ Version
πŸ‘ License

CLI tools to manage output errors formatting for junit, checkstyle, teamcity, gitlab and github error formats.

Motivation

Have formatters that I can re-use in projects to format errors. Some code is copied from phpstan. See #4122

Example usages

Format errors

use CodeLts\CliTools\Error;
use CodeLts\CliTools\AnalysisResult;
use CodeLts\CliTools\OutputFormat;
use CodeLts\CliTools\Exceptions\FormatNotFoundException;

// if the value is from an user input
// Will throw FormatNotFoundException
// See valid formats at OutputFormat::VALID_OUTPUT_FORMATS
OutputFormat::checkOutputFormatIsValid('notValidFormat');

$fileSpecificErrors = [
 new Error(
 'My error message',
 '/file/path/to/File.php',
 15 // Line number
 ),
];

$notFileSpecificErrors = [
 'Just an error message',
];

$internalErrors = [
 'Oops the internal engine did crash !',
];

$warnings = [
 'I warn you that most of this code is tested',
 'Contributions are very welcome',
];

$analysisResult = new AnalysisResult(
 $fileSpecificErrors,
 $notFileSpecificErrors,
 $internalErrors,
 $warnings
);

OutputFormat::displayUserChoiceFormat(
 OutputFormat::OUTPUT_FORMAT_TABLE,// The phpstan table error format, you can have a lot more formats in OutputFormat::VALID_OUTPUT_FORMATS
 $analysisResult,
 $this->sourceRootDirectory,// can be null, if null the error paths will not be pretty and will be displayed as given
 $this->output // Implement CodeLts\CliTools\Output or use CodeLts\CliTools\Symfony\SymfonyOutput
);

Read/Write files

use CodeLts\CliTools\File\FileReader;
use CodeLts\CliTools\File\FileWriter;

$fileName = 'myFile.txt';

FileWriter::write(
 $fileName,
 'Some data, blob, blob, blob.'
);

FileReader::read($fileName);// -> Some data, blob, blob, blob.

ANSI codes

use CodeLts\CliTools\File\AnsiEscapeSequences;

$this->output->writeFormatted(AnsiEscapeSequences::ERASE_TO_LINE_END);

Detect a CI

use CodeLts\CliTools\Utils;

// See supported CIs at https://github.com/OndraM/ci-detector#supported-continuous-integration-servers

Utils::isCiDetected(); // true of false