diff --git a/scripts/util/add_macro.php b/scripts/util/add_macro.php new file mode 100755 index 0000000000..cd35588bd5 --- /dev/null +++ b/scripts/util/add_macro.php @@ -0,0 +1,80 @@ +#!/usr/bin/env php +setTagline('load files as image macros'); +$args->setSynopsis(<<parseStandardArguments(); + +$args->parse( + array( + array( + 'name' => 'as', + 'param' => 'name', + 'help' => 'Use a specific name instead of the first part of the image '. + 'name.', + ), + array( + 'name' => 'more', + 'wildcard' => true, + ), + )); + +$more = $args->getArg('more'); +if (count($more) !== 1) { + $args->printHelpAndExit(); +} + +$path = head($more); +$data = Filesystem::readFile($path); + +$name = $args->getArg('as'); +if ($name === null) { + $name = head(explode('.', basename($path))); +} + +$existing = id(new PhabricatorFileImageMacro())->loadOneWhere( + 'name = %s', + $name); +if ($existing) { + throw new Exception("A macro already exists with the name '{$name}'!"); +} + +$file = PhabricatorFile::newFromFileData( + $data, + array( + 'name' => basename($path), + )); + +$macro = id(new PhabricatorFileImageMacro()) + ->setFilePHID($file->getPHID()) + ->setName($name) + ->save(); + +$id = $file->getID(); + +echo "Added macro '{$name}' (F{$id}).\n";