[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 #!/usr/bin/env php 2 <?php 3 4 require_once dirname(dirname(__FILE__)).'/__init_script__.php'; 5 6 $args = new PhutilArgumentParser($argv); 7 $args->setTagline('regenerate CSS sprite sheets'); 8 $args->setSynopsis(<<<EOHELP 9 **sprites** 10 Rebuild CSS sprite sheets. 11 12 EOHELP 13 ); 14 $args->parseStandardArguments(); 15 $args->parse( 16 array( 17 array( 18 'name' => 'force', 19 'help' => 'Force regeneration even if sources have not changed.', 20 ), 21 )); 22 23 $root = dirname(phutil_get_library_root('phabricator')); 24 $webroot = $root.'/webroot/rsrc'; 25 $webroot = Filesystem::readablePath($webroot); 26 27 $generator = new CeleritySpriteGenerator(); 28 29 $sheets = array( 30 'menu' => $generator->buildMenuSheet(), 31 'apps' => $generator->buildAppsSheet(), 32 'conpherence' => $generator->buildConpherenceSheet(), 33 'apps-large' => $generator->buildAppsLargeSheet(), 34 'payments' => $generator->buildPaymentsSheet(), 35 'tokens' => $generator->buildTokenSheet(), 36 'docs' => $generator->buildDocsSheet(), 37 'gradient' => $generator->buildGradientSheet(), 38 'main-header' => $generator->buildMainHeaderSheet(), 39 'login' => $generator->buildLoginSheet(), 40 'projects' => $generator->buildProjectsSheet(), 41 ); 42 43 list($err) = exec_manual('optipng'); 44 if ($err) { 45 $have_optipng = false; 46 echo phutil_console_format( 47 "<bg:red> WARNING </bg> `optipng` not found in PATH.\n". 48 "Sprites will not be optimized! Install `optipng`!\n"); 49 } else { 50 $have_optipng = true; 51 } 52 53 foreach ($sheets as $name => $sheet) { 54 55 $sheet->setBasePath($root); 56 57 $manifest_path = $root.'/resources/sprite/manifest/'.$name.'.json'; 58 if (!$args->getArg('force')) { 59 if (Filesystem::pathExists($manifest_path)) { 60 $data = Filesystem::readFile($manifest_path); 61 $data = json_decode($data, true); 62 if (!$sheet->needsRegeneration($data)) { 63 continue; 64 } 65 } 66 } 67 68 $sheet 69 ->generateCSS($webroot."/css/sprite-{$name}.css") 70 ->generateManifest($root."/resources/sprite/manifest/{$name}.json"); 71 72 foreach ($sheet->getScales() as $scale) { 73 if ($scale == 1) { 74 $sheet_name = "sprite-{$name}.png"; 75 } else { 76 $sheet_name = "sprite-{$name}-X{$scale}.png"; 77 } 78 79 $full_path = "{$webroot}/image/{$sheet_name}"; 80 $sheet->generateImage($full_path, $scale); 81 82 if ($have_optipng) { 83 echo "Optimizing...\n"; 84 phutil_passthru('optipng -o7 -clobber %s', $full_path); 85 } 86 } 87 } 88 89 echo "Done.\n";
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |