Re: make-bundle.diff

From: Date: Sun, 04 Nov 2007 23:18:47 +0000
Subject: Re: make-bundle.diff
References: 1 2  Groups: php.objc 
Request: Send a blank email to php-objc+get-14@lists.php.net to get a copy of this message
also: http://adam.gs/make-bundle.diff -Adam On Nov 4, 2007, at 5:52 PM, Wez Furlong wrote:
The diff went AWOL; the mailing list strips non text attachments, so try saving it as .txt and attaching it. --Wez. On Nov 4, 2007, at 5:25 PM, Adam Jacob Muller wrote:
Summary: re-wrote argument parsing code so it can handle single args (-symlink for example) cleaned up usage() a bit added -overwrite that will rm -rf $target_dir and unlink() $dmg added: Warning: not copying any resources, this probably isn't what you want Comments please :) --PHP Objective-C Bridge Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


Index: make-bundle =================================================================== RCS file: /repository/php-objc/utils/make-bundle,v retrieving revision 1.1 diff -u -r1.1 make-bundle --- make-bundle 4 Nov 2007 17:02:17 -0000 1.1 +++ make-bundle 4 Nov 2007 22:22:08 -0000 @@ -11,30 +11,36 @@ ); $props = array(); -array_shift($argv); - -if (!count($argv)) { - usage(null); -} - -while (count($argv)) { - $arg = array_shift($argv); - if ($arg[0] != '-') { - usage("args must start with a -\n"); - } - $arg = substr($arg, 1); - if (!count($argv)) { - usage("args must all have a value\n"); - } - $val = array_shift($argv); - - $props[$arg][] = $val; +$bool=array("symlink","overwrite"); +$single=array("target-dir","name","main","nib","version","url","icon","php-config","dmg"); +$array=array("resources"); + +if ($_SERVER['argc']==1) { + usage(); +} else { + for($i=1;$i<$_SERVER['argc'];) { + if ($_SERVER['argv'][$i][0]!="-") { + usage(sprintf("args must start with a - (%s)\n",$_SERVER['argv'][$i])); + } else { + $name=substr($_SERVER['argv'][$i],1); + if (in_array($name,$bool)) { + $props[$name]=true; + } elseif (in_array($name,$single)) { + $props[$name]=$_SERVER['argv'][++$i]; + } elseif (in_array($name,$array)) { + $props[$name][]=$_SERVER['argv'][++$i]; + } else { + usage(sprintf("argument %s unrecognized\n",$name)); + } + $i++; + } + } } function get_arg($name, $required = false) { global $props, $defaults; - if (isset($props[$name][0])) { - return $props[$name][0]; + if (isset($props[$name])) { + return $props[$name]; } if ($required && !isset($defaults[$name])) { usage("Required argument $name was not specified\n"); @@ -43,14 +49,18 @@ } function get_arg_array($name) { - global $props, $defaults; - if (isset($props[$name])) { - return $props[$name]; - } - return $defaults[$name]; + global $props, $defaults; + if (isset($props[$name])) { + return $props[$name]; + } elseif (isset($defaults[$name])) { + return $defaults[$name]; + } else { + return false; + } } -function usage($msg) { + +function usage($msg=false) { if (strlen($msg)) { echo "Error: $msg"; } @@ -63,20 +73,21 @@ echo " -nib MainMenu Main nib file for the app\n"; echo " -version 1.0.0 Application version, must include major.minor.patch\n"; echo " otherwise the bundle will not function\n"; - echo " -url 'http://my.blog.url.example.com' Your URL, should be unique to you.\n"; + echo " -url 'http://example.com' Your URL, should be unique to you.\n"; echo " -icon icon.icns Name of icon to use for the bundle.\n"; echo " You must also use -resources to import it into the bundle\n"; echo " -php-config php-config Path to php-config script. The PHP install described by\n"; echo " this script will be imported into your bundle\n"; - echo " -copy-mode symlink Use symlinks instead of copying. Use for testing locally only.\n"; + echo " -symlink Use symlinks instead of copying. Use for testing locally only.\n"; echo " -dmg filename.dmg Also bake it into a .dmg file\n"; + echo " -overwrite Overwrite target-dir/name.app and/or dmg\n"; echo "\n"; exit(1); } $target_dir = get_arg("target-dir", true); if (!is_dir($target_dir)) { - usage("target-dir must be a directory that already exists\n"); + usage("target-dir must be a directory that already exists\n"); } $name = get_arg('name', true); @@ -88,6 +99,9 @@ $ident = "$url $name"; $target_dir .= "/$name.app"; +if (is_dir($target_dir)&&(get_arg("overwrite"))) { + system(sprintf("/bin/rm -rf %s",$target_dir)); +} mkdir($target_dir) or die("failed to create $target_dir\n"); mkdir("$target_dir/Contents"); mkdir("$target_dir/Contents/Resources"); @@ -174,13 +188,17 @@ @chmod("$target_dir/Contents/MacOS/php", 0755); chmod("$target_dir/Contents/MacOS/boot", 0755); -foreach (get_arg_array('resources') as $res) { - copy_or_link($res, "$target_dir/Contents/Resources"); +if (($resources=get_arg_array('resources'))===false) { + printf("Warning: not copying any resources, this probably isn't what you want\n"); +} else { + foreach ($resources as $res) { + copy_or_link($res, "$target_dir/Contents/Resources"); + } } function copy_or_link($source, $dest) { - if (get_arg('copy-mode') == 'symlink') { + if (get_arg('symlink')) { # echo "$dest link-to $source\n"; $source = realpath($source); system("ln -sf '$source' '$dest'"); @@ -238,5 +256,8 @@ $dmg = get_arg('dmg'); if (strlen($dmg)) { - system("hdiutil create -srcfolder '$target_dir' -format UDZO -volname '$name' '$dmg'"); + if (file_exists($dmg)&&get_arg("overwrite")) { + unlink($dmg); + } + system("hdiutil create -srcfolder '$target_dir' -format UDZO -volname '$name' '$dmg'"); }
« previous php.objc (#14) next »