From 3a3f7a53f80aad3a5618a23d309e6c86531620fd Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Mon, 27 Jan 2025 10:04:46 +0100 Subject: [PATCH] Add converter version info to db and jld2 cache --- .gitignore | 2 ++ CHANGELOG.md | 1 + src/PSBoardDataBase.jl | 2 +- src/import_data.jl | 22 +++++++++++++++++----- src/sql/create_table.sql | 3 ++- test/runtests.jl | 2 +- 6 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index dfbde7c..a9b5960 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ docs/build +*.db +*.jld2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d95a03..0fb1dcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `create_database`(formally `create_database_from_exported_csvs`) now can save a JLD2 cache to store parsed slave logs. - Docs: add index page for published notebooks +- Added converter git version info (`git describe --dirty`) to the database and JLD2 cache. ### Changed diff --git a/src/PSBoardDataBase.jl b/src/PSBoardDataBase.jl index 98d39a0..ca153c5 100644 --- a/src/PSBoardDataBase.jl +++ b/src/PSBoardDataBase.jl @@ -104,7 +104,7 @@ function create_database( jldopen(jld2_slavelog_path, "w") end - insert_version_info(db) + insert_version_info(db, jld2_slavelog) insert_qaqc_campaign_id(db) insert_qaqc_positions(db, jathubs_table) diff --git a/src/import_data.jl b/src/import_data.jl index f5b1eaa..7c4b34b 100644 --- a/src/import_data.jl +++ b/src/import_data.jl @@ -1,20 +1,32 @@ """ - insert_version_info(db::SQLite.DB) + insert_version_info(db::SQLite.DB, jld2_slavelog::JLD2.JLDFile) Insert version information of this software as string. + +In `db`, these are located in `versions` table and in JLD2 cache, they are located in "meta". """ -function insert_version_info(db::SQLite.DB) +function insert_version_info(db::SQLite.DB, jld2_slavelog::JLD2.JLDFile) stmt_insert_version = DBInterface.prepare( db, sql""" - INSERT INTO versions VALUES (:converter) + INSERT INTO versions VALUES (:converter, :converter_git) """, ) - @info "converter version info" pkgversion(@__MODULE__) |> string + converter_git_describe = try + read(`git describe --dirty`, String) + catch e + @warn "Failed to get git describe: $e" + "" + end + @info "converter version info" converter = pkgversion(@__MODULE__) |> string converter_git_describe DBInterface.execute( stmt_insert_version, - (; converter = pkgversion(@__MODULE__) |> string), + (; + converter = pkgversion(@__MODULE__) |> string, + converter_git = converter_git_describe, + ), ) + jld2_slavelog["meta"] = converter_git_describe nothing end diff --git a/src/sql/create_table.sql b/src/sql/create_table.sql index 96b27d0..559a5b0 100644 --- a/src/sql/create_table.sql +++ b/src/sql/create_table.sql @@ -1,5 +1,6 @@ CREATE TABLE versions ( - converter TEXT + converter TEXT, + converter_git TEXT ); CREATE TABLE ps_boards ( diff --git a/test/runtests.jl b/test/runtests.jl index 77d1a1e..6626325 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -206,7 +206,7 @@ true || include("../src/PSBoardDataBase.jl") jld2_slavelog = jldopen(jld2path, "w") @info "" db jld2_slavelog - @test PSBoardDataBase.insert_version_info(db) |> isnothing + @test PSBoardDataBase.insert_version_info(db, jld2_slavelog) |> isnothing let stmt stmt = DBInterface.prepare( db,