Changeset ffbaa74 in tol
- Timestamp:
- May 8, 2012, 4:53:44 PM (14 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 820edff
- Parents:
- 4ccf80ce
- File:
-
- 1 edited
-
tol/stdlib/TolPackage/builder.tol (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/stdlib/TolPackage/builder.tol
r4ccf80ce rffbaa74 6 6 7 7 Text _.autodoc.member.Builder= 8 "Herramienta constructora de paquetes TOL"; 9 8 "Herramienta constructora de paquetes TOL"; 10 9 ////////////////////////////////////////////////////////////////////////////// 11 NameBlock Builder =10 @LocalBlock Builder = 12 11 ////////////////////////////////////////////////////////////////////////////// 13 12 [[ 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/"; 24 39 Set _.sources = Copy(Empty); 25 40 Set _.repositories = Copy(Empty); 26 NameBlock _Server = Server;27 41 28 42 //////////////////////////////////////////////////////////////////////////// … … 37 51 //////////////////////////////////////////////////////////////////////////// 38 52 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) " 40 54 "a partir de su nombre."; 41 55 Set GetSource(Text name) … … 52 66 Text _.autodoc.member.GetSources = 53 67 "Devuelve la información de todos los orígenes de código " 54 "(@ TolPackageSource) añadidos al Builder.";68 "(@PackageSource) añadidos al Builder."; 55 69 Set GetSources(Real void) 56 70 //////////////////////////////////////////////////////////////////////////// … … 68 82 Real index = FindIndexByName(_.sources, name); 69 83 If(index, 0, { 70 Set source = @ TolPackageSource(name, type, source);84 Set source = @PackageSource(name, type, source); 71 85 Set Append(_.sources, [[ 72 86 PutName(name, source) … … 88 102 89 103 //////////////////////////////////////////////////////////////////////////// 90 Text _.autodoc.member.DownloadPackage _Source=104 Text _.autodoc.member.DownloadPackage = 91 105 "Descarga el código de un paquete desde un origen determinado y para" 92 106 "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) 94 108 //////////////////////////////////////////////////////////////////////////// 95 109 { … … 113 127 Real nErr0 = Copy(NError); 114 128 Text svnPath = GetSource(source)->source; 115 Real OSDirMake(_ .localPath);116 Real OSDirRemove(_.local Path<<package<<"/");129 Real OSDirMake(_AsOSDir(_.localRoot)); 130 Real OSDirRemove(_.localRoot<<package); 117 131 // Se descarga el código 118 132 Text revisionId = If(IsUnknown(revision), "HEAD", ""<<revision); 119 133 Real OSCmdWait("svn --force co -r "<<revisionId<<" "<<svnPath 120 <<package<<"/ "<<_.local Path<<package<<"/");134 <<package<<"/ "<<_.localRoot<<package<<"/"); 121 135 Real nErr1 = Copy(NError); 122 136 If(nErr1>nErr0, { … … 124 138 0}, { 125 139 WriteLn("El paquete '"<<package<<"' se ha descargado en:\n " 126 <<_.local Path<<package<<"/");140 <<_.localRoot<<package<<"/"); 127 141 1}) 128 142 }; … … 135 149 //////////////////////////////////////////////////////////////////////////// 136 150 { 137 OSDirRemove(_.local Path<<package<<"/")151 OSDirRemove(_.localRoot<<package) 138 152 }; 139 153 … … 145 159 //////////////////////////////////////////////////////////////////////////// 146 160 { 147 _BuildPackage_Path(package, _.local Path)161 _BuildPackage_Path(package, _.localRoot) 148 162 }; 149 163 … … 152 166 "Construye un paquete (.zip) a partir del código situado en una ruta " 153 167 "determinada. Devuelve el nombre y versión del paquete construido."; 154 Text BuildLocalPackage(Text package, Text local Path)155 //////////////////////////////////////////////////////////////////////////// 156 { 157 _BuildPackage_Path(package, local Path)168 Text BuildLocalPackage(Text package, Text localRoot) 169 //////////////////////////////////////////////////////////////////////////// 170 { 171 _BuildPackage_Path(package, localRoot) 158 172 }; 159 173 … … 166 180 Set If(FileExist(path<<package<<"/_pre_"<<package<<".tol"), 167 181 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); 170 184 Real nErr2 = Copy(NError); 171 185 If(nErr2>nErr1, { … … 175 189 }, { 176 190 WriteLn("El paquete '"<<package<<"' se ha construido correctamente."); 177 Real If(path!=_.local Path, {191 Real If(path!=_.localRoot, { 178 192 Write("Tenga en cuenta que NO es recomendable subir un paquete " 179 193 <<"creado con código local.", "W"); … … 189 203 190 204 //////////////////////////////////////////////////////////////////////////// 191 Text _.autodoc.member.RemoveBuildedPackage XX=205 Text _.autodoc.member.RemoveBuildedPackage = 192 206 "Elimina un paquete (.zip) construido previamente en el directorio por " 193 207 "defecto a partir de su nombre y versión."; 194 Real RemoveBuildedPackage XX(Text package.X.X)195 //////////////////////////////////////////////////////////////////////////// 196 { 197 OSFilRemove(_.local Path<<package.X.X<<".zip")208 Real RemoveBuildedPackage(Text identifier) 209 //////////////////////////////////////////////////////////////////////////// 210 { 211 OSFilRemove(_.localRoot<<identifier<<".zip") 198 212 }; 199 213 … … 261 275 262 276 //////////////////////////////////////////////////////////////////////////// 263 Text _.autodoc.member.UploadPackage XX=277 Text _.autodoc.member.UploadPackage = 264 278 "Sube un paquete ya construido (indicando nombre y versión) a un " 265 279 "repositorio. Si el modo (tercer argumento) es True se borrará " 266 280 "un paquete previo que pudier existir. Esto es necesario para updates."; 267 Real UploadPackage XX(Text package.X.X, Text repository, Real mode)268 //////////////////////////////////////////////////////////////////////////// 269 { 270 WriteLn("UploadPackage XX" << package.X.X<< " " << repository );271 Real nErr1 = Copy(NError); 272 Text packageZip = _.local Path<<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"; 273 287 If(FileExist(packageZip), { 274 288 NameBlock repository.db = GetRepository(repository); … … 280 294 0}, { 281 295 // 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); 286 298 1}, 0); 287 299 // Se sube el paquete al repositorio 288 Real _Server::UploadPackage(repository.db, packageZip);300 Real Server::DB.UploadPackage(repository.db, packageZip); 289 301 Real nErr3 = Copy(NError); 290 302 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 " 292 304 <<"repositorio correctamente.", "E"); 293 305 0}, 1) 294 306 }) 295 307 }, { 296 WriteLn("No se encuentra el paquete '"<< package.X.X<<"'", "E");308 WriteLn("No se encuentra el paquete '"<<identifier<<"'", "E"); 297 309 0}) 298 310 }; 299 311 300 312 //////////////////////////////////////////////////////////////////////////// 301 Text _.autodoc.member.DestroyPackage XX=313 Text _.autodoc.member.DestroyPackage = 302 314 "Destruye un paquete subido a un repositorio."; 303 Real DestroyPackage XX(Text package.X.X, Text repository)315 Real DestroyPackage(Text identifier, Text repository) 304 316 //////////////////////////////////////////////////////////////////////////// 305 317 { … … 311 323 "E"); 312 324 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}) 316 331 }) 317 332 }; 318 333 319 334 //////////////////////////////////////////////////////////////////////////// 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) 325 352 //////////////////////////////////////////////////////////////////////////// 326 353 { 327 354 Real nErr0 = Copy(NError); 328 355 // [1] Se descarga el código 329 Real DownloadPackage _Source(package, source, ?);356 Real DownloadPackage(package, source, revision); 330 357 Real nErr1 = Copy(NError); 331 358 If(nErr1>nErr0, { … … 333 360 0}, { 334 361 // [2] Se construye el paquete 335 Text packageXX= BuildDownloadedPackage(package);362 Text identifier = BuildDownloadedPackage(package); 336 363 Real nErr2 = Copy(NError); 337 364 If(nErr2>nErr1, { 338 365 WriteLn("El paquete no se ha construido correctamente", "E"); 339 366 0}, { 340 UploadPackage XX(packageXX, repository, mode)367 UploadPackage(identifier, repository, overwrite) 341 368 }); 342 RemoveBuildedPackage XX(packageXX)369 RemoveBuildedPackage(identifier) 343 370 }); 344 371 RemoveDownloadedPackage(package) … … 368 395 //////////////////////////////////////////////////////////////////////////// 369 396 // Función auxiliar para poder interaccionar con el sistema. 370 // !! Válida sólo para Windows. Véase #1118371 397 Text _AnsSystem(Text cmd) 372 398 //////////////////////////////////////////////////////////////////////////// 373 399 { 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 ans400 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 ""}) 389 415 }; 390 416 … … 394 420 { 395 421 Text svnPath = GetSource(source)->source; 396 Text ls0 = _AnsSystem ("svn ls "<<svnPath);422 Text ls0 = _AnsSystem2( [[ "svn", "ls", svnPath ]] ); 397 423 Select(EvalSet(Tokenizer(ls0, "\n"), Text (Text t) { 398 424 Real length = TextLength(t);
Note: See TracChangeset
for help on using the changeset viewer.
