hashedassets

Software captura de pantalla:
hashedassets
Detalles de software:
Versión: 0.3.1.1
Fecha de carga: 12 May 15
Promotor: Filip Noetzel
Licencia: Libre
Popularidad: 6

Rating: 1.0/5 (Total Votes: 1)

hashedassets es una herramienta de línea de comandos que copia archivos a los nombres de archivo en función de sus contenidos. & Nbsp; También escribe un mapa de lo que pasó a llamarse a lo que, por lo que pueden encontrar sus archivos.
El objetivo principal de esto es que se puede añadir un futuro lejano Expira cabecera a sus componentes. El uso de los nombres de archivo de hash basado es mucho mejor que el uso de su número de revisión $ VCS, ya que los usuarios sólo tienen que descargar archivos que no cambiaron.
La creación de algunos archivos de origen
En primer lugar, creamos un archivo para ser hash:
>>> Sistema ("entrada mkdir /")
>>> Sistema ("entrada mkdir / subdir /")
>>> Sistema ("mapas mkdir /")
>>> Con abierto ("entrada / foo.txt", "w") como archivo:
... File.write ("foo")
>>> Con abierto ("entrada / subdir / bar.txt", "w") como archivo:
... File.write ("bar")
>>> Sistema ('tocar -t200504072213.12 entrada / foo.txt')
Uso simple
>>> Sistema ("mapas hashedassets / entrada MAP.TXT / *. Txt de entrada / * / *. Txt salida /")
'salida' mkdir
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Imprimir abierto ("mapas / MAP.TXT"). Read ()
subdir / bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
foo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt

>>> Sistema ("salida de ls /")
C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
>>> Sistema ("mapas ls /")
MAP.TXT
Nivel de registro
Si le decimos a la orden para que se callara, que no imprime lo que está haciendo:
>>> Sistema ("Entrada de mapas / map2.txt hashedassets -q / *. Txt de entrada / * / *. Txt salida /")
Si le decimos a la orden para ser más detallado, registra más información:
>>> Sistema ("Entrada de mapas / map3.txt hashedassets -vvv / *. Txt de entrada / * / *. Txt salida /")
Nivel de depuración establecido en 10
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Hora de modificación también se conserva:
>>> Old_stat = os.stat ("entrada / foo.txt")
>>> New_stat = os.stat ("Salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt")
>>> [(Getattr (old_stat, prop) == getattr (new_stat, prop))
... Para el apoyo en ('st_mtime', 'st_atime', 'st_ino',)]
[Real, True, False]
Podemos hacer esto fácilmente con múltiples formatos:
JavaScript
>>> Sistema ("hashedassets -n mapas my_callback / map.js entrada / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print abierto ("mapas / map.js"). Read ()
my_callback var = {
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
};
JSON
>>> Sistema ("hashedassets -n mapas my_callback / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Imprimir abierto ("mapas / map.json"). Read ()
{
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
}
JSONP
>>> Sistema ("/ * / *. Txt salida hashedassets -n mapas my_callback / entrada map.jsonp / *. Txt de entrada /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Imprimir abierto ("mapas / map.jsonp"). Read ()
my_callback ({
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
});
Sass
Sass es un metalenguaje en la parte superior de la CSS.
>>> Sistema ("hashedassets -n mapas my_callback / map.scss entrada / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Imprimir abierto ("mapas / map.scss"). Read ()
my_callbackmixin ($ Directiva, $ path) {
& Nbsp;if $ path == "subdir / bar.txt" {# {$ Directiva}: url ("Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"); }
& Nbsp;else si $ path == "foo.txt" {# {$ Directiva}: url ("C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt"); }
& Nbsp;else {
& Nbsp;warn "¿No ha encontrado" # {$ path} "en la lista de activos";
& Nbsp; # {$ Directiva}: url ($ path);
& Nbsp;}
}
PHP
>>> Sistema ("hashedassets -n mapas my_callback / entrada map.php / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Imprimir abierto ("mapas / map.php"). Read ()
$ My_callback = array (
& Nbsp; "subdir / bar.txt" => "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt",
& Nbsp; "foo.txt" => "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
)
Sed
También podemos generar una secuencia de comandos sed que hace los reemplazos para nosotros:
>>> Sistema ("hashedassets -n mapas my_callback / entrada map.sed / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print abierto ("mapas / map.sed"). Read ()
s / subdir / bar .txt / Ys23Ag_5IOWqZCw9QGaVDdHwH00 .txt / g
s / foo .txt / C-7Hteo_D9vJXQ3UfzxbwnXaijM .txt / g

También debemos ser capaces de utilizar este directamente con sed
>>> Con abierto ("replaceme.html", "w") como archivo:
... File.write (' bar ')
El guión se aplica entonces así:
>>> Sistema ("mapas -f sed / replaceme.html map.sed")
bar
Sin embargo, '.' No se trata como comodín, por lo que el siguiente no funciona
>>> Con abierto ("replaceme2.html", "w") como archivo:
... File.write (' bar ')
>>> Sistema ("mapas -f sed / replaceme2.html map.sed")
bar
Especificación del tipo con -t
El tipo de mapa se supuso desde el nombre del archivo, pero puede especificar que así:
>>> Sistema ("hashedassets -t js cantguessmaptype entrada / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Especificar la longitud del nombre de archivo con -l
>>> Sistema ("/ * / *. Txt salida hashedassets -l 10 mapas / entrada shortmap.json / *. Txt de entrada /")
'entrada / foo.txt' cp 'de salida / C-7Hteo_D9.txt'
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IO.txt'
>>> Sistema ("salida rm / salida C-7Hteo_D9.txt / Ys23Ag_5IO.txt")
Especificación de la digestión con -d
>>> Sistema ("hashedassets -d mapas md5 / entrada shortmap.json / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / rL0Y20zC-Fzt72VPzMSk2A.txt'
cp 'entrada / subdir / bar.txt' 'de salida / N7UdGUp1E-RbVvZSTy1R8g.txt'
>>> Sistema ("Salida de rm / rL0Y20zC-Fzt72VPzMSk2A.txt / N7UdGUp1E-RbVvZSTy1R8g.txt")
La reutilización de un mapa
El programa lee en los mapas que ha creado una carrera antes de copiar solamente los archivos que no han cambiado desde entonces. Por lo tanto, los comandos siguientes no copian los archivos:
>>> Sistema ("mapas hashedassets / map.scss entrada / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / entrada map.php / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / map.js entrada / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / entrada map.sed / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / entrada map.jsonp / *. Txt de entrada / * / *. Txt salida /")
>>> Sistema ("mapas hashedassets / entrada MAP.TXT / *. Txt de entrada / * / *. Txt salida /")
Si tocamos uno de los archivos de entrada en el medio, el archivo será leído pero no copiar porque el hashsum es el mismo:
>>> Sistema ('tocar -t200504072214.12 entrada / foo.txt')
>>> Sistema ("mapas hashedassets / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
Si cambiamos el contenido del archivo, éste tendrá un nuevo nombre:
>>> Con abierto ("entrada / foo.txt", "w") como archivo:
... File.write ("foofoo")
>>> Sistema ("mapas hashedassets / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
'salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt' rm
'entrada / foo.txt' cp 'de salida / QIDaFD7KLKQh0l5O6b8exdew3b0.txt'
Si a continuación enumera los archivos en el directorio, tenga en cuenta que el archivo de edad '' de salida / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '' se ha ido:
>>> Sistema ("salida de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Si eliminamos uno de los archivos creados, se regenere:
>>> Sistema ("salida rm / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt")
>>> Sistema ("mapas hashedassets / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
cp 'entrada / subdir / bar.txt' 'de salida / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Sistema ("salida de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Si un archivo que está a punto de ser eliminado porque el contenido original cambió, no se vuelve a crear:
>>> Sistema ("salida rm / QIDaFD7KLKQh0l5O6b8exdew3b0.txt")
>>> Con abierto ("entrada / foo.txt", "w") como archivo:
... File.write ("foofoofoo")
>>> Sistema ("mapas hashedassets / entrada map.json / *. Txt de entrada / * / *. Txt salida /")
'entrada / foo.txt' cp 'de salida / NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'
Manejo de errores
Sin embargo, si se corre este sin argumentos, se produce un error:
>>> Sistema ("hashedassets", externa = True)
De uso: hashedassets [opciones] Mapfile FUENTE [...] DEST

hashedassets: Error: Es necesario especificar al menos Mapfile SOURCE y DEST

Requisitos

  • Python

Programas parecidos

Cloud Explorer
Cloud Explorer

11 Apr 16

kio_p7zip
kio_p7zip

2 Jun 15

Gloobus Preview
Gloobus Preview

17 Feb 15

Comentarios a la hashedassets

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!