source: tol/tolbase/lib/toltk/tolpkg.tcl @ b83b8ed3

1941-docker-image-to-testdevel
Last change on this file since b83b8ed3 was b83b8ed3, checked in by Jorge Pérez <josp.jorge@…>, 15 years ago

refs #1417, se corrige un error cuando la ruta de instalación de los paquetes tiene espacio en el nombre, más traducciones

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

  • Property mode set to 100644
File size: 9.6 KB
Line 
1namespace eval ::TolPkg {
2  variable cwd [ file normalize [ file dir [ info script ] ] ]
3}
4
5proc ::TolPkg::UpdateRepositoryInfo { } {
6  tol::console eval {
7    Real TolPackage::Client::RemoteUpdatePackSyncInfo(False);
8    Real TolPackage::Client::RemoteUpdateVersSyncInfo(False);
9  }
10  return
11}
12
13if { 0 } {
140 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
151 -- SSCC_P18_Maps
162 -- Maps for the sscc in Granada province.
173 --
184 -- v2.0.1 b.1
195 -- v999999999999999999
206 -- SSCC_P18_Maps.1.0
217 -- SSCC_P18_Maps.1.0
228 -- y2011m11d26h15i11s00.000
239 -- y2011m11d26h15i11s00.000
2410 -- 1154572
25}
26
27proc ::TolPkg::GetLocalRoot { } {
28  return [ file normalize \
29               [ lindex [ toltcl::eval { Text TolPackage::_.localRoot } ] 0 ] ]
30}
31
32proc ::TolPkg::GetClientPath { } {
33  return [ file join [ GetLocalRoot ] "Client" ]
34}
35
36proc ::TolPkg::GetPkgDirectory { p } {
37  return [ file join [ GetClientPath ] $p ]
38}
39
40proc ::TolPkg::BackupPackage { p {delete 0}} {
41  # backup is not working, some problem has being reported on Windows 7
42  return 1
43  set path [ GetPkgDirectory $p ]
44  if { [ file exists $path ] } {
45    set bak "${path}.bak"
46    set op [ expr { $delete ? "rename" : "copy" } ]
47    puts "file $op -force $path $bak"
48    return [ file $op -force $path $bak ]
49  } else {
50    return 0
51  }
52}
53
54proc ::TolPkg::RestoreBackup { p { delete 0 } } {
55  # backup is not working, some problem has being reported on Windows 7
56  return 1
57  set path [ GetPkgDirectory $p ]
58  set bak "${path}.bak"
59  if { [ file exists $bak ] } {
60    set op [ expr { $delete ? "rename" : "copy" } ]
61    return [ file $op -force $bak $path ]
62  } else {
63    return 0
64  }
65}
66
67proc ::TolPkg::DeleteBackup { p } {
68  # backup is not working, some problem has being reported on Windows 7
69  return 1
70  set path [ GetPkgDirectory $p ]
71  set bak "${path}.bak"
72  return [ file delete -force $bak ]
73}
74
75proc ::TolPkg::GetPkgSyncInfo { } {
76  set oza [ file join [ GetClientPath ] "PackSyncInfo.oza" ]
77  if { ![ file exists $oza ] || ![ file readable $oza ] } {
78    return {}
79  }
80  set tolScript [ string map [ list "%O" $oza ] {
81    Set { Ois.Load( "%O" )[1] }
82  } ]
83  # return a dictionary
84  set dict {}
85  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
86    set url        [ lindex $p 0 ]
87    set name       [ lindex $p 1 ]
88    set brief      [ lindex $p 2 ]
89    set mintol     [ lindex $p 4 ]
90    set maxtol     [ lindex $p 5 ]
91    set lastremote [ lindex $p 6 ]
92    set lastlocal  [ lindex $p 7]
93    lappend dict [ list $name \
94                       [ list url $url brief $brief mintol $mintol \
95                             maxtol $maxtol lastremote $lastremote \
96                             lastlocal $lastlocal ] ]
97  }
98  return $dict
99}
100
101if { 0 } {
1020 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
1031 -- MMS
1042 -- MMS.0.6040
1053 --
1064 -- v2.0.1 b.4
1075 -- v999999999999999999
1086 -- GuiTools.3.2,BysMcmc.4.8,TolIpopt.2.1,IpoptCore.3.9,QltvRespModel.4.1,GrzLinModel.3.1,MatQuery.3.2,NonLinGloOpt.5.1,TolCint.2.1,BysPrior.2.1,MatAlg.1.1,BysInfDiag.2.1,BysSampler.4.1,BabelTool.1.4,ExtLib.1.5,RandVar.2.104,DecoTools.1.6
1097 -- y2011m11d07h10i45s00.000
1108 -- y2011m11d07h10i45s00.000
1119 -- 1474442
112}
113
114proc ::TolPkg::GetVersSyncInfo { } {
115  set oza [ file join [ GetClientPath ] "VersSyncInfo.oza" ]
116  if { ![ file exists $oza ] || ![ file readable $oza ] } {
117    return {}
118  }
119  set tolScript [ string map [ list "%O" $oza ] {
120    Set { Ois.Load( "%O" )[1] }
121  } ]
122  # return a dictionary
123  set dict {}
124  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
125    set url          [ lindex $p 0 ]
126    set name         [ lindex $p 1 ]
127    set version      [ lindex $p 2 ]
128    set mintol       [ lindex $p 4 ]
129    set maxtol       [ lindex $p 5 ]
130    set dependencies [ split [ lindex $p 6 ] "," ]
131    set dateremote   [ lindex $p 7 ]
132    set datelocal    [ lindex $p 8 ]
133    lappend dict [ list $version \
134                       [ list url $url name $name mintol $mintol \
135                             maxtol $maxtol dateremote $dateremote \
136                             datelocal $datelocal \
137                             dependencies $dependencies ] ]
138  }
139  return $dict
140}
141
142proc ::TolPkg::GetLocalPackages { } {
143  set clientRoot [ GetClientPath ]
144  set dirs [ glob -nocomplain -tail -dir $clientRoot -types {d r} * ]
145  set pkgsInfo {}
146  foreach d $dirs {
147    lappend pkgsInfo [ list $d [ GetLocalPackageInfo $d ] ]
148  }
149  return $pkgsInfo
150}
151
152proc ::TolPkg::GetLocalPackageInfo { p } {
153  set tolScript [ string map [ list %p $p ] {
154    Set TolPackage::Client::LocalInfo( "%p" );
155  } ]
156  return [ lindex [ toltcl::eval $tolScript -named 1 ] 1 ]
157}
158
159proc ::TolPkg::GetPackageInfoFromOZA { oza } {
160  puts "::TolPkg::GetPackageInfoFromOZA $oza"
161  set tolScript [ string map [ list "%O" $oza ] {
162    Set {
163      Set oza = Include( "%O" );
164      WriteLn( "%O" );
165      Set If( Grammar( oza[1] ) == "NameBlock", {
166        NameBlock pkg = oza[ 1 ];
167        Set If( And( ObjectExist( "Text", "pkg::_.autodoc.name" ),
168                     ObjectExist( "Text", "pkg::_.autodoc.brief" ),
169                     ObjectExist( "Text", "pkg::_.autodoc.description" ),
170                     ObjectExist( "Text", "pkg::_.autodoc.url" ),
171                     ObjectExist( "Real", "pkg::_.autodoc.version.high" ),
172                     ObjectExist( "Real", "pkg::_.autodoc.version.low"),
173                     ObjectExist( "Set",  "pkg::_.autodoc.authors" ),
174                     ObjectExist( "Text", "pkg::_.autodoc.minTolVersion" ) ), {
175                       Set aux = [[ Text name           = pkg::_.autodoc.name,
176                                    Text brief          = pkg::_.autodoc.brief,
177                                    Text description    = pkg::_.autodoc.description,
178                                    Text url            = pkg::_.autodoc.url,
179                                    Real version.high   = pkg::_.autodoc.version.high,
180                                    Real version.low    = pkg::_.autodoc.version.low,
181                                    Set dependencies    = pkg::_.autodoc.dependencies,
182                                    Set authors         = pkg::_.autodoc.authors,
183                                    Text versionControl = If( ObjectExist( "Text", "pkg::_.autodoc.versionControl" ),
184                                                              pkg::_.autodoc.versionControl, "" );
185                                    Text minTolVersion  = pkg::_.autodoc.minTolVersion,
186                                    Text maxTolVersion  = If( ObjectExist( "Text", "pkg::_.autodoc.maxTolVersion" ),
187                                                              pkg::_.autodoc.axTolVersion, "" ) ]];
188                       Text pkgName = pkg::_.autodoc.name << "." << pkg::_.autodoc.version.high
189                                      << "." << pkg::_.autodoc.version.low ;
190                       Set PutName( pkgName, aux )                       
191                     }, { WriteLn( "Empty 2" ), Copy( Empty )} ) }, { WriteLn( "Empty 1" ); Copy( Empty )}  )
192    };
193  } ]
194  #puts $tolScript
195  set result [ toltcl::eval $tolScript -named 1 ]
196  puts "::TolPkg::GetPackageInfoFromOZA END $oza"
197  return $result
198}
199
200
201proc ::TolPkg::GetRepositoryInfo { repo } {
202  set ask "${repo}?action=general_information"
203  set result [ toltcl::eval [ string map [ list %A $ask ] {
204    Set TolPackage::Client::GetRepositoryInfo( "%A" )
205  } ] ]
206  return [ lindex $result 0 ]
207}
208
209proc ::TolPkg::AddRepository { url } {
210  set tolexpr [ string map [ list %u $url ] {
211    Real TolPackage::Client::AddRepository( "%u" );
212  } ]
213  toltcl::eval $tolexpr
214}
215
216proc ::TolPkg::ZipInstall { pkg.zip } {
217  puts "::TolPkg::ZipInstall ${pkg.zip}"
218  set tolexpr [ string map [ list %p ${pkg.zip} ] {
219    Real TolPackage::Client::LocalInstallPackage( "%p" )
220  } ]
221  return [ toltcl::eval $tolexpr ]
222}
223
224proc ::TolPkg::RemoteInstall { pkg repo } {
225  puts "::TolPkg::RemoteInstall $pkg $repo"
226  BackupPackage $pkg 1
227  set tolexpr [ string map [ list %p $pkg %r $repo ] {
228    Real TolPackage::Client::RemoteInstall( "%r", "%p", 1 )
229  } ]
230  if { [ catch  { toltcl::eval $tolexpr } result ] } {
231    set result 0
232  }
233  if { [ string is boolean $result ] && $result } {
234    DeleteBackup $pkg
235  } else {
236    RestoreBackup $pkg 1
237  }
238  return $result
239}
240
241proc ::TolPkg::ExportPackage { pkg dest } {
242  puts "::TolPkg::ExportPackage $pkg to $dest"
243  set tolexpr [ string map [ list %p $pkg %d $dest ] {
244    Real TolPackage::Client::LocalExportPackage( "%p", "%d/" )
245  } ]
246  return [ toltcl::eval $tolexpr ]
247}
248
249proc ::TolPkg::CheckPackagesToInstall { pkgs } {
250  set members {}
251  foreach p $pkgs {
252    lappend members \"${p}\"
253  }
254  set tolexpr [ string map [ list %s "\[\[ [ join $members , ] \]\]" ] {
255    Set TolPackage::Client::GetDeepDependencies.all.last( %s );
256  } ]
257  return [ lindex [ toltcl::eval $tolexpr ] 0 ]
258}
259
260proc ::TolPkg::GetUpgradeConfig { } {
261  set tolexpr {
262    Set {
263      [[
264        Real checkTOL = TolConfigManager::Config::Upgrading::TolVersion::CheckAllowed;
265        Real localPKG = TolConfigManager::Config::Upgrading::TolPackage::LocalOnly
266       ]]
267    }
268  }
269  return [ lindex [ toltcl::eval $tolexpr -named 1 ] 1 ]
270}
271
272proc ::TolPkg::GetKnownRepositories { } {
273  return [ lindex [ toltcl::eval \
274                        {Set TolConfigManager::Config::Upgrading::TolPackage::Repositories} ] 0 ]
275}
276
277proc ::TolPkg::GetPackagesInfo { } {
278  return [ lindex [ toltcl::eval { Set TolPackage::Client::_.packSyncInfo } ] 0 ]
279}
280
281proc ::TolPkg::test_00 { } {
282  GetRepositoryInfo http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php
283}
284
285proc ::TolPkg::test_01 { } {
286  set oza /home/jsperez/.tol/TolPackage/1.1/Client/DecoTools.1.8/DecoTools.1.8.oza
287  ::TolPkg::GetPackageInfoFromOZA $oza
288}
289
290proc ::TolPkg::test_02 { } {
291  return [ llength [ ::TolPkg::GetLocalPackages ] ]
292}
Note: See TracBrowser for help on using the repository browser.