Partagez
Aller en bas
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Extraction et compilation du fichier Scripts.rvdata2 Empty Extraction et compilation du fichier Scripts.rvdata2

le Dim 25 Nov 2012 - 12:11
Comme sur mon projet perso, nous bossons à plusieurs scripteurs, il a fallu développer des solutions afin de ne pas écraser les modifications des uns et des autres. Le mieux étant de transmettre uniquement le ou les scripts modifiés et non le fichier Scripts.rvdata2. Pour cela, j'ai créé 2 scripts Ruby, l'un permettant d'extraire tous les scripts et de les copier dans un dossier Scripts, et l'autre permettant de réinjecter dans le Scripts.rvdata2, les fichiers scripts se trouvant dans le dossier Scripts.

Pour les faire fonctionner, il faut avoir l'interpreteur Ruby 1.9.3 d'installer

Extract.rb
Code:
#encoding: utf-8
require "zlib"

URL_SCRIPT = "./Data/"

def load_data(fic)
  File.open(fic, "rb") { |f|
    return ( Marshal.load(f))
  }
end

def inflate(string)
  zstream = Zlib::Inflate.new()
  buf = zstream.inflate(string)
  zstream.finish
  zstream.close
  buf
end

def deflate(string, level = Zlib::BEST_COMPRESSION)
  z = Zlib::Deflate.new(level)
  dst = z.deflate(string, Zlib::FINISH)
  z.close
  dst
end

# Si dossier n'existe pas
if Dir["Scripts"] != ["Scripts"]
  # Créer le dossier
  Dir.mkdir("Scripts")
end


obj_script = load_data(URL_SCRIPT + "Scripts.rvdata2")

num = 0

obj_script.each do |unScript |
  num += 1
  nom = unScript[1]
  code = inflate(unScript[2])

  if code.size > 10
    nom_fic = nom + ".rb"
    print "Création fichier : #{nom_fic}\n"
    fic = File.new("./Scripts/" +  nom_fic, "wb")
    fic.write(code)
    fic.close
  end
end

Compil.rb
Code:
#encoding: utf-8
require "zlib"

URL_SCRIPT = "./Data/"

#----------------------------------------------------------------------------
# save_data
#---------------------------------------------------------------------------- 
def save_data(data,fic)
  File.open(fic, "wb") { |f|
    Marshal.dump(data, f)
  }
end

def load_data(fic)
  File.open(fic, "rb") { |f|
    return ( Marshal.load(f))
  }
end

def inflate(string)
  zstream = Zlib::Inflate.new()
  buf = zstream.inflate(string)
  zstream.finish
  zstream.close
  buf
end

def deflate(string, level = Zlib::BEST_COMPRESSION)
  z = Zlib::Deflate.new(level)
  dst = z.deflate(string, Zlib::FINISH)
  z.close
  dst
end

# Si dossier n'existe pas
if Dir["Scripts"] != ["Scripts"]
  # Créer le dossier
  Dir.mkdir("Scripts")
end


obj_script = load_data(URL_SCRIPT + "Scripts.rvdata2")

num = 0

obj_script.each do |unScript |
  num += 1
  nom = unScript[1]

 
  nom_fic = nom + ".rb"
  if FileTest.exists?( "./Scripts/" +  nom_fic )
    fic = File.new("./Scripts/" +  nom_fic, "rb")
    code = fic.read
    fic.close
    unScript[2] = deflate(code)
  end

end

save_data(obj_script, URL_SCRIPT + "Scripts.rvdata2")
Eudy
Eudy
Membre

Nombre de messages : 14
Age : 28
Distinction : aucune
Date d'inscription : 19/10/2012

Extraction et compilation du fichier Scripts.rvdata2 Empty Re: Extraction et compilation du fichier Scripts.rvdata2

le Mar 27 Nov 2012 - 21:02
Excellent ça Very Happy, c'est dommage que ça ne soit pas une fonctionnalité de base.
C'est pratique avec un logiciel de gestion de version pour le travail en équipe.
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Extraction et compilation du fichier Scripts.rvdata2 Empty Re: Extraction et compilation du fichier Scripts.rvdata2

le Mar 27 Nov 2012 - 22:54
C'est justement le but ^_^, avec Ligthnox, on utilise Mercurial sur Bitbucket afin de gérer nos modification sur le projet Azaruss. On peut comme cela, bosser simultanément sur les scripts, sans perdre les modifications de l'autre.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum