Compare RouterOS version in script

On [/system resource get version] is not indicated the build-time

On [/ip neighbor] version is all together like "7.7 (stable) Jan/12/2023 07:35:45"

This function convert version from system or from neigbot to one array and keep same info (major, minor, patch, channel, build-time) on same position.

:global version2arr do={
    :local ver [:tostr $1]
    :local pos 0
    :local major "" ; :local minor ""; :local patch "" ; :local chnnl "" ; :local build "" ; :local btime ""
    :set pos   [:find $ver "." -1]
    :set major [:pick $ver 0 $pos]
    :set ver   [:pick $ver ($pos + 1) [:len $ver]]
    :if ([:typeof [:find $ver "." -1]] != "nil") do={
        :set pos   [:find $ver "." -1]
        :set minor [:pick $ver 0 $pos]
        :set ver   [:pick $ver ($pos + 1) [:len $ver]]
    }
    :if ([:typeof [:find $ver " " -1]] != "nil") do={
        :set pos [:find $ver " " -1]
        :if ($minor = "") do={
            :set minor [:pick $ver 0 $pos]
        } else={
            :set patch [:pick $ver 0 $pos]
        }
        :set ver [:pick $ver ($pos + 1) [:len $ver]]
    }
    :if ([:typeof [:find $ver "(" -1]] != "nil") do={
        :set pos [:find $ver ")" -1]
        :set chnnl [:pick $ver 1 $pos]
        :set ver [:pick $ver ($pos + 1) [:len $ver]]
    }
    :if ($ver ~ "^ ") do={
        :set btime [:pick $ver 1 [:len $ver]]
    } else={
        :set btime $ver
    }
    :return ($major,$minor,$patch,$chnnl,$btime)
}
[] > :put [$version2arr [/system resource get version]]
6;48;6;long-term

[] > :put [$version2arr [/system resource get version]]
7;7;;stable

[] > :put [$version2arr "7.7 (stable) Jan/12/2023 07:35:45"]
7;7;;stable;Jan/12/2023 07:35:45

[] > :put [$version2arr "7.10beta5 (development) 2023-05-03 14:33:19"]
7;10beta5;;development;2023-05-03 14:33:19

About development versions, the minor version is 10beta5, but some subsequents division is possible, but for me is excessive.