hashedassets

Software skärmdump:
hashedassets
Mjukvaruinformation:
Version: 0.3.1.1
Ladda upp dagen: 12 May 15
Utvecklare: Filip Noetzel
Licens: Gratis
Popularitet: 6

Rating: 1.0/5 (Total Votes: 1)

hashedassets är ett kommandoradsverktyg som kopierar filer till filnamn som baseras på deras innehåll. & Nbsp; Det skriver också en karta över vad döptes till vad, så att du kan hitta dina filer.
Huvudsyftet med detta är att du kan lägga till en avlägsen framtid Utgår rubrik till dina komponenter. Använda hash baserad filnamn är mycket bättre än att använda din $ VCS versionsnummer, eftersom användarna behöver bara ladda ner filer som inte förändras.
Skapa vissa källfiler
Först skapar vi en fil som ska hashas:
>>> Systemet ("mkdir ingång /")
>>> Systemet ("mkdir inmatning / underkatalog /")
>>> Systemet ("mkdir kartor /")
>>> Med öppen ("input / foo.txt", "w") som en fil:
... File.write ("foo")
>>> Med öppen ("input / subdir / bar.txt", "w") som en fil:
... File.write ("bar")
>>> Systemet ("touch -t200504072213.12 ingång / foo.txt ')
Enkel användning
>>> Systemet ("hashedassets kartor / map.txt input / *. Txt-ingång / * txt utgång / *. /")
mkdir "output"
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.txt"). Läsa ()
subdir / bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
foo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt

>>> Systemet ("ls utgång /")
C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
>>> Systemet ("ls kartor /")
map.txt
Loggningsnivån
Om vi ​​berättar kommandot att vara tyst, inte ut vad den gör:
>>> Systemet ("hashedassets Q kartor / map2.txt input / *. Txt input / * / txt utgång *. /")
Om vi ​​berättar kommandot för att vara mer utförlig, loggar det mer information:
>>> Systemet ("hashedassets -vvv kartor / map3.txt input / *. Txt input / * / txt utgång *. /")
Debug inställd på 10
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
Ändring tiden bevaras också:
>>> Old_stat = os.stat ("input / foo.txt")
>>> New_stat = os.stat ("output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt")
>>> [(Getattr (old_stat, prop) == getattr (new_stat, prop))
... För prop i ("st_mtime", "st_atime", "st_ino")]
[Sant, sant, falskt]
Vi kan enkelt göra detta med flera olika format:
JavaScript
>>> Systemet ("hashedassets -n my_callback kartor / map.js input / *. Txt input / * / * txt utgång. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.js"). Läsa ()
var my_callback = {
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
};
JSON
>>> Systemet ("hashedassets -n my_callback kartor / map.json input / *. Txt-ingång / * txt utgång / *. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.json"). Läsa ()
{
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
}
JSONP
>>> Systemet ("hashedassets -n my_callback kartor / map.jsonp input / *. Txt-ingång / * txt utgång / *. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.jsonp"). Läsa ()
my_callback ({
& Nbsp; "foo.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
});
Sass
Sass är ett metaspråk ovanpå CSS.
>>> Systemet ("hashedassets -n my_callback kartor / map.scss input / *. Txt input / * / * txt utgång. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.scss"). Läsa ()
mixin my_callback ($ direktivet $ bana) {
& Nbsp;if $ väg == "subdir / bar.txt" {# {direktivet $}: url ("Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"); }
& Nbsp;else om $ path == "foo.txt" {# {direktivet $}: url ("C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt"); }
& Nbsp;else {
& Nbsp;warn "Did not find" # {$ path} "i listan över tillgångar";
& Nbsp; # {direktivet $}: url ($ bana);
& Nbsp;}
}
PHP
>>> Systemet ("hashedassets -n my_callback kartor / map.php input / *. Txt-ingång / * txt utgång / *. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.php"). Läsa ()
$ My_callback = array (
& Nbsp; "subdir / bar.txt" => "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt",
& Nbsp; "foo.txt" => "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
)
Sed
Vi kan också skapa en sed skript som gör ersättare för oss:
>>> Systemet ("hashedassets -n my_callback kartor / map.sed input / *. Txt input / * / txt utgång *. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Print öppen ("kartor / map.sed"). Läsa ()
s / subdir / bar .txt / Ys23Ag_5IOWqZCw9QGaVDdHwH00 .txt / g
s / foo .txt / C-7Hteo_D9vJXQ3UfzxbwnXaijM .txt / g

Vi bör också kunna använda detta direkt med sed
>>> Med öppen ("replaceme.html", "w") som en fil:
... File.write (' bar ')
Skriptet appliceras sedan så här:
>>> Systemet ("SED -f kartor / map.sed replaceme.html")
bar
Men "." inte behandlas som jokertecken, så att följande fungerar inte
>>> Med öppen ("replaceme2.html", "w") som en fil:
... File.write (' bar ')
>>> Systemet ("SED -f kartor / map.sed replaceme2.html")
bar
Ange typ med -t
Typen av kartan är gissat från filnamnet, men du kan ange det också:
>>> Systemet ("hashedassets -t js cantguessmaptype input / *. Txt input / * / *. Txt utgång /")
cp "input / foo.txt '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
Ange längden på filnamnet med -l
>>> Systemet ("hashedassets -l 10 kartor / shortmap.json input / *. Txt-ingång / * txt utgång / *. /")
cp "input / foo.txt '' utgång / C-7Hteo_D9.txt '
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IO.txt"
>>> Systemet ("rm utgång / C-7Hteo_D9.txt utgång / Ys23Ag_5IO.txt")
Ange sammandrag med -d
>>> Systemet ("hashedassets -d md5 kartor / shortmap.json input / *. Txt input / * / *. Txt utgång /")
cp "input / foo.txt '' utgång / rL0Y20zC-Fzt72VPzMSk2A.txt"
cp "input / subdir / bar.txt '' utgång / N7UdGUp1E-RbVvZSTy1R8g.txt"
>>> Systemet ("rm utgång / rL0Y20zC-Fzt72VPzMSk2A.txt utgång / N7UdGUp1E-RbVvZSTy1R8g.txt")
Återanvända en karta
Programmet läser in kartor det skapade i en tidigare körning endast kopiera filer som inte har ändrats sedan. Så, gör följande kommandon inte kopiera några filer:
>>> Systemet ("hashedassets kartor / map.scss input / *. Txt input / * / * txt utgång. /")
>>> Systemet ("hashedassets kartor / map.php input / *. Txt input / * / * txt utgång. /")
>>> Systemet ("hashedassets kartor / map.js input / *. Txt input / * / * txt utgång. /")
>>> Systemet ("hashedassets kartor / map.json input / *. Txt input / * / * txt utgång. /")
>>> Systemet ("hashedassets kartor / map.sed input / *. Txt-ingång / * txt utgång / *. /")
>>> Systemet ("hashedassets kartor / map.jsonp input / *. Txt input / * / * txt utgång. /")
>>> Systemet ("hashedassets kartor / map.txt input / *. Txt-ingång / * txt utgång / *. /")
Om vi ​​trycker på en av indatafiler i mellan, kommer filen att läsa men inte kopieras eftersom hashsum är densamma:
>>> Systemet ("touch -t200504072214.12 ingång / foo.txt ')
>>> Systemet ("hashedassets kartor / map.json input / *. Txt input / * / * txt utgång. /")
Om vi ​​ändrar filens innehåll, kommer det att få ett nytt namn:
>>> Med öppen ("input / foo.txt", "w") som en fil:
... File.write ("foofoo")
>>> Systemet ("hashedassets kartor / map.json input / *. Txt input / * / * txt utgång. /")
RM "utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '
cp "input / foo.txt '' utgång / QIDaFD7KLKQh0l5O6b8exdew3b0.txt"
Om du sedan lista filerna i katalogen, notera att den gamla filen '' utgång / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '' är borta:
>>> Systemet ("ls utgång /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Om vi ​​tar bort en av de skapade filerna, blir det åter:
>>> Systemet ("rm utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt")
>>> Systemet ("hashedassets kartor / map.json input / *. Txt input / * / * txt utgång. /")
cp "input / subdir / bar.txt '' utgång / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
>>> Systemet ("ls utgång /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Om en fil som är på väg att tas bort eftersom det ursprungliga innehållet ändras, är det inte återskapas:
>>> Systemet ("rm utgång / QIDaFD7KLKQh0l5O6b8exdew3b0.txt")
>>> Med öppen ("input / foo.txt", "w") som en fil:
... File.write ("foofoofoo")
>>> Systemet ("hashedassets kartor / map.json input / *. Txt input / * / * txt utgång. /")
cp "input / foo.txt '' utgång / NdbmnXyjdY2paFzlDw9aJzCKH9w.txt"
Felhantering
Men om vi kör detta utan argument, inte det:
>>> Systemet ("hashedassets", extern = sant)
Användning: hashedassets [alternativ] TABELLFIL SOURCE [...] DEST

hashedassets: error: Du måste ange minst TABELLFIL KÄLLA och DEST

Krav :

  • Python

Liknande mjukvara

AsmFile
AsmFile

2 Jun 15

Nasame
Nasame

20 Feb 15

Kommentarer till hashedassets

Kommentarer hittades inte
Kommentar
Slå på bilder!