Changeset View
Changeset View
Standalone View
Standalone View
scripts/celerity/generate_sprites.php
| #!/usr/bin/env php | #!/usr/bin/env php | ||||
| <?php | <?php | ||||
| require_once dirname(dirname(__FILE__)).'/__init_script__.php'; | require_once dirname(dirname(__FILE__)).'/__init_script__.php'; | ||||
| $args = new PhutilArgumentParser($argv); | $args = new PhutilArgumentParser($argv); | ||||
| $args->setTagline('regenerate CSS sprite sheets'); | $args->setTagline(pht('regenerate CSS sprite sheets')); | ||||
| $args->setSynopsis(<<<EOHELP | $args->setSynopsis(<<<EOHELP | ||||
| **sprites** | **sprites** | ||||
| Rebuild CSS sprite sheets. | Rebuild CSS sprite sheets. | ||||
| EOHELP | EOHELP | ||||
| ); | ); | ||||
| $args->parseStandardArguments(); | $args->parseStandardArguments(); | ||||
| $args->parse( | $args->parse( | ||||
| array( | array( | ||||
| array( | array( | ||||
| 'name' => 'force', | 'name' => 'force', | ||||
| 'help' => 'Force regeneration even if sources have not changed.', | 'help' => pht('Force regeneration even if sources have not changed.'), | ||||
| ), | ), | ||||
| )); | )); | ||||
| $root = dirname(phutil_get_library_root('phabricator')); | $root = dirname(phutil_get_library_root('phabricator')); | ||||
| $webroot = $root.'/webroot/rsrc'; | $webroot = $root.'/webroot/rsrc'; | ||||
| $webroot = Filesystem::readablePath($webroot); | $webroot = Filesystem::readablePath($webroot); | ||||
| $generator = new CeleritySpriteGenerator(); | $generator = new CeleritySpriteGenerator(); | ||||
| $sheets = array( | $sheets = array( | ||||
| 'menu' => $generator->buildMenuSheet(), | 'menu' => $generator->buildMenuSheet(), | ||||
| 'tokens' => $generator->buildTokenSheet(), | 'tokens' => $generator->buildTokenSheet(), | ||||
| 'gradient' => $generator->buildGradientSheet(), | 'gradient' => $generator->buildGradientSheet(), | ||||
| 'main-header' => $generator->buildMainHeaderSheet(), | 'main-header' => $generator->buildMainHeaderSheet(), | ||||
| 'login' => $generator->buildLoginSheet(), | 'login' => $generator->buildLoginSheet(), | ||||
| 'projects' => $generator->buildProjectsSheet(), | 'projects' => $generator->buildProjectsSheet(), | ||||
| ); | ); | ||||
| list($err) = exec_manual('optipng'); | list($err) = exec_manual('optipng'); | ||||
| if ($err) { | if ($err) { | ||||
| $have_optipng = false; | $have_optipng = false; | ||||
| echo phutil_console_format( | echo phutil_console_format( | ||||
| "<bg:red> WARNING </bg> `optipng` not found in PATH.\n". | "<bg:red> %s </bg> %s\n%s\n", | ||||
| "Sprites will not be optimized! Install `optipng`!\n"); | pht('WARNING'), | ||||
| pht('`%s` not found in PATH.', 'optipng'), | |||||
| pht('Sprites will not be optimized! Install `%s`!', 'optipng')); | |||||
| } else { | } else { | ||||
| $have_optipng = true; | $have_optipng = true; | ||||
| } | } | ||||
| foreach ($sheets as $name => $sheet) { | foreach ($sheets as $name => $sheet) { | ||||
| $sheet->setBasePath($root); | $sheet->setBasePath($root); | ||||
| Show All 18 Lines | foreach ($sheet->getScales() as $scale) { | ||||
| } else { | } else { | ||||
| $sheet_name = "sprite-{$name}-X{$scale}.png"; | $sheet_name = "sprite-{$name}-X{$scale}.png"; | ||||
| } | } | ||||
| $full_path = "{$webroot}/image/{$sheet_name}"; | $full_path = "{$webroot}/image/{$sheet_name}"; | ||||
| $sheet->generateImage($full_path, $scale); | $sheet->generateImage($full_path, $scale); | ||||
| if ($have_optipng) { | if ($have_optipng) { | ||||
| echo "Optimizing...\n"; | echo pht('Optimizing...')."\n"; | ||||
| phutil_passthru('optipng -o7 -clobber %s', $full_path); | phutil_passthru('optipng -o7 -clobber %s', $full_path); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| echo "Done.\n"; | echo pht('Done.')."\n"; | ||||