Changeset 08d3a10 in tol


Ignore:
Timestamp:
Oct 19, 2010, 9:12:40 AM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
cc468c0
Parents:
a7820f3
Message:

Mejora en el control de errores de BuildAndUploadPackage
Nuevo método RemovePackageVersion para el borrado de paquetes

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

File:
1 edited

Legend:

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

    ra7820f3 r08d3a10  
    179179"creado con TolPackage::Server::BuildPackage y dado por el argumento:\n"
    180180"  Text pkg.path.zip = \"<directory>/<name>.<high>.<low>.zip\"\n";
    181 Real UploadPackage(NameBlock dbConnect, Text pkg.path.zip)
     181Real UploadPackage(NameBlock repository.db, Text pkg.path.zip)
    182182//////////////////////////////////////////////////////////////////////////////
    183183{
    … …  
    212212    Real pkg::_.autodoc.version.low := nu_version_low
    213213  });
    214   Real dbConnect::Open(0);
     214  Real repository.db::Open(0);
    215215  Real DBExecQuery("set client_encoding to '""latin1""'");
    216216  Text repository.query = "
    … …  
    286286      "Package is already in the repository. Please upgrade the "
    287287      "version numbers or delete the register of existent package.","E"));
    288     Real dbConnect::Close(0);
     288    Real repository.db::Close(0);
    289289    num_reg
    290290  })
    … …  
    302302"pero se puede borrar si se desea.\n"
    303303"Por último se chequeará la instalación según lo indicado:"
    304 " Si checkInstallMode = \"local\" se usa la copia local comprimida.\n"
    305 " Si checkInstallMode = \"remote\" se instala desde el repositorio.\n"
    306 " En otro caso no se instala nada.";
     304"  Si checkInstallMode = \"local\" se usa la copia local comprimida.\n"
     305"  Si checkInstallMode = \"remote\" se instala desde el repositorio.\n"
     306"  En otro caso no se instala nada.\n"
     307"Devuelve un código que indica en qué fase ha habido problemas:\n"
     308"  0 todo parece haber ido bien\n"
     309"  1 hubo fallos en la construcción (entonces la subida no se intenta)\n"
     310"  2 no hubo fallos en la construcción pero sí en la subida (la instalación no se intenta)\n"
     311"  3 no hubo fallos en la construcción ni en la subida pero la instalación ha dado errores\n";
    307312Real BuildAndUploadPackage(
    308313  Text name,                //Nombre del paquete (sin versión)
    … …  
    313318//////////////////////////////////////////////////////////////////////////////
    314319{
     320  Real nErr0 = Copy(NError);
    315321  Text tmp = _.localRoot;
    316322  Real OSDirMake(tmp);
    317323  Text pkg.path.zip = TolPackage::Server::BuildPackage(
    318324    name, sourceRoot, tmp, True);
    319   Real TolPackage::Server::UploadPackage(
    320     repository.db, pkg.path.zip);
    321   Text pkg.name = Replace(GetFileName(pkg.path.zip),".zip","");
    322   Real ok = Case(
    323   ToLower(checkInstallMode) == "remote",
    324   {
    325     TolPackage::Client::RemoteInstallPackage(repository.url, pkg.name, True)
     325  Real nErr1 = Copy(NError);
     326  If(nErr1>nErr0,
     327  {
     328    WriteLn("Es posible que no se haya podido construir el paquete correctamente","W");
     329    1
    326330  },
    327   ToLower(checkInstallMode) == "local",
    328   {
    329     Real TolPackage::Client::LocalInstallPackage(pkg.path.zip)
    330   },
    331   1==1,True)
     331  {
     332    Real TolPackage::Server::UploadPackage(
     333      repository.db, pkg.path.zip);
     334    Real nErr2 = Copy(NError);
     335    If(nErr2>nErr1,
     336    {
     337      WriteLn("Es posible que no se haya podido enviar el paquete al repositorio","W");
     338      2
     339    },
     340    {
     341      Text pkg.name = Replace(GetFileName(pkg.path.zip),".zip","");
     342      Real ok = Case(
     343      ToLower(checkInstallMode) == "remote",
     344      {
     345        TolPackage::Client::RemoteInstallPackage(repository.url, pkg.name, True)
     346      },
     347      ToLower(checkInstallMode) == "local",
     348      {
     349        Real TolPackage::Client::LocalInstallPackage(pkg.path.zip)
     350      },
     351      1==1,True);
     352      Real nErr3 = Copy(NError);
     353      If(And(ok,nErr3==nErr2), 0,
     354      {
     355        WriteLn("La instalación en modo '"+checkInstallMode+"' ha dado problemas","W");
     356        3
     357      })
     358    })
     359  })
     360};
     361
     362//////////////////////////////////////////////////////////////////////////////
     363Text _.autodoc.member.RemovePackageVersion =
     364"Borra una versión de un paquete del repositorio.\n"
     365"Esta función no es reversible, así que debe usarse con mucho cuidado.\n"
     366;
     367Real RemovePackageVersion(
     368  Text name,                //Nombre del paquete (sin versión)
     369  Real nu_version_high,     //Primer número de versión
     370  Real nu_version_low,      //Segundo número de versión
     371  NameBlock repository.db)  //Conexión a la base de datos
     372//////////////////////////////////////////////////////////////////////////////
     373{
     374  Real repository.db::Open(0);
     375  Real reg = DBExecQuery(
     376  "DELETE FROM package_f_contents\n"
     377  "WHERE \n"
     378  "  co_name = '"+name+"' AND\n"
     379  "  nu_version_high = "<<nu_version_high+" AND\n"
     380  "  nu_version_low = "<<nu_version_low+";\n");
     381  Real repository.db::Close(0);
     382  reg
    332383}
    333384
Note: See TracChangeset for help on using the changeset viewer.