Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"title": "ResearchSoftwareMetadata.jl",
"description": "Research Software metadata crosswalk between Project.toml, codemeta.json, .zenodo.json and LICENSE to provide consistent metadata",
"upload_type": "software",
"creators": [
{
Expand Down
7 changes: 7 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# NEWS

- v0.2.0
- Include authors without ORCIDs in codemeta.json and .zenodo.json
- Handle missing ORCID and ROR records without crashing
- Fail on connection errors and unexpected HTTP statuses, writing no files so everything is left in its original state
- Add optional top-level Project.toml keys description, keywords, category, development_status and publications as the source for codemeta.json and .zenodo.json, backfilling them from codemeta.json when absent
- Split the source into separate files and export crosswalk, increase_patch, increase_minor, increase_major
- Construct a missing author_details section in Project.toml from the authors field and codemeta.json or .zenodo.json when consistent with authors
- v0.1.7
- Bump compat and fix workflows
- v0.1.6
Expand Down
9 changes: 7 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
name = "ResearchSoftwareMetadata"
uuid = "58378933-4625-47fa-851e-05ee27d397bd"
license = "BSD-2-Clause"
description = "Research Software metadata crosswalk between Project.toml, codemeta.json, .zenodo.json and LICENSE to provide consistent metadata"
keywords = ["RSMD", "julia", "metadata", "research software"]
category = "metadata"
development_status = "active"
authors = ["Richard Reeve <richard.reeve@glasgow.ac.uk>"]
version = "0.1.7"
version = "0.2.0"

[deps]
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
Expand Down Expand Up @@ -34,9 +38,10 @@ email = "richard.reeve@glasgow.ac.uk"

[extras]
Git = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "Git", "Logging", "TOML"]
test = ["Test", "Git", "JSON", "Logging", "TOML"]
24 changes: 17 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ The package is registered in the `General` registry so can be
built and installed with `add`. For example:

```julia
(@v1.10) pkg> add ResearchSoftwareMetadata
(@v1.12) pkg> add ResearchSoftwareMetadata
Resolving package versions...
Updating `~/.julia/environments/v1.10/Project.toml`
[aea672f4] + ResearchSoftwareMetadata v0.1.2
Updating `~/.julia/environments/v1.10/Manifest.toml`
Updating `~/.julia/environments/v1.12/Project.toml`
[aea672f4] + ResearchSoftwareMetadata v0.2.0
Updating `~/.julia/environments/v1.12/Manifest.toml`

(@v1.10) pkg>
(@v1.12) pkg>
```

## Usage
Expand All @@ -48,6 +48,16 @@ orcid = "0000-0003-2589-8091"
ror = "00vtgdb53"
```

You can also optionally add a `description` of the package, `keywords` associated with it, the software `category` it belongs to, its [repostatus.org](https://www.repostatus.org) `development_status`, and the DOIs of any `publications` associated with the package. All of these are propagated into `codemeta.json` and `.zenodo.json`, and any values already in `codemeta.json` but missing from `Project.toml` will be backfilled into it:

```toml
description = "A package that does things"
keywords = ["julia", "metadata"]
category = "metadata"
development_status = "active"
publications = ["10.5281/zenodo.12789179"]
```

Then, from the root of your package, you can just run a crosswalk:

```julia
Expand All @@ -70,8 +80,8 @@ ResearchSoftwareMetadata.crosswalk(category = "metadata", keywords = ["julia", "

# Increase version number during crosswalk
ResearchSoftwareMetadata.increase_patch() # Bump patch version (e.g. 0.4.1 -> 0.4.2)
ResearchSoftwareMetadata.increase_minor() # Bump minor version (e.g. 0.4.1 -> 0.5.0)
ResearchSoftwareMetadata.increase_major() # Bump major version (e.g. 0.4.1 -> 1.0.0)
ResearchSoftwareMetadata.increase_minor() # Bump minor version (e.g. 0.4.2 -> 0.5.0)
ResearchSoftwareMetadata.increase_major() # Bump major version (e.g. 0.5.0 -> 1.0.0)
```

You might also consider reformatting all of your julia code to a consistent format. A `.JuliaFormatter.toml` file in the package root defines what the formatting standard should be.
Expand Down
9 changes: 5 additions & 4 deletions codemeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
"Linux",
"macOS"
],
"version": "v0.1.7",
"dateModified": "2026-07-07",
"version": "v0.2.0",
"dateModified": "2026-07-09",
"datePublished": "2024-07-18",
"downloadUrl": "https://github.com/boydorr/ResearchSoftwareMetadata.jl/archive/refs/tags/v0.1.7.tar.gz",
"downloadUrl": "https://github.com/boydorr/ResearchSoftwareMetadata.jl/archive/refs/tags/v0.2.0.tar.gz",
"license": "https://spdx.org/licenses/BSD-2-Clause",
"author": [
{
Expand All @@ -44,5 +44,6 @@
"julia",
"metadata",
"research software"
]
],
"description": "Research Software metadata crosswalk between Project.toml, codemeta.json, .zenodo.json and LICENSE to provide consistent metadata"
}
Loading
Loading