Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split into library and binary #149

Merged
merged 2 commits into from
Nov 27, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
12 changes: 10 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 9 additions & 35 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,42 +1,21 @@
[package]
[workspace]
members = [
"metamath-rs",
"metamath-knife",
]
resolver = "2"

[workspace.package]
authors = ["David A. Wheeler <[email protected]>", "Stefan O'Rear <[email protected]>"]
license = "MIT OR Apache-2.0"
name = "metamath-knife"
readme = "README.md"
version = "0.3.6"
description = "A parallel and incremental verifier for Metamath databases"
repository = "https://github.com/david-a-wheeler/metamath-knife"
repository = "https://github.com/metamath/metamath-knife"
keywords = ["theorem", "proving", "verifier", "proof", "assistant"]
categories = ["command-line-utilities", "development-tools", "mathematics"]
edition = "2021"

[dependencies]
lazy_static = "1.4"
itertools = "0.10"
filetime = "0.2"
fnv = "1.0"
regex = { version = "1.5", default-features = false, features = ["std", "perf"] }
tinyvec = "1.5"
log = "0.4"
annotate-snippets = "0.9"
typed-arena = "2.0"

# Dependencies for standalone executable, not needed for a library
clap = "2.33"
simple_logger = "1.13"

# Optional dependencies
dot-writer = { version = "0.1.2", optional = true }
xml-rs = { version = "0.8.14", optional = true }

[dev-dependencies]
assert_matches = "1.5"

[features]
default = ["annotate-snippets/color"]
dot = ["dot-writer"]
xml = ["xml-rs"]

[profile]

[profile.release]
Expand All @@ -49,8 +28,3 @@ codegen-units = 4

[profile.test]
codegen-units = 4

[[bin]]
name = "metamath-knife"
path = "src/main.rs"
doc = false
22 changes: 22 additions & 0 deletions metamath-knife/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[package]
name = "metamath-knife"
readme = "metamath-knife/README.md"
description = "A command-line tool for Metamath, including parallel and incremental verifier for Metamath databases"
version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
edition = "2021"

[dependencies]
clap = "2.33"
simple_logger = "1.13"
annotate-snippets = "0.9"
metamath-rs = { path = "../metamath-rs" }

[[bin]]
name = "metamath-knife"
path = "src/main.rs"
doc = false
12 changes: 6 additions & 6 deletions src/main.rs → metamath-knife/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

use annotate_snippets::display_list::DisplayList;
use clap::{clap_app, crate_version};
use metamath_knife::database::{Database, DbOptions};
use metamath_knife::diag::BibError;
use metamath_knife::parser::is_valid_label;
use metamath_knife::statement::StatementAddress;
use metamath_knife::verify_markup::{Bibliography, Bibliography2};
use metamath_knife::SourceInfo;
use metamath_rs::database::{Database, DbOptions};
use metamath_rs::diag::BibError;
use metamath_rs::parser::is_valid_label;
use metamath_rs::statement::StatementAddress;
use metamath_rs::verify_markup::{Bibliography, Bibliography2};
use metamath_rs::SourceInfo;
use simple_logger::SimpleLogger;
use std::fs::File;
use std::io::{self, BufWriter};
Expand Down
34 changes: 34 additions & 0 deletions metamath-rs/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[package]
name = "metamath-rs"
readme = "metamath-rs/README.md"
description = "A library manipulating Metamath databases, including a parallel and incremental verifier for Metamath databases"
version.workspace = true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the two crates should be versioned separately.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me the advantages of a single version system is:

Which would be the pros of different versions / in which cases do you see them diverging?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be unfortunate if we have to release new library crate versions for changes to the CLI, or vice versa. AFAIK there isn't any special relation between git tags and crates.io releases unless we want there to be.

I think we can have versions on related tracks, but I would expect them to differ in their patch versions most of the time. They are two separate crates in a dependency relationship, and dependencies are generally versioned entirely separately, even if they are in the same repo. The only thing that same-repo implies is that the dependent crate (here the CLI) will be using the version of the library from HEAD (as a path dependency), or possibly the public version of that right after a release. Making the versions exactly match seems like it would just make a mess of semver because that's not what it was designed for.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, thanks: I've made the change.
I was unsure which version to use, so I simply put the current 0.3.6 for both. They can diverge in the future.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Despite the thumbs up, I'm unsure if I should go ahead and merge this, with massive changes in #116 pending.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either way there will be a merge. Maybe 116-first is easier? But you probably have better intuition than anyone on that point.

Copy link
Member

@digama0 digama0 Nov 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be better to proceed with this first, as it is comparatively simpler and doesn't involve any deep technical questions. It doesn't seem like there are any dissenting voices to this PR, so I'll merge it now and we can update the existing PRs to match.

authors.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
edition = "2021"

[dependencies]
lazy_static = "1.4"
itertools = "0.10"
filetime = "0.2"
fnv = "1.0"
regex = { version = "1.5", default-features = false, features = ["std", "perf"] }
tinyvec = "1.5"
log = "0.4"
annotate-snippets = "0.9"
typed-arena = "2.0"

# Optional dependencies
dot-writer = { version = "0.1.2", optional = true }
xml-rs = { version = "0.8.14", optional = true }

[dev-dependencies]
assert_matches = "1.5"

[features]
default = ["annotate-snippets/color"]
dot = ["dot-writer"]
xml = ["xml-rs"]
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions src/grammar.rs → metamath-rs/src/grammar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ impl GrammarTree {
///
/// Example:
/// ```
/// use metamath_knife::database::{Database, DbOptions};
/// use metamath_rs::database::{Database, DbOptions};
///
/// // Setup the required options
/// let mut options = DbOptions::default();
Expand Down Expand Up @@ -1675,7 +1675,7 @@ impl Grammar {
///
/// Example:
/// ```
/// use metamath_knife::database::{Database, DbOptions};
/// use metamath_rs::database::{Database, DbOptions};
///
/// // Setup the required options
/// let mut options = DbOptions::default();
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion src/typesetting.rs → metamath-rs/src/typesetting.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! The typesetting data.
//!
//! This is the result of parsing a `$t` metamath comment, which contains information
//! used by the metamath website generator. Although `metamath-knife` tries to be
//! used by the metamath website generator. Although `metamath-rs` tries to be
//! generic and so it does not itself contain a website generator, this pass can be
//! used to collect information for generating HTML in the style of
//! [`metamath.exe`](https://github.com/metamath/metamath-exe).
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.