mirror of
https://github.com/marty-oehme/scripts.git
synced 2024-12-22 07:58:08 +00:00
80 lines
2.1 KiB
PHP
Executable file
80 lines
2.1 KiB
PHP
Executable file
#!/usr/bin/env php
|
|
<?php
|
|
|
|
$dirs = array_filter(glob('*'), 'is_dir');
|
|
$testHelper = new TestHelper();
|
|
|
|
foreach ($dirs as $dir) {
|
|
$testHelper->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;
|
|
}
|
|
}
|
|
}
|