Changeset 29793 for trunk/base


Ignore:
Timestamp:
Oct 10, 2007, 7:46:58 AM (12 years ago)
Author:
nox@…
Message:

portlivecheck.tcl: Whitespace changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/port1.0/portlivecheck.tcl

    r27379 r29793  
    5656
    5757proc livecheck_main {args} {
    58         global livecheck.url livecheck.check livecheck.md5 livecheck.regex livecheck.name livecheck.distname livecheck.version
    59         global homepage portname portpath workpath
    60         global master_sites name distfiles
    61        
    62         set updated 0
    63         set updated_version "unknown"
    64         set has_master_sites [info exists master_sites]
    65         set has_homepage [info exists homepage]
    66 
    67         set tempfile ${workpath}/livecheck.TMP
    68         set port_moddate [file mtime ${portpath}/Portfile]
    69 
    70         ui_debug "Portfile modification date is [clock format $port_moddate]"
    71         ui_debug "Port (livecheck) version is ${livecheck.version}"
    72 
    73         # Determine the default type depending on the mirror.
    74         if {${livecheck.check} eq "default"} {
    75                 if {$has_master_sites && [regexp {\y(sourceforge|freshmeat|googlecode)\y(?::(\S+))?} $master_sites _ site tag]} {
    76                         if {$tag ne "" && ${livecheck.name} eq "default"} {
    77                                 set livecheck.name $tag
    78                         }
    79                         set livecheck.check $site
    80                 } else {
    81                     set livecheck.check "freshmeat"
    82                 }
    83                 if {$has_homepage && [regexp {^http://code.google.com/p/([^/]+)} $homepage _ tag]} {
    84                     if {${livecheck.name} eq "default"} {
    85                         set livecheck.name $tag
    86                     }
    87                     set livecheck.check "googlecode"
    88                 }
    89         }
    90         if {${livecheck.name} eq "default"} {
    91                 set livecheck.name $name
    92         }
    93 
    94         # Perform the check depending on the type.
    95         switch ${livecheck.check} {
    96             "freshmeat" {
    97                 if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
    98                         set livecheck.url "http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml"
    99                 }
    100                 if {${livecheck.regex} eq ""} {
    101                         set livecheck.regex "<latest_release_version>(.*)</latest_release_version>"
    102                 }
    103                 set livecheck.check "regex"
    104                 }
    105                 "sourceforge" {
    106                 if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
    107                         set livecheck.url "http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name}"
    108                 }
    109                 if {${livecheck.distname} eq "default"} {
    110                     set livecheck.distname ${livecheck.name}
    111                 }
    112                 if {${livecheck.regex} eq ""} {
    113                         set livecheck.regex "<title>${livecheck.distname} (.*) released.*</title>"
    114                 }
    115                 set livecheck.check "regex"
    116                 }
    117                 "googlecode" {
    118                     if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
    119                         set livecheck.url "http://code.google.com/p/${livecheck.name}/downloads/list"
    120                     }
    121                     if {${livecheck.distname} eq "default"} {
    122                         set livecheck.distname [regsub ***=${livecheck.version} [file tail [lindex ${distfiles} 0]] (.*)]
    123                     }
    124                     if {${livecheck.regex} eq ""} {
    125                         set livecheck.regex {<a href="http://${livecheck.name}.googlecode.com/files/${livecheck.distname}"}
    126                     }
    127                     set livecheck.check "regex"
    128                 }
    129         }
    130        
    131         # de-escape livecheck.url
    132         set livecheck.url [join ${livecheck.url}]
    133        
    134         switch ${livecheck.check} {
    135                 "regex" -
    136                 "regexm" {
    137                         # single and multiline regex
    138                         ui_debug "Fetching ${livecheck.url}"
    139                         if {[catch {curl fetch ${livecheck.url} $tempfile} error]} {
    140                                 ui_error "cannot check if $portname was updated ($error)"
    141                         } else {
    142                                 # let's extract the version from the file.
    143                                 set chan [open $tempfile "r"]
    144                                 set updated -1
    145                                 set the_re [subst -nocommands -nobackslashes [join ${livecheck.regex}]]
    146                                 ui_debug "The regex is >$the_re<"
    147                                 if {${livecheck.check} == "regexm"} {
    148                                         set data [read $chan]
    149                                         if {[regexp $the_re $data matched updated_version]} {
    150                                                 if {$updated_version != ${livecheck.version}} {
    151                                                         set updated 1
    152                                                 } else {
    153                                                         set updated 0
    154                                                 }
    155                                                 ui_debug "The regex matched >$matched<"
    156                                         }
    157                                 } else {
    158                                         while {1} {
    159                                                 if {[gets $chan line] < 0} {
    160                                                         break
    161                                                 }
    162                                                 if {[regexp $the_re $line matched updated_version]} {
    163                                                         if {$updated_version != ${livecheck.version}} {
    164                                                                 set updated 1
    165                                                         } else {
    166                                                                 set updated 0
    167                                                         }
    168                                                         ui_debug "The regex matched >$matched<"
    169                                                         break
    170                                                 }
    171                                         }
    172                                 }
    173                                 close $chan
    174                                 if {$updated < 0} {
    175                                         ui_error "cannot check if $portname was updated (regex didn't match)"
    176                                 }
    177                         }
    178                 }
    179                 "md5" {
    180                     ui_debug "Fetching ${livecheck.url}"
    181                         if {[catch {curl fetch ${livecheck.url} $tempfile} error]} {
    182                                 ui_error "cannot check if $portname was updated ($error)"
    183                                 set updated -1
    184                         } else {
    185                                 # let's compute the md5 sum.
    186                                 set dist_md5 [md5 file $tempfile]
    187                                 if {$dist_md5 != ${livecheck.md5}} {
    188                                         ui_debug "md5sum for ${livecheck.url}: $dist_md5"
    189                                         set updated 1
    190                                 }
    191                         }
    192                 }
    193                 "moddate" {
    194                         set port_moddate [file mtime ${portpath}/Portfile]
    195                         if {[catch {set updated [curl isnewer ${livecheck.url} $port_moddate]} error]} {
    196                                 ui_error "cannot check if $portname was updated ($error)"
    197                                 set updated -1
    198                         } else {
    199                                 if {!$updated} {
    200                                         ui_debug "${livecheck.url} is older than Portfile"
    201                                 }
    202                         }
    203                 }
    204                 "none" {
    205                 }
    206                 default {
    207                         ui_error "unknown livecheck.check ${livecheck.check}"
    208                 }
    209         }
    210 
    211         file delete -force $tempfile
    212 
    213         if {${livecheck.check} != "none"} {
    214                 if {$updated > 0} {
    215                         ui_msg "$portname seems to have been updated (port version: ${livecheck.version}, new version: $updated_version)"
    216                 } elseif {$updated == 0} {
    217                         ui_info "$portname seems to be up to date"
    218                 }
    219         }
     58    global livecheck.url livecheck.check livecheck.md5 livecheck.regex livecheck.name livecheck.distname livecheck.version
     59    global homepage portname portpath workpath
     60    global master_sites name distfiles
     61   
     62    set updated 0
     63    set updated_version "unknown"
     64    set has_master_sites [info exists master_sites]
     65    set has_homepage [info exists homepage]
     66
     67    set tempfile ${workpath}/livecheck.TMP
     68    set port_moddate [file mtime ${portpath}/Portfile]
     69
     70    ui_debug "Portfile modification date is [clock format $port_moddate]"
     71    ui_debug "Port (livecheck) version is ${livecheck.version}"
     72
     73    # Determine the default type depending on the mirror.
     74    if {${livecheck.check} eq "default"} {
     75        if {$has_master_sites && [regexp {\y(sourceforge|freshmeat|googlecode)\y(?::(\S+))?} $master_sites _ site tag]} {
     76            if {$tag ne "" && ${livecheck.name} eq "default"} {
     77                set livecheck.name $tag
     78            }
     79            set livecheck.check $site
     80        } else {
     81            set livecheck.check "freshmeat"
     82        }
     83        if {$has_homepage && [regexp {^http://code.google.com/p/([^/]+)} $homepage _ tag]} {
     84            if {${livecheck.name} eq "default"} {
     85                set livecheck.name $tag
     86            }
     87            set livecheck.check "googlecode"
     88        }
     89    }
     90    if {${livecheck.name} eq "default"} {
     91        set livecheck.name $name
     92    }
     93
     94    # Perform the check depending on the type.
     95    switch ${livecheck.check} {
     96        "freshmeat" {
     97            if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
     98                set livecheck.url "http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml"
     99            }
     100            if {${livecheck.regex} eq ""} {
     101                set livecheck.regex "<latest_release_version>(.*)</latest_release_version>"
     102            }
     103            set livecheck.check "regex"
     104        }
     105        "sourceforge" {
     106            if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
     107                set livecheck.url "http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name}"
     108            }
     109            if {${livecheck.distname} eq "default"} {
     110                set livecheck.distname ${livecheck.name}
     111            }
     112            if {${livecheck.regex} eq ""} {
     113                set livecheck.regex "<title>${livecheck.distname} (.*) released.*</title>"
     114            }
     115            set livecheck.check "regex"
     116        }
     117        "googlecode" {
     118            if {!$has_homepage || ${livecheck.url} eq ${homepage}} {
     119                set livecheck.url "http://code.google.com/p/${livecheck.name}/downloads/list"
     120            }
     121            if {${livecheck.distname} eq "default"} {
     122                set livecheck.distname [regsub ***=${livecheck.version} [file tail [lindex ${distfiles} 0]] (.*)]
     123            }
     124            if {${livecheck.regex} eq ""} {
     125                set livecheck.regex {<a href="http://${livecheck.name}.googlecode.com/files/${livecheck.distname}"}
     126            }
     127            set livecheck.check "regex"
     128        }
     129    }
     130   
     131    # de-escape livecheck.url
     132    set livecheck.url [join ${livecheck.url}]
     133   
     134    switch ${livecheck.check} {
     135        "regex" -
     136        "regexm" {
     137            # single and multiline regex
     138            ui_debug "Fetching ${livecheck.url}"
     139            if {[catch {curl fetch ${livecheck.url} $tempfile} error]} {
     140                ui_error "cannot check if $portname was updated ($error)"
     141            } else {
     142                # let's extract the version from the file.
     143                set chan [open $tempfile "r"]
     144                set updated -1
     145                set the_re [subst -nocommands -nobackslashes [join ${livecheck.regex}]]
     146                ui_debug "The regex is >$the_re<"
     147                if {${livecheck.check} == "regexm"} {
     148                    set data [read $chan]
     149                    if {[regexp $the_re $data matched updated_version]} {
     150                        if {$updated_version != ${livecheck.version}} {
     151                            set updated 1
     152                        } else {
     153                            set updated 0
     154                        }
     155                        ui_debug "The regex matched >$matched<"
     156                    }
     157                } else {
     158                    while {1} {
     159                        if {[gets $chan line] < 0} {
     160                            break
     161                        }
     162                        if {[regexp $the_re $line matched updated_version]} {
     163                            if {$updated_version != ${livecheck.version}} {
     164                                set updated 1
     165                            } else {
     166                                set updated 0
     167                            }
     168                            ui_debug "The regex matched >$matched<"
     169                            break
     170                        }
     171                    }
     172                }
     173                close $chan
     174                if {$updated < 0} {
     175                    ui_error "cannot check if $portname was updated (regex didn't match)"
     176                }
     177            }
     178        }
     179        "md5" {
     180            ui_debug "Fetching ${livecheck.url}"
     181            if {[catch {curl fetch ${livecheck.url} $tempfile} error]} {
     182                ui_error "cannot check if $portname was updated ($error)"
     183                set updated -1
     184            } else {
     185                # let's compute the md5 sum.
     186                set dist_md5 [md5 file $tempfile]
     187                if {$dist_md5 != ${livecheck.md5}} {
     188                    ui_debug "md5sum for ${livecheck.url}: $dist_md5"
     189                    set updated 1
     190                }
     191            }
     192        }
     193        "moddate" {
     194            set port_moddate [file mtime ${portpath}/Portfile]
     195            if {[catch {set updated [curl isnewer ${livecheck.url} $port_moddate]} error]} {
     196                ui_error "cannot check if $portname was updated ($error)"
     197                set updated -1
     198            } else {
     199                if {!$updated} {
     200                    ui_debug "${livecheck.url} is older than Portfile"
     201                }
     202            }
     203        }
     204        "none" {
     205        }
     206        default {
     207            ui_error "unknown livecheck.check ${livecheck.check}"
     208        }
     209    }
     210
     211    file delete -force $tempfile
     212
     213    if {${livecheck.check} != "none"} {
     214        if {$updated > 0} {
     215            ui_msg "$portname seems to have been updated (port version: ${livecheck.version}, new version: $updated_version)"
     216        } elseif {$updated == 0} {
     217            ui_info "$portname seems to be up to date"
     218        }
     219    }
    220220}
Note: See TracChangeset for help on using the changeset viewer.