(no commit message)
[euphorik.git] / tools / tools.rb
index 2a5a1fe..aff62af 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
@@ -54,15 +63,52 @@ class VerifJS
    end\r
 end\r
 \r
+# Classe de gestion de la version\r
+class Version    \r
+   # @param dossier la racine du site (par exemple "/var/www/euphorik"\r
+   def initialize(dossier)\r
+      @dossier = dossier\r
+      File.open(@dossier + '/VERSION') {|file|\r
+         @version = file.readline()\r
+      }\r
+      # les fichiers HTML dans lesquels mettre à jour la version\r
+      @fichiers  = ['/pages/about.html']\r
+      @balise = /(<span.+?class.*?=.*?"version".*?>).*?(<\/span>)/\r
+   end\r
+   \r
+   # met à jour la version dans les fichiers @fichiers\r
+   def  maj   \r
+      @fichiers.each{|fichier|\r
+         fichier = @dossier + fichier\r
+         lines = IO.readlines(fichier)\r
+         File.open(fichier, 'w') {|io|\r
+            lines.each{|l|\r
+               io.write(l.sub(@balise){|m| $1 + @version + $2})\r
+            }\r
+         }   \r
+      }\r
+   end\r
+end\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
@@ -130,5 +176,20 @@ class MiseEnProd
 end\r
 \r
 \r
-v = VerifJS.new("../js")\r
-v.verifier()
\ No newline at end of file
+# Traite la ligne de commande lorsque tools.rb est utilisé comme tel\r
+class Commande\r
+   def traiter\r
+      ARGV\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
+cl = Commande.new\r
+cl.traiter()\r