LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Wez Furlong Date: Sun Nov 4 16:54:48 2007 Subject: cvs: php-objc /utils make-bundle
wez Sun Nov 4 23:54:48 2007 UTC
Modified files:
/php-objc/utils make-bundle
Log:
Modified patch from Adam Jacob Muller to fixup some strictness issues
and argument handling.
http://cvs.php.net/viewvc.cgi/php-objc/utils/make-bundle?r1=1.1&r2=1.2&diff_format=u
Index: php-objc/utils/make-bundle
diff -u php-objc/utils/make-bundle:1.1 php-objc/utils/make-bundle:1.2
--- php-objc/utils/make-bundle:1.1 Sun Nov 4 17:02:17 2007
+++ php-objc/utils/make-bundle Sun Nov 4 23:54:47 2007
@@ -11,30 +11,51 @@
);
$props = array();
-array_shift($argv);
-
-if (!count($argv)) {
- usage(null);
-}
+$bool = array(
+ "symlink",
+ "overwrite"
+);
+$single = array(
+ "target-dir",
+ "name",
+ "main",
+ "nib",
+ "version",
+ "url",
+ "icon",
+ "php-config",
+ "dmg"
+);
+$array = array(
+ "resources"
+);
-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");
+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++;
+ }
}
- $val = array_shift($argv);
-
- $props[$arg][] = $val;
}
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");
@@ -46,11 +67,15 @@
global $props, $defaults;
if (isset($props[$name])) {
return $props[$name];
+ } elseif (isset($defaults[$name])) {
+ return $defaults[$name];
+ } else {
+ return false;
}
- return $defaults[$name];
}
-function usage($msg) {
+
+function usage($msg=false) {
if (strlen($msg)) {
echo "Error: $msg";
}
@@ -63,13 +88,14 @@
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);
}
@@ -88,6 +114,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");
@@ -102,8 +131,8 @@
file_put_contents("$target_dir/Contents/Info.plist", <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC
- "-//Apple Computer//DTD PLIST 1.0//EN"
- "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+ "-//Apple Computer//DTD PLIST 1.0//EN"
+ "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
@@ -174,13 +203,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 +271,8 @@
$dmg = get_arg('dmg');
if (strlen($dmg)) {
+ if (get_arg("overwrite") && file_exists($dmg)) {
+ unlink($dmg);
+ }
system("hdiutil create -srcfolder '$target_dir' -format UDZO -volname '$name' '$dmg'");
}
| Navigate in group php.objc at sever news.php.net | |
| Previous | Next |
| © No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |