hashedassets

Tela Software:
hashedassets
Detalhes de Software:
Versão: 0.3.1.1
Data de upload: 12 May 15
Revelador: Filip Noetzel
Licença: Livre
Popularidade: 50

Rating: 2.5/5 (Total Votes: 2)

hashedassets é uma ferramenta de linha de comando que copia arquivos para nomes de arquivos com base em seu conteúdo. & Nbsp; Ele também escreve um mapa do que foi renomeado para que, assim que você pode encontrar seus arquivos.
O objectivo principal desta é que você pode adicionar um futuro distante Expira cabeçalho para os seus componentes. Usando nomes de arquivo de hash com base é muito melhor do que usar o número de revisão $ VCS, pois os usuários só precisa baixar arquivos que não mudaram.
Criação de alguns arquivos de origem
Primeiro, criamos um arquivo para ser hash:
>>> Sistema ("input mkdir /")
>>> Sistema ("input mkdir / subdir /")
>>> Sistema ("mapas mkdir /")
>>> Com open ("input / foo.txt", "w") como arquivo:
... File.write ("foo")
>>> Com open ("input / subdir / bar.txt", "w") como arquivo:
... File.write ("bar")
>>> Sistema ('toque -t200504072213.12 entrada / foo.txt')
uso simples
>>> Sistema ("mapas hashedassets / input map.txt / entrada txt *. / * Saída txt / *. /")
mkdir 'output'
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.txt"). Read ()
subdir / bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
foo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt

>>> Sistema ("saída de ls /")
C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
>>> Sistema ("mapas ls /")
map.txt
Nível de registo
Se contarmos o comando para ficar quieto, ele não imprimir o que está fazendo:
>>> Sistema ("hashedassets -q entrada mapas / map2.txt / entrada txt *. / * / Saída txt *. /")
Se contarmos o comando a ser mais detalhado, ele registra mais informações:
>>> Sistema ("hashedassets -vvv entrada mapas / map3.txt / entrada txt *. / * / Saída txt *. /")
Nível de depuração definido como 10
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Tempo de modificação também é preservado:
>>> Old_stat = os.stat ("input / foo.txt")
>>> New_stat = os.stat ("output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt")
>>> [(Getattr (old_stat, prop) == getattr (new_stat, prop))
... Para prop em ('st_mtime', 'st_atime', 'st_ino',)]
[Verdade, True, False]
Nós podemos fazer isso facilmente com vários formatos:
JavaScript
>>> Sistema ("hashedassets -n mapas my_callback / map.js entrada / *. Txt de entrada / * / * saída txt. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.js"). Read ()
var my_callback = {
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
};
JSON
>>> Sistema ("hashedassets -n mapas my_callback entrada map.json / entrada txt / *. / * Saída txt / *. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.json"). Read ()
{
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
}
JSONP
>>> Sistema ("hashedassets -n mapas my_callback / input map.jsonp / entrada txt *. / * Saída txt / *. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.jsonp"). Read ()
my_callback ({
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
});
Insolência
Sass é uma linguagem de meta no topo da CSS.
>>> Sistema ("hashedassets -n mapas my_callback / map.scss entrada / *. Txt de entrada / * / * saída txt. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.scss"). Read ()
my_callbackmixin ($ directiva, $ path) {
& Nbsp;if $ caminho == "subdir / bar.txt" {{# $ directiva}: url ("Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"); }
& Nbsp; seelse $ caminho == "foo.txt" {{# $ directiva}: url ("C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt"); }
& Nbsp;else {
& Nbsp;warn "Não encontrou" # {$ path} "na lista de ativos";
& Nbsp; # {$ directiva}: url ($ caminho);
& Nbsp;}
}
PHP
>>> Sistema ("hashedassets -n mapas my_callback entrada map.php / entrada txt / *. / * Saída txt / *. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.php"). Read ()
My_callback $ = array (
& Nbsp; "subdir / bar.txt" => "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt",
& Nbsp; "foo.txt" => "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
)
Sed
Nós também pode gerar um script sed que faz as substituições para nós:
>>> Sistema ("hashedassets -n mapas my_callback / input map.sed / entrada txt *. / * / Saída txt *. /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("mapas / map.sed"). Read ()
s / subdir / bar .txt / Ys23Ag_5IOWqZCw9QGaVDdHwH00 .txt / g
s / foo .txt / C-7Hteo_D9vJXQ3UfzxbwnXaijM .txt / g

Nós também deve ser capaz de usar este diretamente com sed
>>> Com open ("replaceme.html", "w") como arquivo:
... File.write (' bar ')
O script é então aplicada como este:
>>> Sistema ("sed mapas -f / replaceme.html map.sed")
bar
No entanto, '.' não é tratado como coringa, então o seguinte não funciona
>>> Com open ("replaceme2.html", "w") como arquivo:
... File.write (' bar ')
>>> Sistema ("sed mapas -f / replaceme2.html map.sed")
bar
Especificando o tipo com -t
O tipo do mapa é adivinhado a partir do nome do arquivo, mas você pode especificá-lo bem:
>>> Sistema ("hashedassets -t js cantguessmaptype entrada / *. Txt de entrada / * / *. Txt saída /")
'input / foo.txt' cp 'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Especificando o comprimento do nome do arquivo com a opção -l
>>> Sistema ("hashedassets -l 10 mapas / input shortmap.json / entrada txt *. / * Saída txt / *. /")
'input / foo.txt' cp 'output / C-7Hteo_D9.txt'
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IO.txt'
>>> Sistema ("output rm / saída C-7Hteo_D9.txt / Ys23Ag_5IO.txt")
Especificando o resumo com -d
>>> Sistema ("hashedassets -d mapas md5 / input shortmap.json / *. Txt de entrada / * / *. Txt saída /")
'input / foo.txt' cp 'output / rL0Y20zC-Fzt72VPzMSk2A.txt'
cp 'input / subdir / bar.txt' 'output / N7UdGUp1E-RbVvZSTy1R8g.txt'
>>> Sistema ("output rm / saída rL0Y20zC-Fzt72VPzMSk2A.txt / N7UdGUp1E-RbVvZSTy1R8g.txt")
Re-usando um mapa
O programa lê-lo em mapas criados em uma corrida antes de copiar apenas arquivos que não foram alterados desde então. Então, os seguintes comandos não copiar todos os arquivos:
>>> Sistema ("mapas hashedassets / map.scss entrada / *. Txt de entrada / * / * saída txt. /")
>>> Sistema ("mapas hashedassets / input map.php / entrada txt *. / * / * Saída txt. /")
>>> Sistema ("mapas hashedassets / map.js entrada / *. Txt de entrada / * / * saída txt. /")
>>> Sistema ("mapas hashedassets / input map.json / entrada txt *. / * / * Saída txt. /")
>>> Sistema ("mapas hashedassets / input map.sed / entrada txt *. / * Saída txt / *. /")
>>> Sistema ("mapas hashedassets / input map.jsonp / entrada txt *. / * / * Saída txt. /")
>>> Sistema ("mapas hashedassets / input map.txt / entrada txt *. / * Saída txt / *. /")
Se tocarmos um dos arquivos de entrada no meio, o arquivo será lido, mas não copiado porque o hashsum é o mesmo:
>>> Sistema ('toque -t200504072214.12 entrada / foo.txt')
>>> Sistema ("mapas hashedassets / input map.json / entrada txt *. / * / * Saída txt. /")
Se mudarmos o conteúdo do arquivo, ele terá um novo nome:
>>> Com open ("input / foo.txt", "w") como arquivo:
... File.write ("foofoo")
>>> Sistema ("mapas hashedassets / input map.json / entrada txt *. / * / * Saída txt. /")
'output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt' rm
'input / foo.txt' cp 'output / QIDaFD7KLKQh0l5O6b8exdew3b0.txt'
Se você, em seguida, listar os arquivos no diretório, note que o antigo arquivo '' output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '' é ido:
>>> Sistema ("saída de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Se removermos um dos arquivos criados, ele é recriado:
>>> Sistema ("output rm / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt")
>>> Sistema ("mapas hashedassets / input map.json / entrada txt *. / * / * Saída txt. /")
cp 'input / subdir / bar.txt' 'output / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Sistema ("saída de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Se um arquivo que está prestes a ser removido porque o conteúdo original alterado, ele não é recriado:
>>> Sistema ("output rm / QIDaFD7KLKQh0l5O6b8exdew3b0.txt")
>>> Com open ("input / foo.txt", "w") como arquivo:
... File.write ("foofoofoo")
>>> Sistema ("mapas hashedassets / input map.json / entrada txt *. / * / * Saída txt. /")
'input / foo.txt' cp 'output / NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'
Tratamento de erros
No entanto, se executar este sem argumentos, ele falhar:
>>> Sistema ("hashedassets", externa = True)
Uso: hashedassets [opções] ARQMAPA SOURCE [...] DEST

hashedassets: Erro: É necessário especificar pelo menos SOURCE ARQMAPA e DEST

Requisitos :

  • Python

Programas semelhantes

Linux File Renamer
Linux File Renamer

17 Feb 15

BarracudaDrive
BarracudaDrive

15 Apr 15

ECMerge Pro
ECMerge Pro

14 Apr 15

Beyond Compare
Beyond Compare

17 Aug 18

Comentário para hashedassets

Comentários não encontrado
Adicionar comentário
Ligue imagens!