65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | #!/usr/bin/env php
 | ||
|  | <?php | ||
|  | 
 | ||
|  | $root = dirname(dirname(dirname(__FILE__))); | ||
|  | require_once $root.'/scripts/__init_script__.php'; | ||
|  | 
 | ||
|  | $args = new PhutilArgumentParser($argv); | ||
|  | $args->setTagline('load files as image macros'); | ||
|  | $args->setSynopsis(<<<EOHELP | ||
|  | **add_macro.php** __image__ [--as __name__] | ||
|  |     Add an image macro. This can be useful for importing a large number | ||
|  |     of macros. | ||
|  | EOHELP | ||
|  | ); | ||
|  | $args->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"; |