#!/usr/bin/ruby\r
-# coding: utf8\r
+# coding: utf-8\r
=begin\r
Copyright 2008 Grégory Burri\r
\r
along with Euphorik. If not, see <http://www.gnu.org/licenses/>.\r
=end\r
\r
-#TODO :\r
-# - mettre à jour les numéros de versions (créer une classe)\r
+# TODO :\r
# - création de unit tests (voir eunit) et validation avant la mise en prod\r
-# - faire une classe qui vérifie tous les js avec jslint\r
+\r
+# Met à disposition plusieurs outils (classes), tel que :\r
+# - Vérification du code javascript\r
+# - Mise à jour du numéro de version à partir du fichier VERSION\r
+# - Mise en production et en preproduction\r
+# tools.rb peut s'utiliser à la ligne de commande, exemples :\r
+# * Mise en production :\r
+# ./tools.rb --doprod gburri@euphorik.ch:/var/www/euphorik\r
+# * Mise en préproduction, l'emplacement de production peut être indiqué pour copier la base\r
+# ./tools.rb --dopreprod gburri@euphorik.ch:/var/www/euphorik_preprod --prod gburri@euphorik.ch:/var/www/euphorik\r
\r
# Classe permettant la vérification du code JS pas jslint.\r
+# Passe en revu chaque fichier js de manière récursive à partir d'un dossier de départ.s\r
class VerifJS \r
\r
def initialize(dossier)\r
elsif fichier[-3, 3] == '.js'\r
puts "== Vérification de #{dossier}/#{fichier} =="\r
system("java org.mozilla.javascript.tools.shell.Main jslint.js #{dossier}/#{fichier}")\r
+ puts $?.exitstatus\r
if $?.exitstatus > 0\r
return false\r
end\r
}\r
return true\r
end\r
+end
+
+# Classe de gestion de la version
+class Version
+ # @param dossier la racine du site (par exemple "/var/www/euphorik"
+ def initialize(dossier)
+ @dossier = dossier
+ File.open(@dossier + '/VERSION') {|file|
+ @version = file.readline()
+ }
+ # les fichiers HTML dans lesquels mettre à jour la version
+ @fichiers = ['/pages/about.html']
+ @balise = /(<span.+?class.*?=.*?"version".*?>).*?(<\/span>)/
+ end
+
+ # met à jour la version dans les fichiers @fichiers
+ def maj
+ @fichiers.each{|fichier|
+ fichier = @dossier + fichier
+ lines = IO.readlines(fichier)
+ File.open(fichier, 'w') {|io|
+ lines.each{|l|
+ io.write(l.sub(@balise){|m| $1 + @version + $2})
+ }
+ }
+ }
+ end
end\r
\r
-\r
-\r
+# Permet la mise en production et preproduction\r
class MiseEnProd\r
+ # obsolète !\r
@@rep_remote = '/var/www/euphorik'\r
@@host = 'euphorik.ch'\r
@@opt_rsync = ''\r
\r
- def initialize \r
+ def initialize(prod_uri, preprod_uri) \r
+ @prod = prod_uri\r
+ @preprod = preprod_uri\r
end \r
+ \r
+ # Effectue la mise en production.\r
+ def miseEnProd\r
+ end\r
+ \r
+ # Effectue la mise en préproduction.\r
+ def miseEnPreProd\r
+ end\r
\r
def creer_remote_rep(rep) \r
begin\r
end\r
end\r
\r
+# Traite la ligne de commande lorsque tools.rb est utilisé comme tel\r
+class Commande\r
+ def traiter\r
+ #miseEnProd = MiseEnProd.new("gburri@euphorik.ch:/var/www/euphorik", "gburri@euphorik.ch:/var/www/euphorik_preprod")\r
+ #miseEnProd.miseEnPreProd()\r
+\r
+ #verifJS = VerifJS.new("../js")\r
+ #verifJS.verifier()\r
+\r
+ #version = Version.new("..")\r
+ #version.maj()\r
+ end\r
+end\r
\r
-v = VerifJS.new("../js")\r
-v.verifier()
\ No newline at end of file
+cl = Commande.new\r
+cl.traiter()