Changeset 66d16b0 in tol


Ignore:
Timestamp:
Oct 6, 2010, 5:50:50 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
76b12054
Parents:
c1fdad2
Message:

Refs #949

Nuevo método BuildPackage para la creación del paquete .zip
Nuevo método UploadPackageFromLocalZip para la subida de paquetes a un repositorio en una base de datos remota

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2579 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/stdlib/general/TolPackage/server.tol

    rc1fdad2 r66d16b0  
    3232};
    3333
     34//////////////////////////////////////////////////////////////////////////////
     35Text BuildPackage(Text name, Text sourceRoot, Text destination)
     36//////////////////////////////////////////////////////////////////////////////
     37{
     38  Text _MID = "[Build.Package] ";
     39  WriteLn(_MID+sourceRoot+name+" -> "+destination);
     40  Set pkgCnt = Eval("Set IncludeTOL(\""+
     41     sourceRoot+name+"/"+name+".tol\",True)");
     42  NameBlock pkg = pkgCnt[1];
     43  Text name.version = TolPackage::GetCurrentNameVersion(name,True);
     44  Set dependencies = TolPackage::GetDeepDependencies(name, True);
     45  Set nonTolResources=If(!ObjectExist("Set",name+"::_.autodoc.nonTolResources"),
     46    Copy(Empty),pkg::_.autodoc.nonTolResources);
     47
     48  Text ppRoot_ = destination+name.version;
     49  Text ppRoot = ppRoot_+"/";
     50  Real Ois.Store(pkgCnt,ppRoot+name.version+".oza");
     51  Real OSDirMake(ppRoot);
     52
     53  Real cleanResource(Text dest)
     54  {
     55    Set dir = GetDir(dest);
     56    Set sub = dir[2];
     57    Set EvalSet(sub,Real(Text s)
     58    {
     59      Text dest_new = dest+"/"+s;
     60      Text ls = ToLower(s);
     61      If(Or(ls==".svn",ls=="svn",ls=="cvs",ls==".cvs"),
     62        OSDirRemove(dest_new),
     63        cleanResource(dest_new))
     64    });
     65    True
     66  };
     67  Real processResourceText(Text resource)
     68  {
     69    Text orig = sourceRoot+"/"+name+"/"+resource;
     70    Text dest = ppRoot+"/"+resource;
     71    Real OSDirMake(dest);
     72    If(OSUnix, OSDirRemove(dest));
     73    WriteLn("TRACE dir copy '"+orig+"' -> '"+dest+"'");
     74    Real OSDirCopy(orig,dest);
     75    cleanResource(dest)
     76  };
     77  Real processResourceSet(Set resourceSet)
     78  {
     79    Set EvalSet(resourceSet, processResourceText);
     80    True
     81  };
     82  Set EvalSet(nonTolResources, Real (Anything res)
     83  {
     84    Text gra = Grammar(res);
     85    WriteLn(_MID+"Processing resource "+gra+" "<<res);
     86    Eval("processResource"+gra+"(res)")
     87  });
     88  Text ppr = ReplaceSlash(ppRoot_);
     89  Real PackArchive::PackFull("ZipArchive", ppr);
     90  Real OSDirRemove(ppRoot);
     91  ppRoot_+".zip"
     92};
     93
     94
     95//////////////////////////////////////////////////////////////////////////////
     96Real UploadPackageFromLocalZip(NameBlock dbConnect, Text pkg.path.zip)
     97//////////////////////////////////////////////////////////////////////////////
     98{
     99  Text root = GetFilePath(pkg.path.zip);
     100  Text pkg.name.zip = GetFileName(pkg.path.zip);
     101  Text pkg.name = Replace(pkg.name.zip,".zip","");
     102  Real PackArchive::UnpackFull("ZipArchive",root+pkg.name);
     103  Set pkgCnt = Include(root+pkg.name+"/"+pkg.name+".oza");
     104  NameBlock pkg = pkgCnt[1];
     105  Text name = Name(pkgCnt[1]);
     106
     107  Real dbConnect::Open(0);
     108  Real DBExecQuery("set client_encoding to '""latin1""'");
     109  Text repository.query = "
     110  SELECT id_repository, co_repository, ds_repository, co_access, te_url
     111  FROM
     112    repository_d_def AS D,
     113    repository_d_access AS A
     114  WHERE
     115      A.id_access = D.id_access
     116  AND te_url = '"+pkg::_.autodoc.url+"'
     117  ";
     118  WriteLn(repository.query);
     119  Set repository = DBTable(repository.query);
     120
     121  Set dep = TolPackage::GetDeepDependencies(name, True);
     122  Set res = pkg::_.autodoc.nonTolResources;
     123  Text bl_zip = EncodeBase64FromFile(pkg.path.zip);
     124
     125//Text exist.query =
     126  Text insert.query = "
     127  INSERT INTO repository_f_packages(
     128    id_repository, co_name, nu_version_high, nu_version_low, te_brief,
     129    te_keys, te_authors, te_mintolversion, dh_releasedate, te_dependencies,
     130    te_nontolresources, bl_zip)
     131  VALUES (
     132   "<<(repository[1])::id_repository+", "+
     133   "'"+name+"', \n"+
     134   ""<<pkg::_.autodoc.version.high+", \n"+
     135   ""<<pkg::_.autodoc.version.high+", \n"+
     136   "'"<<pkg::_.autodoc.brief+"', \n"+
     137   "'"<<pkg::_.autodoc.keys+"', \n"+
     138   "'"<<pkg::_.autodoc.authors+"', \n"+
     139   "'"<<pkg::_.autodoc.minTolVersion+"', \n"+
     140   "'"<<FormatDate(NowGmt,"%c%Y-%m-%d %h:%i:%s")+"', \n"+
     141   "'"<<If(Card(dep),""<<dep,"")+"', \n"+
     142   "'"<<If(Card(res),""<<res,"")+"', \n"+
     143   "'"<<bl_zip+"' \n"+
     144  ");";
     145
     146  Real num_reg = DBExecQuery(insert.query);
     147  If(!num_reg, WriteLn(
     148    "Package is already in the repository. Please upgrade the "
     149    "version numbers or delete the register of existent package.","E"));
     150  Real dbConnect::Close(0);
     151  num_reg
     152};
     153
    34154#Embed "builder.tol"
    35155
Note: See TracChangeset for help on using the changeset viewer.