Skip to content

Instantly share code, notes, and snippets.

@jaso514
Last active August 29, 2023 13:33
Show Gist options
  • Save jaso514/6ce0c153ece7c4461fa39cf4e6008f59 to your computer and use it in GitHub Desktop.
Save jaso514/6ce0c153ece7c4461fa39cf4e6008f59 to your computer and use it in GitHub Desktop.
Get the list of extensions in Magento
<?php
// add the vendors added in the require segment in the composer.json
$vendors = [
'amasty',
'allure-framework',
'aitoc',
'ecommerce121',
'mageplaza',
'sinergi'
];
$baseDir = './';
if (isset($argv[1])) {
// full path
$baseDir = "{$argv[1]}/";
}
$vendorDir = "{$baseDir}vendor/";
if (!is_dir($vendorDir)) {
echo "Invalid Directory\n" ;
}
$composerJson = file_get_contents($baseDir . "composer.json");
$composerJson = json_decode($composerJson, true);
$extensionsRequired = $composerJson['require'];
$totalExtensions = 0;
foreach ($vendors as $vendor) {
echo "\n$vendor\n";
$dir = $vendorDir . $vendor . "/";
if (!is_dir($dir)) {
echo "Folder not found $vendor\n";
continue;
}
$items = scandir($dir);
for ($i=2; $i<count($items); $i++) {
$extensionDir = $dir . $items[$i];
if (!is_dir($extensionDir) || !file_exists("{$extensionDir}/composer.json")) {
echo "\ncomposer.json not found in $vendor.\n";
continue;
}
$json = file_get_contents("{$extensionDir}/composer.json");
$jsonData = json_decode($json, true);
if (!array_key_exists($jsonData['name'], $extensionsRequired)) {
continue;
}
$version = isset($jsonData['version']) ? $jsonData['version'] : 'No Version';
if (isset($jsonData['description'])) {
echo "- {$jsonData['name']} ($version) {$jsonData['description']} \n";
} else {
echo "- {$jsonData['name']} ($version)\n";
}
$totalExtensions++;
}
}
// app/code
$codeDir = "{$baseDir}app/code/";
$codeVendors = scandir($codeDir);
for ($i=2; $i<count($codeVendors); $i++) {
$vendorFolder = $codeDir . $codeVendors[$i];
if (!is_dir($vendorFolder)) {
echo "\nFolder $vendor not found.\n";
continue;
}
echo "\n" . $codeVendors[$i] . "\n";
$codeExtensions = scandir($vendorFolder . "/");
for ($k=2; $k<count($codeExtensions); $k++) {
$extensionDir = $vendorFolder . "/" . $codeExtensions[$k];
if (!is_dir($extensionDir)) {
continue;
}
if (!file_exists("{$extensionDir}/composer.json")) {
echo "- $codeExtensions[$k].\n";
}
$json = file_get_contents("{$extensionDir}/composer.json");
$jsonData = json_decode($json, true);
$version = isset($jsonData['version']) ? $jsonData['version'] : 'No Version';
if (isset($jsonData['description'])) {
echo "- {$jsonData['name']} ($version) {$jsonData['description']} \n";
} else {
echo "- {$jsonData['name']} ($version)\n";
}
$totalExtensions++;
}
}
echo "\n\n Total: {$totalExtensions} \n";
@jaso514
Copy link
Author

jaso514 commented Jul 11, 2023

Put the script in the same level of the magento code and execute with :
php getExtensions [./|<path_to_project>]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment