Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(387)

Side by Side Diff: tools/resources/optimize-png-files.sh

Issue 60733028: Make output concise by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # The optimization code is based on pngslim (http://goo.gl/a0XHg) 6 # The optimization code is based on pngslim (http://goo.gl/a0XHg)
7 # and executes a similar pipleline to optimize the png file size. 7 # and executes a similar pipleline to optimize the png file size.
8 # The steps that require pngoptimizercl/pngrewrite/deflopt are omitted, 8 # The steps that require pngoptimizercl/pngrewrite/deflopt are omitted,
9 # but this runs all other processes, including: 9 # but this runs all other processes, including:
10 # 1) various color-dependent optimizations using optipng. 10 # 1) various color-dependent optimizations using optipng.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 # Global variables for stats 47 # Global variables for stats
48 TOTAL_OLD_BYTES=0 48 TOTAL_OLD_BYTES=0
49 TOTAL_NEW_BYTES=0 49 TOTAL_NEW_BYTES=0
50 TOTAL_FILE=0 50 TOTAL_FILE=0
51 CORRUPTED_FILE=0 51 CORRUPTED_FILE=0
52 PROCESSED_FILE=0 52 PROCESSED_FILE=0
53 53
54 declare -a THROBBER_STR=('-' '\\' '|' '/') 54 declare -a THROBBER_STR=('-' '\\' '|' '/')
55 THROBBER_COUNT=0 55 THROBBER_COUNT=0
56 56
57 SUBPROCESS=0 57 VERBOSE=0
58 58
59 # NoOp in subprocess, echo otherwise. 59 # Echo only if verbose option is set.
60 function info { 60 function info {
61 if [ $SUBPROCESS -eq 0 ]; then 61 if [ $VERBOSE -eq 1 ]; then
62 echo $@ 62 echo $@
63 fi 63 fi
64 } 64 }
65 65
66 # Show throbber character at current cursor position. 66 # Show throbber character at current cursor position.
67 function throbber { 67 function throbber {
68 info -ne "${THROBBER_STR[$THROBBER_COUNT]}\b" 68 info -ne "${THROBBER_STR[$THROBBER_COUNT]}\b"
69 let THROBBER_COUNT=($THROBBER_COUNT+1)%4 69 let THROBBER_COUNT=($THROBBER_COUNT+1)%4
70 } 70 }
71 71
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 0 Just run pngcrush. It removes unnecessary chunks and perform basic 377 0 Just run pngcrush. It removes unnecessary chunks and perform basic
378 optimization on the encoded data. 378 optimization on the encoded data.
379 1 Optimize png files using pngout/optipng and advdef. This can further 379 1 Optimize png files using pngout/optipng and advdef. This can further
380 reduce addtional 5~30%. This is the default level. 380 reduce addtional 5~30%. This is the default level.
381 2 Aggressively optimize the size of png files. This may produce 381 2 Aggressively optimize the size of png files. This may produce
382 addtional 1%~5% reduction. Warning: this is *VERY* 382 addtional 1%~5% reduction. Warning: this is *VERY*
383 slow and can take hours to process all files. 383 slow and can take hours to process all files.
384 -r<revision> If this is specified, the script processes only png files 384 -r<revision> If this is specified, the script processes only png files
385 changed since this revision. The <dir> options will be used 385 changed since this revision. The <dir> options will be used
386 to narrow down the files under specific directories. 386 to narrow down the files under specific directories.
387 -s Run as subprocess. This may be used to parallelize execution. 387 -v Shows optimization process for each file.
388 Usage: find <dir> -name \"*.png\" | xargs -n1 -P16 $program -s -o2
389 -h Print this help text." 388 -h Print this help text."
390 exit 1 389 exit 1
391 } 390 }
392 391
393 if [ ! -e ../.gclient ]; then 392 if [ ! -e ../.gclient ]; then
394 echo "$0 must be run in src directory" 393 echo "$0 must be run in src directory"
395 exit 1 394 exit 1
396 fi 395 fi
397 396
398 if [ "$(expr substr $(uname -s) 1 6)" == "CYGWIN" ]; then 397 if [ "$(expr substr $(uname -s) 1 6)" == "CYGWIN" ]; then
399 using_cygwin=true 398 using_cygwin=true
400 else 399 else
401 using_cygwin=false 400 using_cygwin=false
402 fi 401 fi
403 402
404 OPTIMIZE_LEVEL=1 403 OPTIMIZE_LEVEL=1
405 # Parse options 404 # Parse options
406 while getopts o:r:h:s opts 405 while getopts o:r:h:v opts
407 do 406 do
408 case $opts in 407 case $opts in
409 r) 408 r)
410 COMMIT=$(git svn find-rev r$OPTARG | tail -1) || exit 409 COMMIT=$(git svn find-rev r$OPTARG | tail -1) || exit
411 if [ -z "$COMMIT" ] ; then 410 if [ -z "$COMMIT" ] ; then
412 echo "Revision $OPTARG not found" 411 echo "Revision $OPTARG not found"
413 show_help 412 show_help
414 fi 413 fi
415 ;; 414 ;;
416 o) 415 o)
417 if [[ ! "$OPTARG" =~ [012] ]] ; then 416 if [[ ! "$OPTARG" =~ [012] ]] ; then
418 show_help 417 show_help
419 fi 418 fi
420 OPTIMIZE_LEVEL=$OPTARG 419 OPTIMIZE_LEVEL=$OPTARG
421 ;; 420 ;;
422 s) 421 v)
423 let SUBPROCESS=1 422 let VERBOSE=1
424 ;; 423 ;;
425 [h?]) 424 [h?])
426 show_help;; 425 show_help;;
427 esac 426 esac
428 done 427 done
429 428
430 # Remove options from argument list. 429 # Remove options from argument list.
431 shift $(($OPTIND -1)) 430 shift $(($OPTIND -1))
432 431
433 # Make sure we have all necessary commands installed. 432 # Make sure we have all necessary commands installed.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 if [ -f $f ] ; then 471 if [ -f $f ] ; then
473 optimize_file $f 472 optimize_file $f
474 else 473 else
475 echo "Skipping deleted file: $f"; 474 echo "Skipping deleted file: $f";
476 fi 475 fi
477 done 476 done
478 else 477 else
479 for d in $DIRS; do 478 for d in $DIRS; do
480 info "Optimizing png files in $d" 479 info "Optimizing png files in $d"
481 optimize_dir $d 480 optimize_dir $d
482 echo 481 info ""
483 done 482 done
484 fi 483 fi
485 484
486 # Print the results. 485 # Print the results.
487 if [ $PROCESSED_FILE == 0 ]; then 486 if [ $PROCESSED_FILE == 0 ]; then
488 echo "Did not find any files (out of $TOTAL_FILE files)" \ 487 echo "Did not find any files (out of $TOTAL_FILE files)" \
489 "that could be optimized" \ 488 "that could be optimized" \
490 "in $(date -u -d @$SECONDS +%T)s" 489 "in $(date -u -d @$SECONDS +%T)s"
491 else 490 else
492 let diff=$TOTAL_OLD_BYTES-$TOTAL_NEW_BYTES 491 let diff=$TOTAL_OLD_BYTES-$TOTAL_NEW_BYTES
493 let percent=$diff*100/$TOTAL_OLD_BYTES 492 let percent=$diff*100/$TOTAL_OLD_BYTES
494 echo "Processed $PROCESSED_FILE files (out of $TOTAL_FILE files)" \ 493 echo "Processed $PROCESSED_FILE files (out of $TOTAL_FILE files)" \
495 "in $(date -u -d @$SECONDS +%T)s" 494 "in $(date -u -d @$SECONDS +%T)s"
496 echo "Result : $TOTAL_OLD_BYTES => $TOTAL_NEW_BYTES bytes" \ 495 echo "Result : $TOTAL_OLD_BYTES => $TOTAL_NEW_BYTES bytes" \
497 "($diff bytes : $percent %)" 496 "($diff bytes : $percent %)"
498 fi 497 fi
499 if [ $CORRUPTED_FILE != 0 ]; then 498 if [ $CORRUPTED_FILE != 0 ]; then
500 echo "Warning: corrupted files found: $CORRUPTED_FILE" 499 echo "Warning: corrupted files found: $CORRUPTED_FILE"
501 echo "Please contact the author of the CL that landed corrupted png files" 500 echo "Please contact the author of the CL that landed corrupted png files"
502 fi 501 fi
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698