hashedassets

Logiciel capture d'écran:
hashedassets
Détails logiciels:
Version: 0.3.1.1
Date de transfert: 12 May 15
Développeur: Filip Noetzel
Licence: Gratuit
Popularité: 6

Rating: 1.0/5 (Total Votes: 1)

hashedassets est un outil de ligne de commande qui copie les fichiers à des noms de fichiers basés sur leur contenu. & Nbsp; Il écrit aussi une carte de ce qui a été renommé à ce que, si vous pouvez trouver vos fichiers.
Le but principal de ceci est que vous pouvez ajouter un avenir lointain Expire-tête à vos composants. Utilisation de hachage basée noms de fichiers est beaucoup mieux que d'utiliser votre numéro de révision $ VCS, parce que les utilisateurs ont seulement besoin de télécharger des fichiers qui ne changent pas.
Créer des fichiers source
Tout d'abord, nous créons un fichier qui sera haché:
>>> Système ("entrée mkdir /")
>>> Système ("entrée mkdir / subdir /")
>>> Système («cartes mkdir /")
>>> Avec open ("entrée / foo.txt", "w") en tant que fichier:
... File.write ("foo")
>>> Avec open ("entrée / subdir / bar.txt", "w") en tant que fichier:
... File.write ("bar")
>>> Système («toucher -t200504072213.12 entrée / foo.txt ')
Utilisation simple
>>> Système ("cartes de hashedassets / map.txt entrée / entrée txt *. / * Sortie txt / *. /")
«production» mkdir
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.txt"). Read ()
subdir / bar.txt: Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
foo.txt: C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt

>>> Système ("sortie de ls /")
C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
>>> Système («cartes ls /")
map.txt
Niveau de journalisation
Si nous disons la commande pour être tranquille, il ne imprime pas ce qu'il fait:
>>> Système ("/ txt l'entrée de cartes d'entrée / de map2.txt de hashedassets *. / * / Sortie txt *. /")
Si nous disons la commande d'être plus prolixe, il enregistre plus d'informations:
>>> Système ("/ txt l'entrée de cartes d'entrée / de map3.txt de hashedassets *. / * / Sortie txt *. /")
niveau de débogage fixé à 10
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Heure de modification est également préservée:
>>> Old_stat = os.stat ("entrée / foo.txt")
>>> New_stat = os.stat ("output / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt")
>>> [(Getattr (old_stat, prop) == getattr (new_stat, prop))
... Pour accessoire dans ('st_mtime', 'st_atime', 'st_ino',)]
[Vrai, True, False]
Nous pouvons le faire facilement avec de multiples formats:
JavaScript
>>> Système ("hashedassets -n cartes my_callback / Map.js entrée / *. Txt entrée / * / * Sortie txt. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / Map.js"). Read ()
var my_callback = {
& Nbsp; "toto.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
};
JSON
>>> Système ("hashedassets -n cartes my_callback / entrée de map.json / entrée txt *. / * Sortie txt / *. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.json"). Read ()
{
& Nbsp; "toto.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
}
JSONP
>>> Système ("/ * Sortie txt hashedassets -n cartes my_callback / entrée de map.jsonp / entrée txt *. / *. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.jsonp"). Read ()
my_callback ({
& Nbsp; "toto.txt": "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
& Nbsp; "subdir / bar.txt": "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"
});
Toupet
Sass est un méta-langage sur le dessus de CSS.
>>> Système ("hashedassets -n cartes my_callback / map.scss entrée / *. Txt entrée / * / * Sortie txt. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.scss"). Read ()
mixin my_callback (directive $, $ path) {
& Nbsp;if $ path == "subdir / bar.txt" {#} {$ directive: url ("Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt"); }
& Nbsp;Else si $ path == "toto.txt" {#} {$ directive: url ("C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt"); }
& Nbsp;Else {
& Nbsp;warn "Vous ne trouvez pas" # {$ path} "dans la liste des actifs";
& Nbsp; # {$} directive: url ($ path);
& Nbsp;}
}
PHP
>>> Système ("hashedassets -n cartes my_callback / entrée de map.php / entrée txt *. / * Sortie txt / *. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.php"). Read ()
My_callback $ = array (
& Nbsp; "subdir / bar.txt" => "Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt",
& Nbsp; "toto.txt" => "C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt",
)
Sed
Nous pouvons également générer un script sed qui ne les remplacements pour nous:
>>> Système ("hashedassets -n cartes de my_callback / entrée map.sed / entrée txt *. / * / Sortie txt *. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Print open ("cartes / map.sed"). Read ()
s / subdir / bar .txt / Ys23Ag_5IOWqZCw9QGaVDdHwH00 .txt / g
s / foo .txt / C-7Hteo_D9vJXQ3UfzxbwnXaijM .txt / g

Nous devrions également être en mesure d'utiliser ce directement avec sed
>>> Avec open ("replaceme.html", "w") en tant que fichier:
... File.write (' bar ')
Le script est ensuite appliqué comme ceci:
>>> Système ("cartes -f sed / replaceme.html map.sed")
bar
Cependant, '.' ne soit pas traité comme joker, de sorte que le suivant ne fonctionne pas
>>> Avec open ("replaceme2.html", "w") en tant que fichier:
... File.write (' bar ')
>>> Système ("cartes -f sed / replaceme2.html map.sed")
bar
Spécifiant le type avec -t
Le type de la carte est deviné du nom de fichier, mais vous pouvez le spécifier ainsi:
>>> Système ("hashedassets -t js cantguessmaptype entrée / *. Txt entrée / * / *. Txt sortie /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
Spécification de la longueur du nom du fichier avec -l
>>> Système ("/ * Sortie txt 10 cartes / entrée de shortmap.json / entrée *. Txt de hashedassets / *. /")
'entrée / foo.txt' cp 'sortie / C-7Hteo_D9.txt'
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IO.txt'
>>> Système ("sortie rm / sortie C-7Hteo_D9.txt / Ys23Ag_5IO.txt")
Spécification de la digestion avec -d
>>> Système ("hashedassets -d cartes md5 / entrée de shortmap.json / *. Txt entrée / * / *. Txt sortie /")
'entrée / foo.txt' cp 'sortie / rL0Y20zC-Fzt72VPzMSk2A.txt'
cp 'entrée / subdir / bar.txt' 'sortie / N7UdGUp1E-RbVvZSTy1R8g.txt'
>>> Système ("/ sortie rL0Y20zC-Fzt72VPzMSk2A.txt sortie rm / N7UdGUp1E-RbVvZSTy1R8g.txt")
Re-en utilisant une carte
Le programme lit dans les cartes qu'il a créés dans une course avant que copier des fichiers qui ne l'ont pas changé depuis. Ainsi, les commandes suivantes ne copient pas les fichiers:
>>> Système ("cartes de hashedassets / map.scss entrée / *. Txt entrée / * / * Sortie txt. /")
>>> Système ("cartes de hashedassets / entrée de map.php / entrée txt *. / * / * Sortie txt. /")
>>> Système ("cartes de hashedassets / Map.js entrée / *. Txt entrée / * / * Sortie txt. /")
>>> Système ("cartes de hashedassets / entrée de map.json / entrée txt *. / * / * Sortie txt. /")
>>> Système ("cartes de hashedassets / entrée map.sed / entrée txt *. / * Sortie txt / *. /")
>>> Système ("cartes de hashedassets / entrée de map.jsonp / entrée txt *. / * / * Sortie txt. /")
>>> Système ("cartes de hashedassets / map.txt entrée / entrée txt *. / * Sortie txt / *. /")
Si nous touchons un des fichiers d'entrée entre les deux, le fichier sera lu mais pas copié car le checksum est le même:
>>> Système («toucher -t200504072214.12 entrée / foo.txt ')
>>> Système ("cartes de hashedassets / entrée de map.json / entrée txt *. / * / * Sortie txt. /")
Si nous changeons le contenu du fichier, il recevra un nouveau nom:
>>> Avec open ("entrée / foo.txt", "w") en tant que fichier:
... File.write ("foufou")
>>> Système ("cartes de hashedassets / entrée de map.json / entrée txt *. / * / * Sortie txt. /")
'sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt' rm
'entrée / foo.txt' cp 'sortie / QIDaFD7KLKQh0l5O6b8exdew3b0.txt'
Si vous ensuite de lister les fichiers dans le répertoire, notez que l'ancien fichier '' sortie / C-7Hteo_D9vJXQ3UfzxbwnXaijM.txt '' est parti:
>>> Système ("sortie de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Si nous supprimons un des fichiers créés, qu'il soit recréé:
>>> Système ("sortie rm / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt")
>>> Système ("cartes de hashedassets / entrée de map.json / entrée txt *. / * / * Sortie txt. /")
cp 'entrée / subdir / bar.txt' 'sortie / Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt'
>>> Système ("sortie de ls /")
QIDaFD7KLKQh0l5O6b8exdew3b0.txt
Ys23Ag_5IOWqZCw9QGaVDdHwH00.txt
Si un fichier qui est sur le point d'être retiré parce que le contenu original a changé, il est pas recréé:
>>> Système ("sortie rm / QIDaFD7KLKQh0l5O6b8exdew3b0.txt")
>>> Avec open ("entrée / foo.txt", "w") en tant que fichier:
... File.write ("foofoofoo")
>>> Système ("cartes de hashedassets / entrée de map.json / entrée txt *. / * / * Sortie txt. /")
'entrée / foo.txt' cp 'sortie / NdbmnXyjdY2paFzlDw9aJzCKH9w.txt'
Gestion des erreurs
Cependant, si nous courons ce sans arguments, il échoue:
>>> Système ("hashedassets", externe = True)
Utilisation: hashedassets [options] MAPFILE SOURCE [...] DEST

hashedassets: Erreur: Vous devez spécifier au moins MAPFILE SOURCE et DEST

Exigences :

  • Python

Logiciel similaire

Worker
Worker

15 Feb 15

eXtplorer
eXtplorer

15 Feb 15

KRename
KRename

15 Apr 15

pygamebrowser
pygamebrowser

12 May 15

Commentaires à hashedassets

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!