Skip to content
Snippets Groups Projects
Verified Commit ec1cf939 authored by Tamas Gal's avatar Tamas Gal :speech_balloon:
Browse files

Add versioning for HDF5

parent 54e8987b
No related branches found
No related tags found
1 merge request!12Add versioning for HDF5
......@@ -9,6 +9,7 @@ DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
KM3NeTTestData = "3249b543-581e-4f22-b7da-6c2cdf549b24"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
Sockets = "6462fe0b-24de-5631-8697-dd941f90decc"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
......
......@@ -7,6 +7,9 @@ using Printf: @printf
using Dates: DateTime, datetime2unix, unix2datetime
using Sockets
using UUIDs
import Pkg
const version = VersionNumber(Pkg.TOML.parsefile(joinpath(pkgdir(KM3io), "Project.toml"))["version"])
using DocStringExtensions
using StaticArrays: FieldVector, SVector
......
......@@ -42,6 +42,14 @@ struct H5File
function H5File(fname::AbstractString, mode="r")
h5f = h5open(fname, mode)
if mode != "r"
if "KM3io.jl" keys(attrs(h5f))
v = VersionNumber(attrs(h5f)["KM3io.jl"])
v != version && @warn "The file '$fname' was created by a different version of KM3io.jl ($v). Modifying it might cause problems."
else
attrs(h5f)["KM3io.jl"] = string(version)
end
end
new(h5f, Dict{String, H5CompoundDataset}())
end
end
......
......@@ -109,3 +109,17 @@ function tonumifpossible(v::AbstractString)
end
v
end
"""
Returns the version of a given package.
"""
function get_package_version(package_name::AbstractString)
dependencies = Pkg.dependencies()
for (uuid, pkg_info) dependencies
pkg_info.name == package_name && return pkg_info.version
end
error("Package '$package_name' not found in the dependencies of the current environment.")
end
......@@ -19,6 +19,7 @@ end
close(f)
f = h5open(fname, "r")
@test KM3io.version == VersionNumber(attrs(f)["KM3io.jl"])
@test bars == reinterpret(Bar, f["bars"][:])
close(f)
......
......@@ -80,3 +80,9 @@ end
@test 294.6407542676734 bt.lik
close(f)
end
@testset "get_package_version()" begin
v = KM3io.get_package_version("UnROOT")
@test v >= v"0.10.13"
@test_throws ErrorException KM3io.get_package_version("LetsAssumeThatThisPackageWillNeverBeInTheDependencies")
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment