add sabre (1.8.x) via composer in the !@#$ place it wants to be
This commit is contained in:
139
vendor/sabre/vobject/bin/vobjectvalidate.php
vendored
Executable file
139
vendor/sabre/vobject/bin/vobjectvalidate.php
vendored
Executable file
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
namespace Sabre\VObject;
|
||||
|
||||
// This sucks.. we have to try to find the composer autoloader. But chances
|
||||
// are, we can't find it this way. So we'll do our bestest
|
||||
$paths = array(
|
||||
__DIR__ . '/../vendor/autoload.php', // In case vobject is cloned directly
|
||||
__DIR__ . '/../../../autoload.php', // In case vobject is a composer dependency.
|
||||
);
|
||||
|
||||
foreach($paths as $path) {
|
||||
if (file_exists($path)) {
|
||||
include $path;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!class_exists('Sabre\\VObject\\Version')) {
|
||||
fwrite(STDERR, "Composer autoloader could not be properly loaded.\n");
|
||||
die(1);
|
||||
}
|
||||
|
||||
fwrite(STDERR, "SabreTooth VObject validator " . Version::VERSION . "\n");
|
||||
|
||||
|
||||
$repair = false;
|
||||
$posArgs = array();
|
||||
|
||||
// Argument parsing:
|
||||
foreach($argv as $k=>$v) {
|
||||
|
||||
if ($k===0) {
|
||||
continue;
|
||||
}
|
||||
if (substr($v,0,2)==='--') {
|
||||
switch($v) {
|
||||
case '--repair' :
|
||||
$repair = true;
|
||||
break;
|
||||
default :
|
||||
throw new InvalidArgumentException('Unknown option: ' . $v);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
$posArgs[] = $v;
|
||||
|
||||
}
|
||||
|
||||
function help() {
|
||||
|
||||
global $argv;
|
||||
|
||||
fwrite(STDERR, <<<HELP
|
||||
Usage instructions:
|
||||
|
||||
{$argv[0]} [--repair] inputfile [outputfile]
|
||||
|
||||
inputfile Input .vcf or .ics file.
|
||||
outputfile Output .vcf or .ics file. This is only used with --repair.
|
||||
--repair Attempt to automatically repair broken files.
|
||||
|
||||
For both the output- and inputfile "-" can be specified, to use STDIN and STDOUT
|
||||
respectively.
|
||||
|
||||
All other output from this script is sent to STDERR.
|
||||
|
||||
https://github.com/fruux/sabre-vobject
|
||||
|
||||
HELP
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (count($posArgs) < 1) {
|
||||
help();
|
||||
die();
|
||||
}
|
||||
|
||||
if ($posArgs[0]!=='-') {
|
||||
$input = fopen($posArgs[0],'r');
|
||||
} else {
|
||||
$input = STDIN;
|
||||
}
|
||||
|
||||
if (isset($posArgs[1]) && $posArgs[1]!=='-') {
|
||||
$output = fopen($posArgs[1],'w');
|
||||
} else {
|
||||
$output = STDOUT;
|
||||
}
|
||||
|
||||
// This is a bit of a hack to easily support multiple objects in a single file.
|
||||
$inputStr = "BEGIN:X-SABRE-WRAPPER\r\n" . stream_get_contents($input);
|
||||
|
||||
$inputStr = rtrim($inputStr, "\r\n") . "\r\nEND:X-SABRE-WRAPPER\r\n";
|
||||
|
||||
// Now the actual work.
|
||||
$vObj = Reader::read($inputStr);
|
||||
|
||||
$objects = $vObj->children();
|
||||
|
||||
foreach($objects as $child) {
|
||||
|
||||
switch($child->name) {
|
||||
case 'VCALENDAR' :
|
||||
fwrite(STDERR, "iCalendar: " . (string)$child->VERSION . "\n");
|
||||
break;
|
||||
case 'VCARD' :
|
||||
fwrite(STDERR, "vCard: " . (string)$child->VERSION . "\n");
|
||||
break;
|
||||
default :
|
||||
fwrite(STDERR, "This was an unknown object, but it did parse. It's likely that validation will give you unexpected results.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
$options = 0;
|
||||
if ($repair) $options |= Node::REPAIR;
|
||||
|
||||
$warnings = $child->validate($options);
|
||||
|
||||
if (!count($warnings)) {
|
||||
fwrite(STDERR, "[GOOD NEWS] No warnings!\n");
|
||||
} else {
|
||||
foreach($warnings as $warn) {
|
||||
|
||||
fwrite(STDERR, $warn['message'] . "\n");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($repair) {
|
||||
fwrite($output, $child->serialize());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user