Changeset ffbaa74 in tol


Ignore:
Timestamp:
May 8, 2012, 4:53:44 PM (14 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
820edff
Parents:
4ccf80ce
Message:

refs #1502

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/stdlib/TolPackage/builder.tol

    r4ccf80ce rffbaa74  
    66
    77Text _.autodoc.member.Builder=
    8 "Herramienta constructora de paquetes TOL";
    9 
     8  "Herramienta constructora de paquetes TOL";
    109//////////////////////////////////////////////////////////////////////////////
    11 NameBlock Builder =
     10@LocalBlock Builder =
    1211//////////////////////////////////////////////////////////////////////////////
    1312[[
    14   ////////////////////////////////////////////////////////////////////////////
    15   Struct @TolPackageSource
    16   ////////////////////////////////////////////////////////////////////////////
    17   {
    18     Text name;
    19     Text type;
    20     Text source
    21   };
    22 
    23   Text _.localPath = Server::_.localRoot;
     13  // [API]
     14  // [Source] Orígenes de código (SVN) y su uso
     15  //    * Real FindSource(Text name)
     16  //    * Set GetSource(Text name)
     17  //    * Set GetSources(Real void)
     18  //    * Real AppendSource(Text name, Text type, Text source)
     19  //    * Real RemoveSource(Text name)
     20  //  * Real DownloadPackage(Text package, Text source, Real revision)
     21  //  * Real RemoveDownloadedPackage(Text package)
     22  //  * Text BuildDownloadedPackage(Text package)
     23  //  * Text BuildLocalPackage(Text package, Text localRoot)
     24  //  * Real RemoveBuildedPackage(Text identifier)
     25  // [Repository] Repositorios de paquetes (DB) y su uso.
     26  //    * Real FindRepository(Text name)
     27  //    * NameBlock GetRepository(Text name)
     28  //    * Set GetRepositories(Real void)
     29  //    * Real AppendRepository(Text name, NameBlock repository)
     30  //    * Real RemoveRepository(Text name)
     31  //  * Real UploadPackage(Text identifier, Text repository, Real overwrite)
     32  //  * Real DestroyPackage(Text identifier, Text repository)
     33  // [Others]
     34  //  * Real ProducePackage(Text package, Text source, Real revision,
     35  //      Text repository, Real overwrite)
     36  //  * Set GetSourcePackages(Text source)
     37
     38  Text _.localRoot = _.localRoot<<"Builder/";
    2439  Set _.sources = Copy(Empty);
    2540  Set _.repositories = Copy(Empty);
    26   NameBlock _Server = Server;
    2741
    2842  ////////////////////////////////////////////////////////////////////////////
    … …  
    3751  ////////////////////////////////////////////////////////////////////////////
    3852  Text _.autodoc.member.GetSource =
    39     "Devuelve la información de un origen de código (@TolPackageSource) "
     53    "Devuelve la información de un origen de código (@PackageSource) "
    4054    "a partir de su nombre.";
    4155  Set GetSource(Text name)
    … …  
    5266  Text _.autodoc.member.GetSources =
    5367    "Devuelve la información de todos los orígenes de código "
    54     "(@TolPackageSource) añadidos al Builder.";
     68    "(@PackageSource) añadidos al Builder.";
    5569  Set GetSources(Real void)
    5670  ////////////////////////////////////////////////////////////////////////////
    … …  
    6882    Real index = FindIndexByName(_.sources, name);
    6983    If(index, 0, {
    70       Set source = @TolPackageSource(name, type, source);
     84      Set source = @PackageSource(name, type, source);
    7185      Set Append(_.sources, [[
    7286        PutName(name, source)
    … …  
    88102
    89103  ////////////////////////////////////////////////////////////////////////////
    90   Text _.autodoc.member.DownloadPackage_Source =
     104  Text _.autodoc.member.DownloadPackage =
    91105    "Descarga el código de un paquete desde un origen determinado y para"
    92106    "una revisión determinada al directorio asignado por defecto.";
    93   Real DownloadPackage_Source(Text package, Text source, Real revision)
     107  Real DownloadPackage(Text package, Text source, Real revision)
    94108  ////////////////////////////////////////////////////////////////////////////
    95109  {
    … …  
    113127    Real nErr0 = Copy(NError);
    114128    Text svnPath = GetSource(source)->source;
    115     Real OSDirMake(_.localPath);
    116     Real OSDirRemove(_.localPath<<package<<"/");
     129    Real OSDirMake(_AsOSDir(_.localRoot));
     130    Real OSDirRemove(_.localRoot<<package);
    117131    // Se descarga el código
    118132    Text revisionId = If(IsUnknown(revision), "HEAD", ""<<revision);
    119133    Real OSCmdWait("svn --force co -r "<<revisionId<<" "<<svnPath
    120       <<package<<"/ "<<_.localPath<<package<<"/");
     134      <<package<<"/ "<<_.localRoot<<package<<"/");
    121135    Real nErr1 = Copy(NError);
    122136    If(nErr1>nErr0, {
    … …  
    124138    0}, {
    125139      WriteLn("El paquete '"<<package<<"' se ha descargado en:\n  "
    126         <<_.localPath<<package<<"/");
     140        <<_.localRoot<<package<<"/");
    127141    1})
    128142  };
    … …  
    135149  ////////////////////////////////////////////////////////////////////////////
    136150  {
    137     OSDirRemove(_.localPath<<package<<"/")
     151    OSDirRemove(_.localRoot<<package)
    138152  };
    139153
    … …  
    145159  ////////////////////////////////////////////////////////////////////////////
    146160  {
    147     _BuildPackage_Path(package, _.localPath)
     161    _BuildPackage_Path(package, _.localRoot)
    148162  };
    149163
    … …  
    152166    "Construye un paquete (.zip) a partir del código situado en una ruta "
    153167    "determinada. Devuelve el nombre y versión del paquete construido.";
    154   Text BuildLocalPackage(Text package, Text localPath)
    155   ////////////////////////////////////////////////////////////////////////////
    156   {
    157     _BuildPackage_Path(package, localPath)
     168  Text BuildLocalPackage(Text package, Text localRoot)
     169  ////////////////////////////////////////////////////////////////////////////
     170  {
     171    _BuildPackage_Path(package, localRoot)
    158172  };
    159173
    … …  
    166180      Set If(FileExist(path<<package<<"/_pre_"<<package<<".tol"),
    167181        IncludeTOL(path<<package<<"/_pre_"<<package<<".tol"));
    168       Text packageZip = _Server::BuildPackage(package, path,
    169         _.localPath, True);
     182      Set package. = Packager::CompilePackage(package, path);
     183      Text packageZip = Packager::BuildZip(package.[1], path, _.localRoot);
    170184      Real nErr2 = Copy(NError);
    171185      If(nErr2>nErr1, {
    … …  
    175189      }, {
    176190        WriteLn("El paquete '"<<package<<"' se ha construido correctamente.");
    177         Real If(path!=_.localPath, {
     191        Real If(path!=_.localRoot, {
    178192          Write("Tenga en cuenta que NO es recomendable subir un paquete "
    179193            <<"creado con código local.", "W");
    … …  
    189203
    190204  ////////////////////////////////////////////////////////////////////////////
    191   Text _.autodoc.member.RemoveBuildedPackageXX =
     205  Text _.autodoc.member.RemoveBuildedPackage =
    192206    "Elimina un paquete (.zip) construido previamente en el directorio por "
    193207    "defecto a partir de su nombre y versión.";
    194   Real RemoveBuildedPackageXX(Text package.X.X)
    195   ////////////////////////////////////////////////////////////////////////////
    196   {
    197     OSFilRemove(_.localPath<<package.X.X<<".zip")
     208  Real RemoveBuildedPackage(Text identifier)
     209  ////////////////////////////////////////////////////////////////////////////
     210  {
     211    OSFilRemove(_.localRoot<<identifier<<".zip")
    198212  };
    199213
    … …  
    261275
    262276  ////////////////////////////////////////////////////////////////////////////
    263   Text _.autodoc.member.UploadPackageXX =
     277  Text _.autodoc.member.UploadPackage =
    264278    "Sube un paquete ya construido (indicando nombre y versión) a un "
    265279    "repositorio. Si el modo (tercer argumento) es True se borrará "
    266280    "un paquete previo que pudier existir. Esto es necesario para updates.";
    267   Real UploadPackageXX(Text package.X.X, Text repository, Real mode)
    268   ////////////////////////////////////////////////////////////////////////////
    269   {
    270     WriteLn("UploadPackageXX" << package.X.X << " " << repository );
    271     Real nErr1 = Copy(NError);
    272     Text packageZip = _.localPath<<package.X.X<<".zip";
     281  Real UploadPackage(Text identifier, Text repository, Real overwrite)
     282  ////////////////////////////////////////////////////////////////////////////
     283  {
     284    WriteLn("UploadPackage" << identifier << " " << repository );
     285    Real nErr1 = Copy(NError);
     286    Text packageZip = _.localRoot<<identifier<<".zip";
    273287    If(FileExist(packageZip), {
    274288      NameBlock repository.db = GetRepository(repository);
    … …  
    280294      0}, {
    281295        // Se elimina el que hay en el repositorio
    282         Real If(mode==1, {
    283           Set names = Tokenizer(package.X.X, ".");
    284           Real _Server::RemovePackageVersion(names[1],
    285             Eval(names[2]), Eval(names[3]), repository.db);
     296        Real If(overwrite==1, {
     297          Real Server::DB.DeletePackage(repository.db, identifier);
    286298        1}, 0);
    287299        // Se sube el paquete al repositorio
    288         Real _Server::UploadPackage(repository.db, packageZip);
     300        Real Server::DB.UploadPackage(repository.db, packageZip);
    289301        Real nErr3 = Copy(NError);
    290302        If(nErr3>nErr2, {
    291           WriteLn("El paquete "<<package.X.X<<" no se ha subido al "
     303          WriteLn("El paquete "<<identifier<<" no se ha subido al "
    292304            <<"repositorio correctamente.", "E");
    293305        0}, 1)
    294306      })
    295307    }, {
    296       WriteLn("No se encuentra el paquete '"<<package.X.X<<"'", "E");
     308      WriteLn("No se encuentra el paquete '"<<identifier<<"'", "E");
    297309    0})
    298310  };
    299311
    300312  ////////////////////////////////////////////////////////////////////////////
    301   Text _.autodoc.member.DestroyPackageXX =
     313  Text _.autodoc.member.DestroyPackage =
    302314    "Destruye un paquete subido a un repositorio.";
    303   Real DestroyPackageXX(Text package.X.X, Text repository)
     315  Real DestroyPackage(Text identifier, Text repository)
    304316  ////////////////////////////////////////////////////////////////////////////
    305317  {
    … …  
    311323        "E");
    312324    0}, {
    313       Set names = Tokenizer(package.X.X, ".");
    314       Real _Server::RemovePackageVersion(names[1],
    315         Eval(names[2]), Eval(names[3]), repository.db)
     325      If(Card(parts)==3, {
     326        Server::DB.DeletePackage(repository.db, identifier)
     327      }, {
     328        WriteLn("No se puede destruir sin indicar específicamente "
     329          <<"su versión.", "E");
     330      0})
    316331    })
    317332  };
    318333
    319334  ////////////////////////////////////////////////////////////////////////////
    320   Text _.autodoc.member.BuildPackage =
    321     "Descarga el código más actual, construye y sube un paquete a un "
    322     "repositorio. El modo (segundo argumento) indica si ha de destruirse "
    323     "un posible paquete previo. Necesario para updates";
    324   Real BuildPackage(Text package, Real mode, Text source, Text repository)
     335  Real BuildPackage(Text package, Real overwrite, Text source,
     336    Text repository)
     337  ////////////////////////////////////////////////////////////////////////////
     338  {
     339    // OBSOLETA
     340    WriteLn("[Obsoleto] Utilize en su lugar la función ProducePackage.", "W");
     341    ProducePackage(package, source, ?, repository, overwrite)
     342  };
     343
     344  ////////////////////////////////////////////////////////////////////////////
     345  Text _.autodoc.member.ProducePackage =
     346    "Descarga el código, construye y sube un paquete a un repositorio. "
     347    "Para descargar el código actual indique ? en el argumento revision. "
     348    "El argumento overwrite indica si ha de destruirse un posible paquete "
     349    "ya existente. Necesario para updates";
     350  Real ProducePackage(Text package, Text source, Real revision,
     351    Text repository, Real overwrite)
    325352  ////////////////////////////////////////////////////////////////////////////
    326353  {
    327354    Real nErr0 = Copy(NError);
    328355    // [1] Se descarga el código
    329     Real DownloadPackage_Source(package, source, ?);
     356    Real DownloadPackage(package, source, revision);
    330357    Real nErr1 = Copy(NError);
    331358    If(nErr1>nErr0, {
    … …  
    333360    0}, {
    334361      // [2] Se construye el paquete
    335       Text packageXX = BuildDownloadedPackage(package);
     362      Text identifier = BuildDownloadedPackage(package);
    336363      Real nErr2 = Copy(NError);
    337364      If(nErr2>nErr1, {
    338365        WriteLn("El paquete no se ha construido correctamente", "E");
    339366      0}, {
    340         UploadPackageXX(packageXX, repository, mode)
     367        UploadPackage(identifier, repository, overwrite)
    341368      });
    342       RemoveBuildedPackageXX(packageXX)
     369      RemoveBuildedPackage(identifier)
    343370    });
    344371    RemoveDownloadedPackage(package)
    … …  
    368395  ////////////////////////////////////////////////////////////////////////////
    369396  // Función auxiliar para poder interaccionar con el sistema.
    370   // !! Válida sólo para Windows. Véase #1118
    371397  Text _AnsSystem(Text cmd)
    372398  ////////////////////////////////////////////////////////////////////////////
    373399  {
    374     Text batFile = TmpDir<<"ans.bat";
    375     Text ansFile = TmpDir<<"ans.txt";
    376     Text errFile = TmpDir<<"ans.err.txt";
    377     Real FileDelete(batFile);
    378     Real FileDelete(ansFile);
    379     Real FileDelete(errFile);
    380     Text WriteFile(batFile, cmd<<" > "<<Qt(ansFile)<<" 2> "<<Qt(errFile));
    381     Real WinSystem(batFile, False, True);
    382     Text ans = ReadFile(ansFile);
    383     Text err = ReadFile(errFile);
    384     If(TextLength(err), Write("[AnsSystem] "<<err,"E"));
    385     Real FileDelete(batFile);
    386     Real FileDelete(ansFile);
    387     Real FileDelete(errFile);
    388     ans
     400    Set answer = PExec([[cmd]]);
     401    If(answer[3], answer[1], {
     402      Error(answer[2]);
     403    ""})
     404  };
     405
     406  ////////////////////////////////////////////////////////////////////////////
     407  // Función auxiliar para poder interaccionar con el sistema.
     408  Text _AnsSystem2(Set cmd)
     409  ////////////////////////////////////////////////////////////////////////////
     410  {
     411    Set answer = PExec( cmd );
     412    If(answer[3], answer[1], {
     413      Error(answer[2]);
     414    ""})
    389415  };
    390416
    … …  
    394420  {
    395421    Text svnPath = GetSource(source)->source;
    396     Text ls0 = _AnsSystem("svn ls "<<svnPath);
     422    Text ls0 = _AnsSystem2( [[ "svn", "ls", svnPath ]] );
    397423    Select(EvalSet(Tokenizer(ls0, "\n"), Text (Text t) {
    398424      Real length = TextLength(t);
Note: See TracChangeset for help on using the changeset viewer.