Encontrar recursos no usados en un proyecto de Xcode
Jueves, 7 junio 2012 por Federico Erostarbe
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.

No. 1 — junio 11th, 2012 at 11:31
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?
No. 2 — junio 11th, 2012 at 11:50
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!
No. 3 — junio 11th, 2012 at 12:13
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 @2xresult=ack -i "$file"if [ -z "$result" ]; then echo “$i” fi doneNo. 4 — junio 11th, 2012 at 12:13
BTW, mil gracias por el script. Me va a ser muy útil
No. 5 — junio 11th, 2012 at 12:16
Crap. Los comments me escapearon mil cosas.
https://gist.github.com/2910592
No. 6 — junio 11th, 2012 at 12:45
Buenísimo, avisame cualquier problema. BTW, debería usar los gists de GitHub en los posts, tener que escapear a mano es un horror.
No. 7 — junio 12th, 2012 at 11:13
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.