Page MenuHomePhorge

D25274.1736733711.diff
No OneTemporary

D25274.1736733711.diff

diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php
--- a/scripts/celerity/generate_sprites.php
+++ b/scripts/celerity/generate_sprites.php
@@ -3,80 +3,6 @@
require_once dirname(dirname(__FILE__)).'/__init_script__.php';
-$args = new PhutilArgumentParser($argv);
-$args->setTagline(pht('regenerate CSS sprite sheets'));
-$args->setSynopsis(<<<EOHELP
-**sprites**
- Rebuild CSS sprite sheets.
-
-EOHELP
-);
-$args->parseStandardArguments();
-$args->parse(
- array(
- array(
- 'name' => 'force',
- 'help' => pht('Force regeneration even if sources have not changed.'),
- ),
- ));
-
-$root = dirname(phutil_get_library_root('phabricator'));
-$webroot = $root.'/webroot/rsrc';
-$webroot = Filesystem::readablePath($webroot);
-
-$generator = new CeleritySpriteGenerator();
-
-$sheets = array(
- 'tokens' => $generator->buildTokenSheet(),
- 'login' => $generator->buildLoginSheet(),
-);
-
-list($err) = exec_manual('optipng');
-if ($err) {
- $have_optipng = false;
- echo phutil_console_format(
- "<bg:red> %s </bg> %s\n%s\n",
- pht('WARNING'),
- pht('`%s` not found in PATH.', 'optipng'),
- pht('Sprites will not be optimized! Install `%s`!', 'optipng'));
-} else {
- $have_optipng = true;
-}
-
-foreach ($sheets as $name => $sheet) {
-
- $sheet->setBasePath($root);
-
- $manifest_path = $root.'/resources/sprite/manifest/'.$name.'.json';
- if (!$args->getArg('force')) {
- if (Filesystem::pathExists($manifest_path)) {
- $data = Filesystem::readFile($manifest_path);
- $data = phutil_json_decode($data);
- if (!$sheet->needsRegeneration($data)) {
- continue;
- }
- }
- }
-
- $sheet
- ->generateCSS($webroot."/css/sprite-{$name}.css")
- ->generateManifest($root."/resources/sprite/manifest/{$name}.json");
-
- foreach ($sheet->getScales() as $scale) {
- if ($scale == 1) {
- $sheet_name = "sprite-{$name}.png";
- } else {
- $sheet_name = "sprite-{$name}-X{$scale}.png";
- }
-
- $full_path = "{$webroot}/image/{$sheet_name}";
- $sheet->generateImage($full_path, $scale);
-
- if ($have_optipng) {
- echo pht('Optimizing...')."\n";
- phutil_passthru('optipng -o7 -clobber %s', $full_path);
- }
- }
-}
-
-echo pht('Done.')."\n";
+echo pht('This script was replaced with `%s`!.', './bin/celerity sprites');
+echo "\n";
+exit(13);
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -318,6 +318,7 @@
'CelerityDefaultPostprocessor' => 'applications/celerity/postprocessor/CelerityDefaultPostprocessor.php',
'CelerityHighContrastPostprocessor' => 'applications/celerity/postprocessor/CelerityHighContrastPostprocessor.php',
'CelerityLargeFontPostprocessor' => 'applications/celerity/postprocessor/CelerityLargeFontPostprocessor.php',
+ 'CelerityManagementGenerateSpritesWorkflow' => 'applications/celerity/management/CelerityManagementGenerateSpritesWorkflow.php',
'CelerityManagementMapWorkflow' => 'applications/celerity/management/CelerityManagementMapWorkflow.php',
'CelerityManagementSyntaxWorkflow' => 'applications/celerity/management/CelerityManagementSyntaxWorkflow.php',
'CelerityManagementWorkflow' => 'applications/celerity/management/CelerityManagementWorkflow.php',
@@ -6311,6 +6312,7 @@
'CelerityDefaultPostprocessor' => 'CelerityPostprocessor',
'CelerityHighContrastPostprocessor' => 'CelerityPostprocessor',
'CelerityLargeFontPostprocessor' => 'CelerityPostprocessor',
+ 'CelerityManagementGenerateSpritesWorkflow' => 'CelerityManagementWorkflow',
'CelerityManagementMapWorkflow' => 'CelerityManagementWorkflow',
'CelerityManagementSyntaxWorkflow' => 'CelerityManagementWorkflow',
'CelerityManagementWorkflow' => 'PhabricatorManagementWorkflow',
diff --git a/src/applications/celerity/management/CelerityManagementGenerateSpritesWorkflow.php b/src/applications/celerity/management/CelerityManagementGenerateSpritesWorkflow.php
new file mode 100644
--- /dev/null
+++ b/src/applications/celerity/management/CelerityManagementGenerateSpritesWorkflow.php
@@ -0,0 +1,108 @@
+<?php
+
+final class CelerityManagementGenerateSpritesWorkflow
+ extends CelerityManagementWorkflow {
+
+ protected function didConstruct() {
+ $this
+ ->setName('sprites')
+ ->setExamples('**sprites** [options]')
+ ->setSynopsis(pht('Rebuild CSS sprite sheets.'))
+ ->setArguments(
+ array(
+ array(
+ 'name' => 'force',
+ 'help' => pht('Force regeneration even no sources have changed.'),
+ ),
+ array(
+ 'name' => 'no-map',
+ 'help' =>
+ pht(
+ 'Do not invoke `%s` after updating sprites',
+ 'celerity map'),
+ ),
+ ));
+ }
+
+ public function execute(PhutilArgumentParser $args) {
+ $resources_map = CelerityPhysicalResources::getAll();
+
+ $console = PhutilConsole::getConsole();
+
+ $root = dirname(phutil_get_library_root('phorge'));
+ $webroot = $root.'/webroot/rsrc';
+ $webroot = Filesystem::readablePath($webroot);
+
+ $generator = new CeleritySpriteGenerator();
+
+ $sheets = array(
+ 'tokens' => $generator->buildTokenSheet(),
+ 'login' => $generator->buildLoginSheet(),
+ );
+
+ list($err) = exec_manual('optipng');
+ if ($err) {
+ $have_optipng = false;
+ $console->writeErr(
+ "<bg:red> %s </bg> %s\n%s\n",
+ pht('WARNING'),
+ pht('`%s` not found in PATH.', 'optipng'),
+ pht('Sprites will not be optimized! Install `%s`!', 'optipng'));
+ } else {
+ $have_optipng = true;
+ }
+
+ foreach ($sheets as $name => $sheet) {
+
+ $sheet->setBasePath($root);
+
+ $manifest_path = $root.'/resources/sprite/manifest/'.$name.'.json';
+ if (!$args->getArg('force')) {
+ if (Filesystem::pathExists($manifest_path)) {
+ $data = Filesystem::readFile($manifest_path);
+ $data = phutil_json_decode($data);
+ if (!$sheet->needsRegeneration($data)) {
+ continue;
+ }
+ }
+ }
+
+ $sheet
+ ->generateCSS($webroot."/css/sprite-{$name}.css")
+ ->generateManifest($root."/resources/sprite/manifest/{$name}.json");
+
+ foreach ($sheet->getScales() as $scale) {
+ if ($scale == 1) {
+ $sheet_name = "sprite-{$name}.png";
+ } else {
+ $sheet_name = "sprite-{$name}-X{$scale}.png";
+ }
+
+ $full_path = "{$webroot}/image/{$sheet_name}";
+ $sheet->generateImage($full_path, $scale);
+
+ if ($have_optipng) {
+ $console->writeOut("%s\n", pht('Optimizing...'));
+ phutil_passthru('optipng -o7 -clobber %s', $full_path);
+ }
+ }
+ }
+
+ $run_map = !$args->getArg('no-map');
+
+ if ($run_map) {
+ $console->writeOut(
+ "%s\n",
+ pht('Done generating sprites - updating map...'));
+ $map_flow = id($args->getWorkflows())['map'];
+ // this is very hacky, but it works because `map` has no arguments.
+ $map_flow->execute($args);
+ } else {
+ $console->writeOut("%s\n", pht('Done.'));
+ return 0;
+ }
+
+ }
+
+
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 13, 02:01 (5 d, 20 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1113025
Default Alt Text
D25274.1736733711.diff (7 KB)

Event Timeline