From 71d682b6ddca2cd1467b574c01dadd3032a0b8fb Mon Sep 17 00:00:00 2001 From: David Lima Date: Tue, 19 Aug 2025 17:43:16 -0300 Subject: [PATCH] chore: implement php-cs-fixer ci Signed-off-by: David Lima --- .github/workflows/lint-php-cs.yml | 52 +++++++ .php-cs-fixer.dist.php | 25 ++++ appinfo/routes.php | 15 +- composer.json | 62 +++++--- composer.lock | 74 +++++++++- lib/AppInfo/Application.php | 11 +- lib/Controller/ExtractionController.php | 70 +++++---- lib/Listener/LoadExtractActions.php | 20 ++- lib/Service/ExtractionService.php | 42 +++--- vendor-bin/coding-standard/composer.json | 11 ++ vendor-bin/coding-standard/composer.lock | 171 ++++++++++++++++++++++ vendor-bin/conding-standard/composer.json | 1 + vendor-bin/conding-standard/composer.lock | 18 +++ 13 files changed, 462 insertions(+), 110 deletions(-) create mode 100644 .github/workflows/lint-php-cs.yml create mode 100644 .php-cs-fixer.dist.php create mode 100644 vendor-bin/coding-standard/composer.json create mode 100644 vendor-bin/coding-standard/composer.lock create mode 100644 vendor-bin/conding-standard/composer.json create mode 100644 vendor-bin/conding-standard/composer.lock diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml new file mode 100644 index 0000000..b2d8b7b --- /dev/null +++ b/.github/workflows/lint-php-cs.yml @@ -0,0 +1,52 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT + +name: Lint php-cs + +on: pull_request + +permissions: + contents: read + +concurrency: + group: lint-php-cs-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + + name: php-cs + + steps: + - name: Checkout + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + persist-credentials: false + + - name: Get php version + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 + + - name: Set up php${{ steps.versions.outputs.php-min }} + uses: shivammathur/setup-php@ccf2c627fe61b1b4d924adfcbd19d661a18133a0 # v2.35.2 + with: + php-version: ${{ steps.versions.outputs.php-min }} + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + ini-file: development + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: | + composer remove nextcloud/ocp --dev --no-scripts + composer i + + - name: Lint + run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000..9d6b7fe --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,25 @@ +setParallelConfig(ParallelConfigFactory::detect()) + ->getFinder() + ->ignoreVCSIgnored(true) + ->notPath('js') + ->notPath('l10n') + ->notPath('src') + ->notPath('vendor') + ->notPath('vendor-bin') + ->in(__DIR__); +return $config; diff --git a/appinfo/routes.php b/appinfo/routes.php index ab2e168..8fc407b 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -1,4 +1,5 @@ [ - [ - 'name' => 'extraction#extract', - 'url' => 'ajax/extract.php', - 'verb' => 'POST' - ], - ] + 'routes' => [ + [ + 'name' => 'extraction#extract', + 'url' => 'ajax/extract.php', + 'verb' => 'POST' + ], + ] ]; diff --git a/composer.json b/composer.json index 0568508..724b4bb 100644 --- a/composer.json +++ b/composer.json @@ -1,22 +1,46 @@ { - "name": "extract/extract", - "description": "Allows to extract archive from the web interface", - "type": "project", - "license": "AGPL", - "authors": [ - { - "name": "Paul Lereverend" - } - ], - "config": { - "optimize-autoloader": true, - "sort-packages": true, - "platform": { - "php": "8.1" - } + "name": "extract/extract", + "description": "Allows to extract archive from the web interface", + "type": "project", + "license": "AGPL", + "authors": [ + { + "name": "Paul Lereverend" + } + ], + "config": { + "optimize-autoloader": true, + "sort-packages": true, + "platform": { + "php": "8.1" }, - "require": {}, - "require-dev": { - "nextcloud/ocp": "dev-stable29" + "allow-plugins": { + "bamarni/composer-bin-plugin": true + } + }, + "require": { + "bamarni/composer-bin-plugin": "^1.8" + }, + "require-dev": { + "nextcloud/ocp": "dev-stable29" + }, + "scripts": { + "bin": "echo 'bin not installed'", + "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './build/*' -not -path './tests/integration/vendor/*' -print0 | xargs -0 -n1 php -l", + "cs:check": "php-cs-fixer fix --dry-run --diff", + "cs:fix": "php-cs-fixer fix", + "post-install-cmd": [ + "@composer bin all install --ansi", + "composer dump-autoload" + ], + "post-update-cmd": [ + "composer dump-autoload" + ] + }, + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true } -} \ No newline at end of file + } +} diff --git a/composer.lock b/composer.lock index 50c0fb0..6b4ff7a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,66 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bb9eae6055756b90fcb1170214416bb5", - "packages": [], + "content-hash": "40cb40b18a86e3cbc4b735cb3b2055b0", + "packages": [ + { + "name": "bamarni/composer-bin-plugin", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/bamarni/composer-bin-plugin.git", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "ext-json": "*", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Bamarni\\Composer\\Bin\\BamarniBinPlugin" + }, + "autoload": { + "psr-4": { + "Bamarni\\Composer\\Bin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "No conflicts for your bin dependencies", + "keywords": [ + "composer", + "conflict", + "dependency", + "executable", + "isolation", + "tool" + ], + "support": { + "issues": "https://github.com/bamarni/composer-bin-plugin/issues", + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" + }, + "time": "2022-10-31T08:38:03+00:00" + } + ], "packages-dev": [ { "name": "nextcloud/ocp", @@ -13,12 +71,12 @@ "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "53059f1bbcdd624fa1783591da5575faa4284d15" + "reference": "be97344a46d9a19169e20c10ab4f7b0a2b769df7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/53059f1bbcdd624fa1783591da5575faa4284d15", - "reference": "53059f1bbcdd624fa1783591da5575faa4284d15", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/be97344a46d9a19169e20c10ab4f7b0a2b769df7", + "reference": "be97344a46d9a19169e20c10ab4f7b0a2b769df7", "shasum": "" }, "require": { @@ -49,7 +107,7 @@ "issues": "https://github.com/nextcloud-deps/ocp/issues", "source": "https://github.com/nextcloud-deps/ocp/tree/stable29" }, - "time": "2024-08-09T00:38:21+00:00" + "time": "2025-05-15T00:50:47+00:00" }, { "name": "psr/clock", @@ -260,8 +318,8 @@ }, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "platform-overrides": { "php": "8.1" }, diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index d855943..432575f 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -1,4 +1,5 @@ @@ -22,15 +23,15 @@ use OCA\Extract\Listener\LoadExtractActions; use OCA\Files\Event\LoadAdditionalScriptsEvent; -use OCP\AppFramework\Bootstrap\IBootstrap; -use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; -use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IRegistrationContext; -class Application extends App implements IBootstrap { +class Application extends App implements IBootstrap { - public const APP_ID = "extract"; + public const APP_ID = 'extract'; public function __construct(array $urlParams = []) { parent::__construct(self::APP_ID, $urlParams); diff --git a/lib/Controller/ExtractionController.php b/lib/Controller/ExtractionController.php index d4f0aca..f98a99f 100644 --- a/lib/Controller/ExtractionController.php +++ b/lib/Controller/ExtractionController.php @@ -5,25 +5,24 @@ // Only in order to access Filesystem::isFileBlacklisted(). use OC\Files\Filesystem; -use OCP\IRequest; -use OCP\AppFramework\Http\DataResponse; +use OCA\Extract\Service\ExtractionService; use OCP\AppFramework\Controller; -use OCP\Files\NotFoundException; -use OCP\Files\IRootFolder; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\Encryption\IManager; use OCP\Files\Folder; -use OCP\IL10N; -use OCP\Encryption\IManager; +use OCP\Files\InvalidPathException; +use OCP\Files\IRootFolder; -use Psr\Log\LoggerInterface; +use OCP\Files\NotFoundException; -use OCA\Extract\Service\ExtractionService; -use OCP\AppFramework\Http; -use OCP\Files\InvalidPathException; +use OCP\IL10N; +use OCP\IRequest; use OCP\IURLGenerator; +use Psr\Log\LoggerInterface; -class ExtractionController extends Controller -{ +class ExtractionController extends Controller { /** @var IL10N */ private $l; @@ -43,22 +42,22 @@ class ExtractionController extends Controller /** @var string */ private $userId; - /** @var ExtractionService */ + /** @var ExtractionService */ private $extractionService; /** @var IURLGenerator */ private IURLGenerator $urlGenerator; /** @var Array $mimeTypes */ - private Array $mimeTypes = [ - "application/zip" => "zip", - "application/x-rar-compressed" => "rar", - "application/x-tar" => "other", - "application/x-7z-compressed" => "other", - "application/x-bzip2" => "other", - "application/x-deb" => "other", - "application/x-gzip" => "other", - "application/x-compressed" => "other" + private array $mimeTypes = [ + 'application/zip' => 'zip', + 'application/x-rar-compressed' => 'rar', + 'application/x-tar' => 'other', + 'application/x-7z-compressed' => 'other', + 'application/x-bzip2' => 'other', + 'application/x-deb' => 'other', + 'application/x-gzip' => 'other', + 'application/x-compressed' => 'other' ]; public function __construct( @@ -83,8 +82,7 @@ public function __construct( $this->urlGenerator = $urlGenerator; } - private function getFile($directory, $fileName) - { + private function getFile($directory, $fileName) { $fileNode = $this->userFolder->get($directory . '/' . $fileName); return $fileNode->getStorage()->getLocalFile($fileNode->getInternalPath()); } @@ -97,13 +95,12 @@ private function getFile($directory, $fileName) * @param srting $directory The Nextcloud directory name. * * @param string $extractTo The local file-system path of the directory - * with the extracted data, i.e. this is the OS path. + * with the extracted data, i.e. this is the OS path. * * @param null|string $tmpPath The Nextcloud temporary path. This is only - * non-null when extracting from external storage. + * non-null when extracting from external storage. */ - private function postExtract(string $fileName, string $directory, string $extractTo, ?string $tmpPath) - { + private function postExtract(string $fileName, string $directory, string $extractTo, ?string $tmpPath) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($extractTo)); foreach ($iterator as $file) { @@ -130,13 +127,12 @@ private function postExtract(string $fileName, string $directory, string $extrac * * @NoAdminRequired */ - public function extract($nameOfFile, $directory, $external, $mime) - { + public function extract($nameOfFile, $directory, $external, $mime) { $type = $this->mimeTypes[$mime]; if ($this->encryptionManager->isEnabled()) { - $response = array(); - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Encryption is not supported yet"))); + $response = []; + $response = array_merge($response, ['code' => 0, 'desc' => $this->l->t('Encryption is not supported yet')]); return new DataResponse($response); } $file = $this->getFile($directory, $nameOfFile); @@ -153,7 +149,7 @@ public function extract($nameOfFile, $directory, $external, $mime) } catch (\OCP\Files\NotFoundException $e) { $appDirectory = $this->rootFolder->newFolder($appPath); } - if (pathinfo($fileName, PATHINFO_EXTENSION) == "tar") { + if (pathinfo($fileName, PATHINFO_EXTENSION) == 'tar') { $archiveDir = pathinfo($fileName, PATHINFO_FILENAME); } else { $archiveDir = $fileName; @@ -181,7 +177,7 @@ public function extract($nameOfFile, $directory, $external, $mime) break; default: // Check if the file is .tar.gz in order to do the extraction on a single step - if (pathinfo($fileName, PATHINFO_EXTENSION) == "tar") { + if (pathinfo($fileName, PATHINFO_EXTENSION) == 'tar') { $cleanFileName = pathinfo($fileName, PATHINFO_FILENAME); $extractTo = dirname($extractTo) . '/' . $cleanFileName; $response = $this->extractionService->extractOther($file, $extractTo); @@ -201,7 +197,7 @@ public function extract($nameOfFile, $directory, $external, $mime) try { // collect and return the properties of the resulting folder node - $extractDir = '/' . trim($directory . "/" . $fileName, '/'); + $extractDir = '/' . trim($directory . '/' . $fileName, '/'); $node = $this->userFolder->get($extractDir); $fileId = $node->getId(); $owner = $node->getOwner()->getUID(); @@ -224,10 +220,10 @@ public function extract($nameOfFile, $directory, $external, $mime) $response['extracted'] = $folder; } catch (NotFoundException $e) { - $this->logger->debug(" - NotFoundException: " . print_r($e->getMessage(), true)); + $this->logger->debug(' - NotFoundException: ' . print_r($e->getMessage(), true)); return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (InvalidPathException $e) { - $this->logger->debug(" - InvalidPathException: " . print_r($e->getMessage(), true)); + $this->logger->debug(' - InvalidPathException: ' . print_r($e->getMessage(), true)); return new DataResponse([], Http::STATUS_NOT_FOUND); } diff --git a/lib/Listener/LoadExtractActions.php b/lib/Listener/LoadExtractActions.php index e832d2b..b22e7b3 100644 --- a/lib/Listener/LoadExtractActions.php +++ b/lib/Listener/LoadExtractActions.php @@ -15,16 +15,14 @@ use OCP\EventDispatcher\IEventListener; use OCP\Util; -class LoadExtractActions implements IEventListener -{ - public function handle(Event $event): void - { - if (!($event instanceof LoadAdditionalScriptsEvent)) { - return; - } +class LoadExtractActions implements IEventListener { + public function handle(Event $event): void { + if (!($event instanceof LoadAdditionalScriptsEvent)) { + return; + } - Util::addInitScript(Application::APP_ID, 'extract-init'); - Util::addScript(Application::APP_ID, 'extract-extractAction'); - Util::addStyle(Application::APP_ID, 'style'); - } + Util::addInitScript(Application::APP_ID, 'extract-init'); + Util::addScript(Application::APP_ID, 'extract-extractAction'); + Util::addStyle(Application::APP_ID, 'style'); + } } diff --git a/lib/Service/ExtractionService.php b/lib/Service/ExtractionService.php index 0d58e82..a774e79 100644 --- a/lib/Service/ExtractionService.php +++ b/lib/Service/ExtractionService.php @@ -27,8 +27,7 @@ use Psr\Log\LoggerInterface; use ZipArchive; -class ExtractionService -{ +class ExtractionService { /** @var IL10N */ private $l; @@ -38,42 +37,40 @@ class ExtractionService public function __construct( IL10N $l, - LoggerInterface $logger + LoggerInterface $logger, ) { $this->l = $l; $this->logger = $logger; } - public function extractZip($file, $extractTo) - { - $response = array(); + public function extractZip($file, $extractTo) { + $response = []; - if (!extension_loaded("zip")) { - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Zip extension is not available"))); + if (!extension_loaded('zip')) { + $response = array_merge($response, ['code' => 0, 'desc' => $this->l->t('Zip extension is not available')]); return $response; } $zip = new ZipArchive(); - if (!$zip->open($file) === TRUE) { - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Cannot open Zip file"))); + if (!$zip->open($file) === true) { + $response = array_merge($response, ['code' => 0, 'desc' => $this->l->t('Cannot open Zip file')]); return $response; } $success = $zip->extractTo($extractTo); $zip->close(); - $response = array_merge($response, array("code" => $success)); + $response = array_merge($response, ['code' => $success]); return $response; } - public function extractRar($file, $extractTo) - { - $response = array(); + public function extractRar($file, $extractTo) { + $response = []; - if (!extension_loaded("rar")) { + if (!extension_loaded('rar')) { exec('unrar x ' . escapeshellarg($file) . ' -R ' . escapeshellarg($extractTo) . '/ -o+', $output, $return); if (sizeof($output) <= 4) { - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Oops something went wrong. Check that you have rar extension or unrar installed"))); + $response = array_merge($response, ['code' => 0, 'desc' => $this->l->t('Oops something went wrong. Check that you have rar extension or unrar installed')]); return $response; } } else { @@ -86,22 +83,21 @@ public function extractRar($file, $extractTo) rar_close($rar_file); } - $response = array_merge($response, array("code" => 1)); + $response = array_merge($response, ['code' => 1]); return $response; } - public function extractOther($file, $extractTo) - { - $response = array(); + public function extractOther($file, $extractTo) { + $response = []; exec('7za -y x ' . escapeshellarg($file) . ' -o' . escapeshellarg($extractTo), $output, $return); if (sizeof($output) <= 5) { - $response = array_merge($response, array("code" => 0, "desc" => $this->l->t("Oops something went wrong."))); - $this->logger->error("Is 7-Zip installed? Output: " . print_r($output, true)); + $response = array_merge($response, ['code' => 0, 'desc' => $this->l->t('Oops something went wrong.')]); + $this->logger->error('Is 7-Zip installed? Output: ' . print_r($output, true)); return $response; } - $response = array_merge($response, array("code" => 1)); + $response = array_merge($response, ['code' => 1]); return $response; } } diff --git a/vendor-bin/coding-standard/composer.json b/vendor-bin/coding-standard/composer.json new file mode 100644 index 0000000..0fd2672 --- /dev/null +++ b/vendor-bin/coding-standard/composer.json @@ -0,0 +1,11 @@ +{ + "require-dev": { + "nextcloud/coding-standard": "^1.4", + "friendsofphp/php-cs-fixer": "^3.86" + }, + "config": { + "platform": { + "php": "8.1" + } + } +} diff --git a/vendor-bin/coding-standard/composer.lock b/vendor-bin/coding-standard/composer.lock new file mode 100644 index 0000000..1a9547b --- /dev/null +++ b/vendor-bin/coding-standard/composer.lock @@ -0,0 +1,171 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "27509d9bf52e82053aed25fad39ef9f8", + "packages": [], + "packages-dev": [ + { + "name": "kubawerlos/php-cs-fixer-custom-fixers", + "version": "v3.32.0", + "source": { + "type": "git", + "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", + "reference": "c3a815a496f5cd6356726902f421013cbb7ba3f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/c3a815a496f5cd6356726902f421013cbb7ba3f3", + "reference": "c3a815a496f5cd6356726902f421013cbb7ba3f3", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "ext-tokenizer": "*", + "friendsofphp/php-cs-fixer": "^3.85", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6.22 || 10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpCsFixerCustomFixers\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kuba Werłos", + "email": "werlos@gmail.com" + } + ], + "description": "A set of custom fixers for PHP CS Fixer", + "support": { + "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", + "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.32.0" + }, + "funding": [ + { + "url": "https://github.com/kubawerlos", + "type": "github" + } + ], + "time": "2025-08-01T06:10:10+00:00" + }, + { + "name": "nextcloud/coding-standard", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/nextcloud/coding-standard.git", + "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/8e06808c1423e9208d63d1bd205b9a38bd400011", + "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011", + "shasum": "" + }, + "require": { + "kubawerlos/php-cs-fixer-custom-fixers": "^3.22", + "php": "^8.0", + "php-cs-fixer/shim": "^3.17" + }, + "type": "library", + "autoload": { + "psr-4": { + "Nextcloud\\CodingStandard\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christoph Wurst", + "email": "christoph@winzerhof-wurst.at" + } + ], + "description": "Nextcloud coding standards for the php cs fixer", + "keywords": [ + "dev" + ], + "support": { + "issues": "https://github.com/nextcloud/coding-standard/issues", + "source": "https://github.com/nextcloud/coding-standard/tree/v1.4.0" + }, + "time": "2025-06-19T12:27:27+00:00" + }, + { + "name": "php-cs-fixer/shim", + "version": "v3.86.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/shim.git", + "reference": "b43770ec215a30afff187ac273da6b43575c0ae3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/b43770ec215a30afff187ac273da6b43575c0ae3", + "reference": "b43770ec215a30afff187ac273da6b43575c0ae3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "replace": { + "friendsofphp/php-cs-fixer": "self.version" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer", + "php-cs-fixer.phar" + ], + "type": "application", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "support": { + "issues": "https://github.com/PHP-CS-Fixer/shim/issues", + "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.86.0" + }, + "time": "2025-08-13T22:37:38+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "platform-overrides": { + "php": "8.1" + }, + "plugin-api-version": "2.6.0" +} diff --git a/vendor-bin/conding-standard/composer.json b/vendor-bin/conding-standard/composer.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/vendor-bin/conding-standard/composer.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/vendor-bin/conding-standard/composer.lock b/vendor-bin/conding-standard/composer.lock new file mode 100644 index 0000000..b383d88 --- /dev/null +++ b/vendor-bin/conding-standard/composer.lock @@ -0,0 +1,18 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d751713988987e9331980363e24189ce", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +}