Browse Source

build: suite de 105253d, partie composer.

master
JamesRezo 1 week ago
parent
commit
1bc21d8800
  1. 56
      README.md
  2. 45
      composer.json
  3. 6
      inc/archives.php
  4. 5
      phpstan-baseline.neon
  5. 3
      phpstan.neon.dist
  6. 4
      src/TarArchive.php
  7. 2
      src/TgzArchive.php
  8. 5
      tests/sdk.php

56
README.md

@ -1,3 +1,59 @@
# Plugin Archiviste
Ce plugin SPIP fournit une API pour générer ou décompresser des archives (zip, tar)
À partir de la version 2.3, il pourra être installé en tant que package composer.
Il y a donc 2 manières de l'utiliser :
Historiquement, avec la fonction SPIP `include_spip()` :
```php
<?php
use Spip\Archives\SpipArchiches
include_spip('inc/archives');
// ...
$archive = new SpipArchives($fichier);
```
Quand composer pourra être utilisé pour installer des packages dans SPIP[^1] :
```php
<?php
use Spip\Archiver\SpipArchiver
// ...
$archive = new SpipArchiver($fichier);
```
L'objet `$archive` répond à l'interface [ArchiverInterface](src/ArchiverInterface.php)
## Contribution
Cette librairie est développée avec les outils PHP_CodeSniffer, PHPStan et PHPUnit.
Vous pouvez vérifier que vos contributions n'introduisent pas de régressions avant de soumettre vos propositions de changement :
```bash
composer install
# Respect des coding standards SPIP
vendor/bin/phpcs
# Analyse statique
XDEBUG_MODE=off vendor/bin/phpstan
# Tests Unitaires (et calcul du taux de couverture avec Xdebug)
XDEBUG_MODE=coverage vendor/bin/phpunit
```
Fichier à consulter après l'exécution des commandes ci-dessus :
- `.phpunit.cache/html/index.html`
- `.php_cs.txt`
## Notes
[^1] : l'archive spip classique (par exemple, [SPIP 4.2.2](https://files.spip.net/spip/archives/spip-v4.2.2.zip)) intègre l'autoloader composer. Il est donc présent lors d'une mise à jour ou une installation via [spip_loader](https://www.spip.net/fr_article5705.html). Si vous avez installé SPIP via `git`, n'oubliez pas d'exécuter la commande `composer install` (ou `composer install --no-dev`), à la racine de votre projet SPIP. voir [Composer](https://getcomposer.org/doc/00-intro.md).

45
composer.json

@ -2,6 +2,27 @@
"name": "spip/archiviste",
"description": "Gérer des archives de fichiers Zip, Tar, ...",
"license": "GPL-3.0-or-later",
"type": "spip-plugin",
"keywords": ["zip", "tar", "archives"],
"homepage": "https://git.spip.net/spip/archiviste",
"authors": [{
"name": "SPIP Team",
"role": "Maintainer",
"homepage": "https://discuter.spip.net/c/spip-dev/5"
}],
"require": {
"php": "^7.4 || ^8.0",
"ext-phar": "*",
"ext-zip": "*",
"ext-zlib": "*"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.6",
"rector/rector": "^0.12.23",
"spip/coding-standards": "^1.2"
},
"autoload": {
"psr-4": {
"Spip\\Archiver\\": "src/"
@ -12,30 +33,18 @@
"Spip\\Archiver\\Tests\\": "tests/"
}
},
"require": {
"php": "^7.4 || ^8.0",
"ext-zip": "*",
"ext-zlib": "*",
"ext-phar": "*"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"spip/coding-standards": "^1.2",
"phpstan/phpstan": "^1.4",
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
"rector/rector": "^0.12.13"
},
"config": {
"platform": {
"php": "7.4.27"
},
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
},
"platform": {
"php": "7.4.33"
},
"platform-check": true
},
"extra": {
"branch-alias": {
"dev-master": "2.2.x-dev"
"dev-master": "2.3.x-dev"
}
}
}

6
inc/archives.php

@ -9,6 +9,9 @@
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
***************************************************************************/
/**
* @deprecated 2.3 use Spip\Archiver\SpipArchiver
*/
namespace Spip\Archives;
include_spip('src/ArchiverInterface');
@ -23,7 +26,8 @@ include_spip('src/SpipArchiver');
use Spip\Archiver\SpipArchiver;
/**
* Point d'entrée de la gestion des archives compressées de SPIP
* Point d'entrée de la gestion des archives compressées de SPIP jusqu'à la version 2.2
* @deprecated 2.3 use Spip\Archiver\SpipArchiver
*/
class SpipArchives extends SpipArchiver
{

5
phpstan-baseline.neon

@ -1,10 +1,5 @@
parameters:
ignoreErrors:
-
message: "#^Function include_spip not found\\.$#"
count: 8
path: inc/archives.php
-
message: "#^Parameter \\#3 \\$alias of class PharData constructor expects string, null given\\.$#"
count: 1

3
phpstan.neon.dist

@ -2,6 +2,9 @@ includes:
- phpstan-baseline.neon
parameters:
phpVersion: 70400
bootstrapFiles:
- tests/sdk.php
paths:
- inc
- src

4
src/TarArchive.php

@ -14,7 +14,7 @@ class TarArchive implements ArchiveInterface
protected NoDotFilterIterator $source;
protected bool $gzCompress = false;
protected bool $gz_compress = false;
public function open(string $filename, string $mode): int {
$this->filename = $filename;
@ -23,7 +23,7 @@ class TarArchive implements ArchiveInterface
$this->filename,
\FilesystemIterator::SKIP_DOTS | \FilesystemIterator::UNIX_PATHS,
null,
2
\Phar::TAR
);
return 1;

2
src/TgzArchive.php

@ -8,5 +8,5 @@ namespace Spip\Archiver;
*/
class TgzArchive extends TarArchive implements ArchiveInterface
{
protected bool $gzCompress = true;
protected bool $gz_compress = true;
}

5
tests/sdk.php

@ -0,0 +1,5 @@
<?php
function include_spip($f, $include = true) {
}
Loading…
Cancel
Save