ADD mini mise à jour de tools.rb
[euphorik.git] / tools / tools.rb
index 2a5a1fe..f2e2067 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/ruby\r
-# coding: utf8\r
+# coding: utf-8\r
 =begin\r
 Copyright 2008 Grégory Burri\r
 \r
@@ -19,10 +19,18 @@ You should have received a copy of the GNU General Public License
 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
@@ -45,6 +53,7 @@ class VerifJS
          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
@@ -52,17 +61,54 @@ class VerifJS
       }\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
@@ -129,6 +175,19 @@ class MiseEnProd
    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()