Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F33202368
generate_sprites.php
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
2 KB
Subscribers
None
generate_sprites.php
View Options
#!/usr/bin/env php
<?php
require_once
dirname
(
dirname
(
__FILE__
)).
'/__init_script__.php'
;
$args
=
new
PhutilArgumentParser
(
$argv
);
$args
->
setTagline
(
'regenerate CSS sprite sheets'
);
$args
->
setSynopsis
(
<<<EOHELP
**sprites**
Rebuild CSS sprite sheets.
EOHELP
);
$args
->
parseStandardArguments
();
$args
->
parse
(
array
(
array
(
'name'
=>
'force'
,
'help'
=>
'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
(
'icons'
=>
$generator
->
buildIconSheet
(),
'menu'
=>
$generator
->
buildMenuSheet
(),
'apps'
=>
$generator
->
buildAppsSheet
(),
'actions'
=>
$generator
->
buildActionsSheet
(),
'minicons'
=>
$generator
->
buildMiniconsSheet
(),
'conpherence'
=>
$generator
->
buildConpherenceSheet
(),
'apps-large'
=>
$generator
->
buildAppsLargeSheet
(),
'payments'
=>
$generator
->
buildPaymentsSheet
(),
'tokens'
=>
$generator
->
buildTokenSheet
(),
'docs'
=>
$generator
->
buildDocsSheet
(),
'gradient'
=>
$generator
->
buildGradientSheet
(),
'login'
=>
$generator
->
buildLoginSheet
(),
'status'
=>
$generator
->
buildStatusSheet
(),
);
list
(
$err
)
=
exec_manual
(
'optipng'
);
if
(
$err
)
{
$have_optipng
=
false
;
echo
phutil_console_format
(
"<bg:red> WARNING </bg> `optipng` not found in PATH.
\n
"
.
"Sprites will not be optimized! Install `optipng`!
\n
"
);
}
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
=
json_decode
(
$data
,
true
);
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
"Optimizing...
\n
"
;
phutil_passthru
(
'optipng -o7 -clobber %s'
,
$full_path
);
}
}
}
echo
"Done.
\n
"
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Nov 20, 1:59 AM (1 d, 20 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
38/ac/8cd9181070a49f331c4ba0c021c4
Attached To
rPHAB Phabricator
Event Timeline
Log In to Comment