Encontrar recursos no usados en un proyecto de Xcode

Pocas cosas hay tan comunes como agregar imágenes a un proyecto y dejar de utilizarlas en algún momento y olvidarnos de eliminarlas. El horror. O las agregamos y nos olvidamos de utilizarlas, por qué no. Bueno, miren este lindísimo script de bash que usa ack

#!/bin/bash

for i in `find . -name ".png" -o -name ".jpg"`; do file=`basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x` result=`ack -i "$file"` if [ -z "$result" ]; then echo "$i" fi done

Lo que hace es mostrar todas las imágenes que no sean reverenciadas desde archivos xib, h/m o storyboards.

Ahora, es probable que no tengan ack instalado. Los pasos a seguir son:

#Descargar ack: http://search.cpan.org/CPAN/authors/id/P/PE/PETDANCE/ack-1.92.tar.gz
curl http://betterthangrep.com/ack-standalone > ack
sudo chmod 755 ack
sudo mv ack /usr/bin/ack
sudo cp /usr/bin/ack /usr/local/bin/ack

Ahora, para instalar ack necesitan algo que seguramente tampoco tengan instalados, así que lo descargan e instalan:

git clone git://github.com/petdance/file-next.git
cd file-next
perl Makefile.PL
make
make test
sudo make install

Ahora sí, descomprimen el tar de ack y perl Makefile.PL make make test sudo make install

con acá instalado, guarden el script y cópienlo al directorio del proyecto. Cabe aclarar que si usan NSStringWithFormat para elegir un png, digamos algo tipo [NSString stringWithFormat:@"image%d.png", i];, el script considerará como inutilizados el recurso image1.png. Con revisar el resultado y no borrar inmediatamente los recursos, es suficiente. Utilísimo.

7 Responses to “Encontrar recursos no usados en un proyecto de Xcode”

  1. Betzerra writes:

    Hola man, estoy teniendo problemas con el script. Este es mi output:

    ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found find ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found . ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found -name ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found *.png ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found -o ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found -name ./resources.sh: line 5: -s: command not found ./resources.sh: line 6: -i: command not found *.jpg

    No sé por qué no le gustan los parámetros -s y -i. ¿Alguna idea de lo que puedo estar haciendo mal?

  2. Federico Erostarbe writes:

    El plugin para syntax highlighting no me estaba escapeando los `, no iba ni para atrás el script ese, ahí lo corregí, fijare ahora te tiene que funcionar de una. Gracias!

  3. Betzerra writes:

    Creo que te faltaron algunos “*”

    Este me está funcionando:

    !/bin/bash

    for i in find . -name "*.png" -o -name "*.jpg"; do file=basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x result=ack -i "$file" if [ -z "$result" ]; then echo “$i” fi done

  4. Betzerra writes:

    BTW, mil gracias por el script. Me va a ser muy útil :-)

  5. Betzerra writes:

    Crap. Los comments me escapearon mil cosas.

    https://gist.github.com/2910592

  6. Federico Erostarbe writes:

    Buenísimo, avisame cualquier problema. BTW, debería usar los gists de GitHub en los posts, tener que escapear a mano es un horror.

  7. Betzerra writes:

    Fijate que en el link que te dejé hay un botón que dice “Embed”, copiás ese javascript y ya funciona. Gist (todo GitHub en realidad) es hermoso.

Leave a Reply