hashedassets

Skjermbilde programvare:
hashedassets
Prog.varedetaljer:
Versjon: 0.3.1.1
Last opp dato: 12 May 15
Utvikler: Filip Noetzel
Lisens: Gratis
Popularitet: 6

Rating: 1.0/5 (Total Votes: 1)

hashedassets er et kommandolinjeverktøy som kopierer filer til filnavn basert på innholdet. & Nbsp; Det skriver også et kart over hva som ble omdøpt til hva, slik at du kan finne filene.
Hovedformålet med dette er at du kan legge til en fjern fremtid Utgår header til komponentene. Bruke hash basert filnavn er mye bedre enn å bruke $ VCS revisjonsnummer, fordi brukerne kun trenger å laste ned filer som ikke endres.
Opprette noen kildefilene
Først oppretter vi en fil som skal hashed:
>>> System ("mkdir input /")
>>> System ("mkdir input / katalog /")
>>> System ("mkdir kart /")
>>> Med åpen ("input / foo.txt", "w") som fil:
... File.write ("foo")
>>> Med åpen ("input / katalog / bar.txt", "w") som fil:
... File.write ("bar")
>>> System ('røre -t200504072213.12 input / foo.txt')
Enkel bruk
>>> System ("hashedassets kart / map.txt input / *. Txt input / * / *. Txt utgang /")
mkdir 'output'
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Skrive åpent ("maps / map.txt"). Les ()
katalog / bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
foo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt

>>> System ("ls utgang /")
C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
>>> System ("ls kart /")
map.txt
Logging nivå
Hvis vi forteller kommandoen til å være stille, betyr det ikke ut hva den gjør:
>>> System ("hashedassets -q kart / map2.txt input / *. Txt input / * / *. Txt utgang /")
Hvis vi forteller kommandoen til å være mer ordrik, logger det mer informasjon:
>>> System ("hashedassets -vvv kart / map3.txt input / *. Txt input / * / *. Txt utgang /")
Debug nivået satt til 10
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Modifisering tid er også bevart:
>>> Old_stat = os.stat ("input / foo.txt")
>>> New_stat = os.stat ("output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt")
>>> [(Getattr (old_stat, prop) == getattr (new_stat, prop))
... For rekvisitt i ('st_mtime', 'st_atime', 'st_ino',)]
[Sant, sant, False]
Vi kan enkelt gjøre dette med flere formater:
Java
>>> System ("hashedassets -N my_callback kart / map.js input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print åpen ("kart / map.js"). Les ()
Var my_callback = {
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "katalog / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
};
JSON
>>> System ("hashedassets -N my_callback kart / map.json input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Skrive åpent ("maps / map.json"). Les ()
{
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "katalog / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
}
JSONP
>>> System ("hashedassets -N my_callback kart / map.jsonp input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Skrive åpent ("maps / map.jsonp"). Les ()
my_callback ({
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "katalog / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
});
Sass
Sass er en metaspråk på toppen av CSS.
>>> System ("hashedassets -N my_callback kart / map.scss input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Skrive åpent ("maps / map.scss"). Les ()
mixin my_callback ($ direktivet $ bane) {
& Nbsp;if $ path == "katalog / bar.txt" {# {$ direktivet}: url ("Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"); }
& Nbsp;else hvis $ path == "foo.txt" {# {$ direktivet}: url ("C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt"); }
& Nbsp;else {
& Nbsp;warn "Ikke funnet" # {$ path} "i listen over eiendeler";
& Nbsp; # {$ direktivet}: url ($ path);
& Nbsp;}
}
PHP
>>> System ("hashedassets -N my_callback kart / map.php input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Skrive åpent ("maps / map.php"). Les ()
$ My_callback = array (
& Nbsp; "katalog / bar.txt" => "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt",
& Nbsp; "foo.txt" => "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
)
Sed
Vi kan også generere en sed skript som gjør erstatninger for oss:
>>> System ("hashedassets -n my_callback kart / map.sed input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print åpen ("maps / map.sed"). Les ()
s / subdir / bar .txt / Ys23Ag_5IOWqZCw9QGaVDdHwH00 .txt / g
s / foo .txt / C-7Hteo_D9vJXQ3UfzxbwnXaijM .txt / g

Vi bør også være i stand til å bruke denne direkte med sed
>>> Med åpen ("replaceme.html", "w") som fil:
... File.write (' bar ')
Manuset blir deretter brukt som dette:
>>> System ("sed -f kart / map.sed replaceme.html")
bar
Men '.' er ikke behandlet som wildcard, så følgende fungerer ikke
>>> Med åpen ("replaceme2.html", "w") som fil:
... File.write (' bar ')
>>> System ("sed -f kart / map.sed replaceme2.html")
bar
Spesifisere type med -t
Typen av kartet som gjettet fra filnavnet, men du kan angi det også:
>>> System ("hashedassets -t js cantguessmaptype input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Spesifisere lengden på filnavnet med -l
>>> System ("hashedassets -l 10 kart / shortmap.json input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / C-7Hteo_D9.txt'
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IO.txt'
>>> System ("rm utgang / C-7Hteo_D9.txt utgang / Ys23Ag_5IO.txt")
Spesifisere digest med -d
>>> System ("hashedassets -d md5 kart / shortmap.json input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / rL0Y20zC-Fzt72VPzMSk2A.txt'
cp 'input / katalog / bar.txt' 'utgang / N7UdGUp1E-RbVvZSTy1R8g.txt'
>>> System ("rm utgang / rL0Y20zC-Fzt72VPzMSk2A.txt utgang / N7UdGUp1E-RbVvZSTy1R8g.txt")
Re-bruker et kart
Programmet leser i maps det er opprettet i en tidligere løp å bare kopiere filer som ikke er endret siden. Så, gjør følgende kommandoer ikke kopiere noen filer:
>>> System ("hashedassets kart / map.scss input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.php input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.js input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.json input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.sed input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.jsonp input / *. Txt input / * / *. Txt utgang /")
>>> System ("hashedassets kart / map.txt input / *. Txt input / * / *. Txt utgang /")
Hvis vi berører en av de innspill filer i mellom, vil filen bli lest, men ikke kopiert fordi hashsum er den samme:
>>> System ('røre -t200504072214.12 input / foo.txt')
>>> System ("hashedassets kart / map.json input / *. Txt input / * / *. Txt utgang /")
Hvis vi endrer innholdet i filen, vil den få et nytt navn:
>>> Med åpen ("input / foo.txt", "w") som fil:
... File.write ("foofoo")
>>> System ("hashedassets kart / map.json input / *. Txt input / * / *. Txt utgang /")
rm 'utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'input / foo.txt' 'utgang / QIDaFD7KLKQh0l5O6b8exdew3b0.txt'
Hvis du deretter vise filene i katalogen, merk at den gamle filen '' utgang / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '' er borte:
>>> System ("ls utgang /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Hvis vi fjerner en av de opprettede filene, det blir gjenskapt:
>>> System ("rm utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt")
>>> System ("hashedassets kart / map.json input / *. Txt input / * / *. Txt utgang /")
cp 'input / katalog / bar.txt' 'utgang / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> System ("ls utgang /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Hvis en fil som er i ferd med å bli fjernet fordi det opprinnelige innholdet endret, er det ikke gjenskapes:
>>> System ("rm utgang / QIDaFD7KLKQh0l5O6b8exdew3b0.txt")
>>> Med åpen ("input / foo.txt", "w") som fil:
... File.write ("foofoofoo")
>>> System ("hashedassets kart / map.json input / *. Txt input / * / *. Txt utgang /")
cp 'input / foo.txt' 'utgang / NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'
Feilhåndtering
Men hvis vi kjører dette uten argumenter, svikter det:
>>> System ("hashedassets", ekstern = True)
Bruk: hashedassets [alternativer] mapfile SOURCE [...] DEST

hashedassets: error: Du må angi minst mapfile KILDE og MÅL

Krav

  • Python

Lignende programvare

Catfish
Catfish

17 Aug 18

Retrospective
Retrospective

17 Jul 15

Contenido
Contenido

14 Apr 15

VimExplorer
VimExplorer

2 Jun 15

Kommentarer til hashedassets

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!