156 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 	require_once 'cli.php';
 | |
| 	
 | |
| 	/**
 | |
| 	 * Prints usage
 | |
| 	 */
 | |
| 	function usage() {
 | |
| 		$usage = new Usage(
 | |
| 			'Productizer 1.0',
 | |
| 			'php ' . basename(__FIlE__),
 | |
| 			'Creates the equivalent of C#.NET\'s "AssemblyInfo.cs"',
 | |
| 			'Tommy Montgomery',
 | |
| 			'2009'
 | |
| 		);
 | |
| 		
 | |
| 		global $switches;
 | |
| 		$usage->setSwitches($switches);
 | |
| 		
 | |
| 		echo $usage;
 | |
| 	}
 | |
| 	
 | |
| 	global $switches;
 | |
| 	$switches = new CliSwitchCollection();
 | |
| 	$switches->addSwitch(new CliSwitch('name',        'n', true,  'name',           'Product name'))
 | |
| 			 ->addSwitch(new CliSwitch('version',     'v', true,  'version_number', 'Product version'))
 | |
| 			 ->addSwitch(new CliSwitch('author',      'a', true,  'author_name',    'Product author'))
 | |
| 			 ->addSwitch(new CliSwitch('website',     'w', true,  'url',            'Product website'))
 | |
| 			 ->addSwitch(new CliSwitch('ezc',         'e', true,  'version',        'ezComponents version number'))
 | |
| 			 ->addSwitch(new CliSwitch('package',     'p', true,  'package_name ',  'Name of the package for use in @package tag'))
 | |
| 			 ->addSwitch(new CliSwitch('doc-version', 'd', false, 'version_number', 'Version number for use in @version tag'))
 | |
| 			 ->addSwitch(new CliSwitch('output',      'o', false, 'file|dir',       'The file/directory to write the generated class to; default is stdout'));
 | |
| 	
 | |
| 	array_shift($argv);
 | |
| 	$args = Cli::parseArgs($argv, $switches);
 | |
| 	$args = $args['switches'];
 | |
| 	
 | |
| 	if (!isset($args['name'], $args['version'], $args['author'], $args['website'])) {
 | |
| 		usage();
 | |
| 		fwrite(STDERR, 'name, version, author, website and package are required');
 | |
| 		exit(1);
 | |
| 	}
 | |
| 	
 | |
| 	$self            = basename(__FILE__);
 | |
| 	$datetime        = date('Y-m-d H:i:s');
 | |
| 	
 | |
| 	$args['name']    = addslashes($args['name']);
 | |
| 	$args['version'] = addslashes($args['version']);
 | |
| 	$args['author']  = addslashes($args['author']);
 | |
| 	$args['website'] = addslashes($args['website']);
 | |
| 	
 | |
| 	$code            = <<<ENDCODE
 | |
| <?php
 | |
| 	
 | |
| 	/**
 | |
| 	 * Product
 | |
| 	 *
 | |
| 	 * @package $args[package]
 | |
| 	 * @since   1.0
 | |
| 	 * @version $args[version]
 | |
| 	 */
 | |
| 	
 | |
| 	/**
 | |
| 	 * Product meta information
 | |
| 	 *
 | |
| 	 * This class was auto-generated by $self on $datetime.
 | |
| 	 *
 | |
| 	 * @package $args[package]
 | |
| 	 * @since   1.0
 | |
| 	 * @version $args[version]
 | |
| 	 */
 | |
| 	final class Product {
 | |
| 		
 | |
| 		/**#@+
 | |
| 		 * @var string
 | |
| 		 */
 | |
| 		/**
 | |
| 		 * Product name
 | |
| 		 */
 | |
| 		const NAME        = '$args[name]';
 | |
| 		
 | |
| 		/**
 | |
| 		 * Product version
 | |
| 		 */
 | |
| 		const VERSION     = '$args[version]';
 | |
| 		
 | |
| 		/**
 | |
| 		 * Product author
 | |
| 		 */
 | |
| 		const AUTHOR      = '$args[author]';
 | |
| 		
 | |
| 		/**
 | |
| 		 * Product website
 | |
| 		 */
 | |
| 		const WEBSITE     = '$args[website]';
 | |
| 		
 | |
| 		/**
 | |
| 		 * Product build date
 | |
| 		 */
 | |
| 		const DATE        = '$datetime';
 | |
| 		
 | |
| 		/**
 | |
| 		 * ezComponents version
 | |
| 		 */
 | |
| 		const EZC_VERSION = '$args[ezc]';
 | |
| 		/**#@-*/
 | |
| 		
 | |
| 		/**
 | |
| 		 * @ignore
 | |
| 		 */
 | |
| 		private function __construct() {}
 | |
| 		
 | |
| 		/**
 | |
| 		 * Gets a human-readable version string
 | |
| 		 *
 | |
| 		 * @author  Autogenerated by $self
 | |
| 		 * @since   1.0
 | |
| 		 * @version $args[version]
 | |
| 		 *
 | |
| 		 * @return string
 | |
| 		 */
 | |
| 		public static function getVersionString() {
 | |
| 			return self::NAME . ' ' . self::VERSION . ' (' . self::DATE . ')';
 | |
| 		}
 | |
| 		
 | |
| 	}
 | |
| 	
 | |
| ?>
 | |
| ENDCODE;
 | |
| 
 | |
| 	if (isset($args['output']) && !is_dir(dirname($args['output'])) && !mkdir(dirname($args['output']), 0777, true)) {
 | |
| 		fwrite(STDERR, 'Unable to mkdir(): ' . dirname($args['output']));
 | |
| 		exit(1);
 | |
| 	} else if (!isset($args['output'])) {
 | |
| 		$args['output'] = 'php://stdout';
 | |
| 	}
 | |
| 	
 | |
| 	if (is_dir($args['output'])) {
 | |
| 		$args['output'] .= DIRECTORY_SEPARATOR . 'Product.php';
 | |
| 	}
 | |
| 		
 | |
| 	$fp = fopen($args['output'], 'w');
 | |
| 	if (!$fp) {
 | |
| 		fwrite(STDERR, 'Unable to open ' . $args['output'] . ' for writing');
 | |
| 		exit(1);
 | |
| 	}
 | |
| 	
 | |
| 	fwrite($fp, $code);
 | |
| 	fclose($fp);
 | |
| 	echo 'Wrote data to ' . $args['output'] . ' (' . strlen($code) . ' bytes)' . "\n";
 | |
| 	
 | |
| 	exit(0);
 | |
| 
 | |
| 
 | |
| 
 | |
| ?>
 |