update-nette – perl skript na aktualizaciu Nette v aktualnom adresari
- edke
- Člen | 198
Po prechode na git je odrazu jednoduche aktualizovat cast projektu, kedze uz nie je v kazdom adresari meta info v .svn foldroch. Nad aktualizaciou Nette (ale aj dibi, pripadne Texy) chcem mat kontrolu, takze nejake automaticke aktualizovanie neprichadza do uvahy. A aktualizovat to rucne zas nie je az taky problem, ale preco si to nezjednodusit ? :) Tak som si napisal skript, tentokrat v perle, ktory ulahci caste aktualizovanie Nette.
Co skript potrebuje
- pobezi to isto na kazdom novsom linuxe, nemal by byt problem to rozbehat ako pod Mac-om, tak na BSD a pod.
- aria2c download utility, na debian like distros balicek aria2 (po pripade nie je problem zamenit za wget, curl a pod.)
- unzip
Instalacia
Staci rozbalit a umiestnit do adresara, ktory mate definovany v PATH, pre lahke pouzitie. Ja to mam umiestnene v ~/bin/.
Samozrejme potrebuje byt spustitelny, v prilozenom tar-e uz tak aj je nastaveny, ak by ale bol problem, tak chmod u+x ./update-nette
Pouzitie
Vo vasom projekte vojdite cez terminal do adresara, v ktorom mate ulozene Nette (libs/Nette). Staci uz len pustit:
#zameni aktualnu verziu za minified verziu
update-nette
alebo
#zameni aktualnu verziu za full verziu
update-nette --full
POZOR
Ak v danom adresari existuje pri spusteni subor loader.php, bude rekurzivne zmazany cely obsah aktualneho adresara !
Samotny skript
Ten je jednoduchy, stiahnut si ho mozte z mojho dropboxu. Je to prva verzia, dufam ze niekomu nenarobi nejake problemy. Ak tam budu nejake nedostatky, rad opravim. Skript je samozrejme nedokonaly, v pripade zmeny URL, nazvu Nette archivu a pod. bude nutne skript modifikovat. Ak existuje nejaky alias vo forme nette-latest.zip, to by bolo super. Tak dufam, ze sa to aspon niekomu zide :)
#!/usr/bin/perl
use strict;
use warnings;
use Digest::MD5 qw(md5 md5_hex md5_base64);
use Getopt::Long;
use Cwd;
my $dir = cwd;
my $temp = "/tmp/update-nette-" . md5_hex time;
my $loader= "loader.php";
my $url= "https://files.nette.org/";
my $file= "nette-0.9.0-PHP-5.2.zip";
my $full = 0;
my $result = GetOptions ("full" => \$full);
mkdir $temp;
# clean current dir if there exists loader.php
if ( -e $loader )
{
system 'rm -Rv ./*' # cleaning current dir
}
system "aria2c --dir=$temp --out=archive.zip $url$file";
system "unzip -d $temp $temp/archive.zip";
# full version
if ( $full )
{
system "cp -R -t $dir $temp/nette-0.9-PHP-5.2/Nette/*";
}
# minified
else {
system "cp -R -t $dir $temp/nette-0.9-PHP-5.2/Nette.minified/loader.php";
}
#cleanup
system "rm -Rv $temp";