#!/usr/bin/env php testDirectory($dir); } $errors = $testHelper->errors; if (count($errors) > 0) { foreach($errors as $dir => $scriptErrors) { print "Directory '$dir'\n"; foreach($scriptErrors as $error) { print " $error\n"; } } exit(1); } print "No errors were found\n"; exit(0); class TestHelper { public $errors = array(); /** * Tests the files in a directory */ public function testDirectory($dir) { $errors = array(); $jsonData = file_get_contents($dir . "/info.json"); $data = json_decode($jsonData, true); if ($data["name"] == "") { $errors[] = "No name was entered!"; } $identifier = $data["identifier"]; if ($identifier == "") { $errors[] = "No identifier was entered!"; } elseif (preg_match('/[^a-z0-9\-_]/', $identifier)) { $errors[] = "Invalid charactes were found in identifier '$identifier'!"; } if ($data["description"] == "") { $errors[] = "No description was entered!"; } $script = $data["script"]; if ($script == "") { $errors[] = "No script was entered!"; } elseif (!file_exists($dir . "/" . $script)) { $errors[] = "Script '$script' doesn't exist!"; } if ($data["version"] == "") { $errors[] = "No version was entered!"; } if (isset($data["platforms"])) { if (!is_array($data["platforms"])) { $errors[] = "'platforms' has to be an array!"; } else { foreach ($data["platforms"] as $platform) { if (!in_array($platform, array("linux", "macos", "windows"))) { $errors[] = "Unsupported platform '$platform', only 'linux', 'macos' and 'windows' are allowed!"; } } } } if (count($errors) > 0) { $this->errors[$dir] = $errors; } } }