Skip to content

Commit

Permalink
Merge pull request #5 from cspray/feature/configure-scan-paths
Browse files Browse the repository at this point in the history
Ability to definie additional scan paths
  • Loading branch information
cspray committed May 14, 2023
2 parents 5775465 + 7ee9cdc commit 972339d
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
25 changes: 24 additions & 1 deletion bin/architectural-decisions
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

use Cspray\AnnotatedTarget\PhpParserAnnotatedTargetParser;
use Cspray\ArchitecturalDecision\ArchitecturalDecisionAttributeGatherer;
use Cspray\ArchitecturalDecision\Initializer;
use Cspray\ArchitecturalDecision\SourceArchitecturalDecisionAttributeRegistry;
use Cspray\ArchitecturalDecision\XmlDocumentGenerator;

Expand Down Expand Up @@ -34,6 +35,24 @@ foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($composerDirs)
$paths[] = $rootDir . '/' . $composerDir;
}

$initializers = $composer['extra']['$architecturalDecision']['initializers'] ?? [];

foreach ($initializers as $initializerClass) {
$initializerClass = (string) $initializerClass;
if (!class_exists($initializerClass)) {
echo 'Your configured initializer ' . $initializerClass . ' is not an autoloadable class.';
exit(255);
}

if (!is_subclass_of($initializerClass, Initializer::class)) {
echo 'Your configured initializer ' . $initializerClass . ' MUST extend ' . Initializer::class;
exit(255);
}

$initializer = new $initializerClass();
$paths = [...$paths, ...$initializer->getAdditionalScanPaths()];
}

$attributes = (new SourceArchitecturalDecisionAttributeRegistry($paths))->getArchitecturalDecisionAttributes();
if (count($attributes) === 0) {
echo 'You must implement an ArchitecturalDecisionRecord in your codebase before running this command!';
Expand All @@ -46,7 +65,11 @@ foreach ($attributes as $attribute) {
}

if (file_exists($rootDir . '/architectural-decisions.xml')) {
unlink($rootDir . '/architectural-decisions.xml');
if (file_exists($rootDir . '/architectural-decisions.xml.bak')) {
echo 'Please ensure there are no architectural-decisions.xml.bak files before running this command.';
exit(255);
}
rename($rootDir . '/architectural-decisions.xml', $rootDir . '/architectural-decisions.xml.bak');
}

$xmlGenerator = new XmlDocumentGenerator($gatherer);
Expand Down
14 changes: 14 additions & 0 deletions src/Initializer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php declare(strict_types=1);

namespace Cspray\ArchitecturalDecision;

abstract class Initializer {

final public function __construct() {}

/**
* @return list<non-empty-string>
*/
abstract public function getAdditionalScanPaths() : array;

}

0 comments on commit 972339d

Please sign in to comment.