update-nette – perl skript na aktualizaciu Nette v aktualnom adresari

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
edke
Člen | 198
+
0
-

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";