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

devel
Last change on this file was bc8a9f9, checked in by Pedro Gea <pgea@…>, 12 years ago

Refs #1821
Se modifican los archivos tcl para recoger los cambios en TolPackage.4

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

  • Property mode set to 100644
File size: 10.0 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::Server::UpdateCatalog(?);
8  }
9  return
10}
11
12if { 0 } {
130 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
141 -- SSCC_P18_Maps
152 -- Maps for the sscc in Granada province.
163 --
174 -- v2.0.1 b.1
185 -- v999999999999999999
196 -- SSCC_P18_Maps.1.0
207 -- SSCC_P18_Maps.1.0
218 -- y2011m11d26h15i11s00.000
229 -- y2011m11d26h15i11s00.000
2310 -- 1154572
24}
25
26proc ::TolPkg::GetLocalRoot { } {
27  return [ file normalize \
28    [ lindex [ toltcl::eval { Text TolPackage::_.localRoot } ] 0 ] ]
29}
30
31proc ::TolPkg::GetClientRoot { } {
32  return [ file normalize \
33    [ lindex [ toltcl::eval { Text TolPackage::Client::_.localRoot } ] 0 ] ]
34}
35
36proc ::TolPkg::GetPkgDirectory { p } {
37  return [ file join [ GetClientRoot ] $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 [ GetClientRoot ] "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
84  set tolScript { Set TolPackage::_.GetPackSyncInfo(Version) }
85  # return a dictionary
86  set dict {}
87  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
88    set url        [ lindex $p 0 ]
89    set name       [ lindex $p 1 ]
90    set brief      [ lindex $p 2 ]
91    set mintol     [ lindex $p 4 ]
92    set maxtol     [ lindex $p 5 ]
93    set lastremote [ lindex $p 6 ]
94    set lastlocal  [ lindex $p 7]
95    lappend dict [ list $name \
96                       [ list url $url brief $brief mintol $mintol \
97                             maxtol $maxtol lastremote $lastremote \
98                             lastlocal $lastlocal ] ]
99  }
100  return $dict
101}
102
103if { 0 } {
1040 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
1051 -- MMS
1062 -- MMS.0.6040
1073 --
1084 -- v2.0.1 b.4
1095 -- v999999999999999999
1106 -- 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
1117 -- y2011m11d07h10i45s00.000
1128 -- y2011m11d07h10i45s00.000
1139 -- 1474442
114}
115
116proc ::TolPkg::GetVersSyncInfo { } {
117  # set oza [ file join [ GetClientRoot ] "VersSyncInfo.oza" ]
118  # if { ![ file exists $oza ] || ![ file readable $oza ] } {
119  #   return {}
120  # }
121  # set tolScript [ string map [ list "%O" $oza ] {
122  #   Set { Ois.Load( "%O" )[1] }
123  # } ]
124
125  set tolScript { Set TolPackage::_.GetVersSyncInfo(?) }
126  # return a dictionary
127  set dict {}
128  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
129    set url          [ lindex $p 0 ]
130    set name         [ lindex $p 1 ]
131    set version      [ lindex $p 2 ]
132    set mintol       [ lindex $p 4 ]
133    set maxtol       [ lindex $p 5 ]
134    set dependencies [ split [ lindex $p 6 ] "," ]
135    set dateremote   [ lindex $p 7 ]
136    set datelocal    [ lindex $p 8 ]
137    lappend dict [ list $version \
138                       [ list url $url name $name mintol $mintol \
139                             maxtol $maxtol dateremote $dateremote \
140                             datelocal $datelocal \
141                             dependencies $dependencies ] ]
142  }
143  return $dict
144}
145
146proc ::TolPkg::GetLocalPackages { } {
147  set clientRoot [ GetClientRoot ]
148  set dirs [ glob -nocomplain -tail -dir $clientRoot -types {d r} * ]
149  set pkgsInfo {}
150  foreach d $dirs {
151    set pkgInfo [ GetLocalPackageInfo $d ]
152    if { [llength $pkgInfo] > 0 } {
153      lappend pkgsInfo [ list $d $pkgInfo ]
154    }
155  }
156  return $pkgsInfo
157}
158
159proc ::TolPkg::GetLocalPackageInfo { p } {
160  set tolScript [ string map [ list %p $p ] {
161    Set TolPackage::Client::GetPackageInfo_Compatible( "%p" );
162  } ]
163  return [ lindex [ toltcl::eval $tolScript -named 1 ] 1 ]
164}
165
166proc ::TolPkg::GetPackageInfoFromOZA { oza } {
167  puts "::TolPkg::GetPackageInfoFromOZA $oza"
168  set tolScript [ string map [ list "%O" $oza ] {
169    Set {
170      Set oza = Include( "%O" );
171      WriteLn( "%O" );
172      Set If( Grammar( oza[1] ) == "NameBlock", {
173        NameBlock pkg = oza[ 1 ];
174        Set If( And( ObjectExist( "Text", "pkg::_.autodoc.name" ),
175                     ObjectExist( "Text", "pkg::_.autodoc.brief" ),
176                     ObjectExist( "Text", "pkg::_.autodoc.description" ),
177                     ObjectExist( "Text", "pkg::_.autodoc.url" ),
178                     ObjectExist( "Real", "pkg::_.autodoc.version.high" ),
179                     ObjectExist( "Real", "pkg::_.autodoc.version.low"),
180                     ObjectExist( "Set",  "pkg::_.autodoc.authors" ),
181                     ObjectExist( "Text", "pkg::_.autodoc.minTolVersion" ) ), {
182                       Set aux = [[ Text name           = pkg::_.autodoc.name,
183                                    Text brief          = pkg::_.autodoc.brief,
184                                    Text description    = pkg::_.autodoc.description,
185                                    Text url            = pkg::_.autodoc.url,
186                                    Real version.high   = pkg::_.autodoc.version.high,
187                                    Real version.low    = pkg::_.autodoc.version.low,
188                                    Set dependencies    = pkg::_.autodoc.dependencies,
189                                    Set authors         = pkg::_.autodoc.authors,
190                                    Text versionControl = If( ObjectExist( "Text", "pkg::_.autodoc.versionControl" ),
191                                                              pkg::_.autodoc.versionControl, "" );
192                                    Text minTolVersion  = pkg::_.autodoc.minTolVersion,
193                                    Text maxTolVersion  = If( ObjectExist( "Text", "pkg::_.autodoc.maxTolVersion" ),
194                                                              pkg::_.autodoc.axTolVersion, "" ) ]];
195                       Text pkgName = pkg::_.autodoc.name << "." << pkg::_.autodoc.version.high
196                                      << "." << pkg::_.autodoc.version.low ;
197                       Set PutName( pkgName, aux )                       
198                     }, { WriteLn( "Empty 2" ), Copy( Empty )} ) }, { WriteLn( "Empty 1" ); Copy( Empty )}  )
199    };
200  } ]
201  #puts $tolScript
202  set result [ toltcl::eval $tolScript -named 1 ]
203  puts "::TolPkg::GetPackageInfoFromOZA END $oza"
204  return $result
205}
206
207
208proc ::TolPkg::GetRepositoryInfo { repo } {
209  set ask "${repo}?action=general_information"
210  set result [ toltcl::eval [ string map [ list %A $ask ] {
211    # No se usa?
212    Set TolPackage::Client::GetRepositoryInfo( "%A" )
213  } ] ]
214  return [ lindex $result 0 ]
215}
216
217proc ::TolPkg::AddRepository { url } {
218  set tolexpr [ string map [ list %u $url ] {
219    Real TolPackage::AddRepository( "%u" );
220  } ]
221  toltcl::eval $tolexpr
222}
223
224proc ::TolPkg::ZipInstall { pkg.zip } {
225  puts "::TolPkg::ZipInstall ${pkg.zip}"
226  set tolexpr [ string map [ list %p ${pkg.zip} ] {
227    Real TolPackage::Client::InstallZip( "%p" )
228  } ]
229  return [ toltcl::eval $tolexpr ]
230}
231
232proc ::TolPkg::RemovePackage { pkg } {
233  set tolexpr [ string map [ list %p ${pkg} ] {
234    Real TolPackage::Client::UninstallPackage( "%p" )
235  } ]
236  return [ toltcl::eval $tolexpr ]
237}
238
239proc ::TolPkg::RemoteInstall { pkg repo } {
240  puts "::TolPkg::InstallLastCompatible $pkg"
241  BackupPackage $pkg 1
242  set tolexpr [ string map [ list %p $pkg %r $repo ] {
243    Real TolPackage::InstallLastCompatible("%p")
244  } ]
245  if { [ catch  { toltcl::eval $tolexpr } result ] } {
246    set result 0
247  }
248  if { [ string is boolean $result ] && $result } {
249    DeleteBackup $pkg
250  } else {
251    RestoreBackup $pkg 1
252  }
253  return $result
254}
255
256proc ::TolPkg::ExportPackage { pkg dest } {
257  puts "::TolPkg::ExportPackage $pkg to $dest"
258  set tolexpr [ string map [ list %p $pkg %d $dest ] {
259    Real TolPackage::Client::ExportPackage( "%p", "%d/" )
260  } ]
261  return [ toltcl::eval $tolexpr ]
262}
263
264proc ::TolPkg::CheckPackagesToInstall { pkgs } {
265  set members {}
266  foreach p $pkgs {
267    lappend members \"${p}\"
268  }
269  set tolexpr [ string map [ list %s "\[\[ [ join $members , ] \]\]" ] {
270    TolPackage::GetInstallationList(%s);
271  } ]
272  return [ lindex [ toltcl::eval $tolexpr ] 0 ]
273}
274
275proc ::TolPkg::GetUpgradeConfig { } {
276  set tolexpr {
277    Set {
278      [[
279        Real checkTOL = TolConfigManager::Config::Upgrading::TolVersion::CheckAllowed;
280        Real localPKG = TolConfigManager::Config::Upgrading::TolPackage::LocalOnly
281       ]]
282    }
283  }
284  return [ lindex [ toltcl::eval $tolexpr -named 1 ] 1 ]
285}
286
287proc ::TolPkg::GetKnownRepositories { } {
288  return [ lindex [ toltcl::eval \
289                        {Set TolConfigManager::Config::Upgrading::TolPackage::Repositories} ] 0 ]
290}
291
292proc ::TolPkg::GetPackagesInfo { } {
293  return [ lindex [ toltcl::eval { Set TolPackage::_.GetPackSyncInfo(Version) } ] 0 ]
294}
295
296proc ::TolPkg::test_00 { } {
297  GetRepositoryInfo http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php
298}
299
300proc ::TolPkg::test_01 { } {
301  set oza /home/jsperez/.tol/TolPackage/1.1/Client/DecoTools.1.8/DecoTools.1.8.oza
302  ::TolPkg::GetPackageInfoFromOZA $oza
303}
304
305proc ::TolPkg::test_02 { } {
306  return [ llength [ ::TolPkg::GetLocalPackages ] ]
307}
Note: See TracBrowser for help on using the repository browser.