difftreelog
chore(slop) cargo metadata
in: master
17 files changed
cmds/jrsonnet-deps/Cargo.tomldiffbeforeafterboth--- a/cmds/jrsonnet-deps/Cargo.toml
+++ b/cmds/jrsonnet-deps/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-deps"
-description = "List dependencies of a jsonnet file"
+description = "Command-line tool that lists imports of a jsonnet file"
+keywords = ["jsonnet", "dependencies", "cli"]
+categories = ["command-line-utilities"]
authors.workspace = true
edition.workspace = true
license.workspace = true
cmds/jrsonnet-fmt/Cargo.tomldiffbeforeafterboth--- a/cmds/jrsonnet-fmt/Cargo.toml
+++ b/cmds/jrsonnet-fmt/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-fmt"
-description = "Jrsonnet code formatter CLI"
+description = "Command-line jsonnet code formatter"
+keywords = ["jsonnet", "formatter", "cli"]
+categories = ["command-line-utilities", "development-tools"]
authors.workspace = true
edition.workspace = true
license.workspace = true
cmds/jrsonnet/Cargo.tomldiffbeforeafterboth--- a/cmds/jrsonnet/Cargo.toml
+++ b/cmds/jrsonnet/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet"
-description = "Rust jsonnet implementation"
+description = "Rust implementation of the jsonnet command-line interpreter"
+keywords = ["jsonnet", "json", "config", "cli"]
+categories = ["command-line-utilities", "config", "template-engine"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-cli/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-cli/Cargo.toml
+++ b/crates/jrsonnet-cli/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-cli"
-description = "Utilities for building jrsonnet CLIs"
+description = "Reusable clap-based building blocks for jrsonnet command-line tools"
+keywords = ["jsonnet", "cli", "clap"]
+categories = ["command-line-interface"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-evaluator/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-evaluator/Cargo.toml
+++ b/crates/jrsonnet-evaluator/Cargo.toml
@@ -1,6 +1,9 @@
[package]
name = "jrsonnet-evaluator"
-description = "jsonnet interpreter"
+description = "Rust implementation of the jsonnet language interpreter"
+keywords = ["jsonnet", "interpreter", "config"]
+categories = ["compilers", "template-engine", "config"]
+readme = "README.adoc"
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-evaluator/src/import.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/import.rs
+++ b/crates/jrsonnet-evaluator/src/import.rs
@@ -9,7 +9,6 @@
use fs::File;
use jrsonnet_gcmodule::Acyclic;
-use jrsonnet_interner::IBytes;
use jrsonnet_ir::{
IStr, SourceDefaultIgnoreJpath, SourceDirectory, SourceFifo, SourceFile, SourcePath,
};
@@ -160,10 +159,14 @@
path.canonicalize().map_err(|e| ImportIo(e.to_string()))?,
))));
}
- let ty = meta.file_type();
#[cfg(unix)]
{
use std::os::unix::fs::FileTypeExt;
+
+ use jrsonnet_interner::IBytes;
+
+ let ty = meta.file_type();
+
if ty.is_fifo() {
let file = fs::read(path).map_err(|e| ImportIo(format!("FIFO read failed: {e}")))?;
return Ok(Some(SourcePath::new(SourceFifo(
crates/jrsonnet-formatter/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-formatter/Cargo.toml
+++ b/crates/jrsonnet-formatter/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-formatter"
-description = "Jrsonnet code formatter"
+description = "Jsonnet source code formatter library"
+keywords = ["jsonnet", "formatter"]
+categories = ["development-tools"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-interner/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-interner/Cargo.toml
+++ b/crates/jrsonnet-interner/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-interner"
-description = "Jrsonnet string interning"
+description = "String interner used by jrsonnet"
+keywords = ["jsonnet", "interner", "string"]
+categories = ["data-structures", "memory-management"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-ir-parser/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-ir-parser/Cargo.toml
+++ b/crates/jrsonnet-ir-parser/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-ir-parser"
-description = "Jrsonnet hand-rolled parser which parses source directly into IR"
+description = "Hand-rolled recursive-descent parser that produces jrsonnet IR directly"
+keywords = ["jsonnet", "parser"]
+categories = ["parser-implementations"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-ir/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-ir/Cargo.toml
+++ b/crates/jrsonnet-ir/Cargo.toml
@@ -1,6 +1,9 @@
[package]
name = "jrsonnet-ir"
-description = "jsonnet language parser and AST"
+description = "Intermediate representation for the jsonnet language used by jrsonnet"
+keywords = ["jsonnet", "ir", "ast"]
+categories = ["compilers"]
+readme = "README.adoc"
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-lexer/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-lexer/Cargo.toml
+++ b/crates/jrsonnet-lexer/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-lexer"
-description = "Jrsonnet lexer shared between rowan and hand-rolled parser"
+description = "Jsonnet lexer shared between the rowan-based and hand-rolled jrsonnet parsers"
+keywords = ["jsonnet", "lexer"]
+categories = ["parser-implementations"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-macros/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-macros/Cargo.toml
+++ b/crates/jrsonnet-macros/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-macros"
-description = "Macros to reduce boilerplate in jrsonnet-evaluator usage"
+description = "Procedural macros to reduce boilerplate in jrsonnet-evaluator usage"
+keywords = ["jsonnet", "macros"]
+categories = ["development-tools::procedural-macro-helpers"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-peg-parser/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-peg-parser/Cargo.toml
+++ b/crates/jrsonnet-peg-parser/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-peg-parser"
-description = "Legacy peg-based parser for jrsonnet"
+description = "Legacy PEG-based parser producing jrsonnet IR"
+keywords = ["jsonnet", "parser", "peg"]
+categories = ["parser-implementations"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-rowan-parser/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/Cargo.toml
+++ b/crates/jrsonnet-rowan-parser/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-rowan-parser"
-description = "Rowan-based CST for jrsonnet"
+description = "Rowan-based concrete syntax tree parser for jsonnet, suitable for tooling and LSP"
+keywords = ["jsonnet", "parser", "rowan", "cst"]
+categories = ["parser-implementations"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-rowan-parser/src/ast.rsdiffbeforeafterboth1use std::marker::PhantomData;23use crate::{SyntaxKind, SyntaxNode, SyntaxNodeChildren, SyntaxToken};45/// The main trait to go from untyped `SyntaxNode` to a typed ast.6///7/// The conversion itself has zero runtime cost: ast and syntax nodes have exactly8/// the same representation: a pointer to the tree root and a pointer to the9/// node itself.10pub trait AstNode {11 fn can_cast(kind: SyntaxKind) -> bool12 where13 Self: Sized;1415 fn cast(syntax: SyntaxNode) -> Option<Self>16 where17 Self: Sized;1819 fn syntax(&self) -> &SyntaxNode;20 #[must_use]21 fn clone_for_update(&self) -> Self22 where23 Self: Sized,24 {25 Self::cast(self.syntax().clone_for_update()).unwrap()26 }27 #[must_use]28 fn clone_subtree(&self) -> Self29 where30 Self: Sized,31 {32 Self::cast(self.syntax().clone_subtree()).unwrap()33 }34}3536/// Like `AstNode`, but wraps tokens rather than interior nodes.37pub trait AstToken {38 fn can_cast(token: SyntaxKind) -> bool39 where40 Self: Sized;4142 fn cast(syntax: SyntaxToken) -> Option<Self>43 where44 Self: Sized;4546 fn syntax(&self) -> &SyntaxToken;4748 fn text(&self) -> &str {49 self.syntax().text()50 }51}5253#[derive(Debug, Clone)]54pub struct AstChildren<N> {55 inner: SyntaxNodeChildren,56 ph: PhantomData<N>,57}5859impl<N> AstChildren<N> {60 fn new(parent: &SyntaxNode) -> Self {61 AstChildren {62 inner: parent.children(),63 ph: PhantomData,64 }65 }66}6768impl<N: AstNode> Iterator for AstChildren<N> {69 type Item = N;70 fn next(&mut self) -> Option<N> {71 self.inner.find_map(N::cast)72 }73}7475pub mod support {76 use rowan::NodeOrToken;7778 use super::{AstChildren, AstNode, AstToken, SyntaxKind, SyntaxNode, SyntaxToken};7980 pub fn child<N: AstNode>(parent: &SyntaxNode) -> Option<N> {81 parent.children().find_map(N::cast)82 }83 pub fn token_child<N: AstToken>(parent: &SyntaxNode) -> Option<N> {84 parent.children_with_tokens().find_map(|n| match n {85 rowan::NodeOrToken::Node(_) => None,86 rowan::NodeOrToken::Token(t) => N::cast(t),87 })88 }8990 pub fn children<N: AstNode>(parent: &SyntaxNode) -> AstChildren<N> {91 AstChildren::new(parent)92 }9394 pub fn token(parent: &SyntaxNode, kind: SyntaxKind) -> Option<SyntaxToken> {95 parent96 .children_with_tokens()97 .filter_map(NodeOrToken::into_token)98 .find(|it| it.kind() == kind)99 }100}1use std::marker::PhantomData;23use crate::{SyntaxKind, SyntaxNode, SyntaxNodeChildren, SyntaxToken};45/// The main trait to go from untyped `SyntaxNode` to a typed ast.6///7/// The conversion itself has zero runtime cost: ast and syntax nodes have exactly8/// the same representation: a pointer to the tree root and a pointer to the9/// node itself.10pub trait AstNode {11 fn can_cast(kind: SyntaxKind) -> bool12 where13 Self: Sized;1415 fn cast(syntax: SyntaxNode) -> Option<Self>16 where17 Self: Sized;1819 fn syntax(&self) -> &SyntaxNode;20 #[must_use]21 fn clone_for_update(&self) -> Self22 where23 Self: Sized,24 {25 Self::cast(self.syntax().clone_for_update()).unwrap()26 }27 #[must_use]28 fn clone_subtree(&self) -> Self29 where30 Self: Sized,31 {32 Self::cast(self.syntax().clone_subtree()).unwrap()33 }34}3536/// Like `AstNode`, but wraps tokens rather than interior nodes.37pub trait AstToken {38 fn can_cast(token: SyntaxKind) -> bool39 where40 Self: Sized;4142 fn cast(syntax: SyntaxToken) -> Option<Self>43 where44 Self: Sized;4546 fn syntax(&self) -> &SyntaxToken;4748 fn text(&self) -> &str {49 self.syntax().text()50 }51}5253#[derive(Debug, Clone)]54pub struct AstChildren<N> {55 inner: SyntaxNodeChildren,56 ph: PhantomData<N>,57}5859impl<N> AstChildren<N> {60 fn new(parent: &SyntaxNode) -> Self {61 AstChildren {62 inner: parent.children(),63 ph: PhantomData,64 }65 }66}6768impl<N: AstNode> Iterator for AstChildren<N> {69 type Item = N;70 fn next(&mut self) -> Option<N> {71 self.inner.find_map(N::cast)72 }73}7475pub mod support {76 use rowan::NodeOrToken;7778 use super::{AstChildren, AstNode, AstToken, SyntaxKind, SyntaxNode, SyntaxToken};7980 pub fn token_child<N: AstToken>(parent: &SyntaxNode) -> Option<N> {81 parent.children_with_tokens().find_map(|n| match n {82 rowan::NodeOrToken::Node(_) => None,83 rowan::NodeOrToken::Token(t) => N::cast(t),84 })85 }8687 pub fn children<N: AstNode>(parent: &SyntaxNode) -> AstChildren<N> {88 AstChildren::new(parent)89 }9091 pub fn token(parent: &SyntaxNode, kind: SyntaxKind) -> Option<SyntaxToken> {92 parent93 .children_with_tokens()94 .filter_map(NodeOrToken::into_token)95 .find(|it| it.kind() == kind)96 }97}crates/jrsonnet-stdlib/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-stdlib/Cargo.toml
+++ b/crates/jrsonnet-stdlib/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-stdlib"
-description = "jsonnet standard library packaged as crate"
+description = "Jsonnet standard library implementation for jrsonnet"
+keywords = ["jsonnet", "stdlib"]
+categories = ["template-engine"]
authors.workspace = true
edition.workspace = true
license.workspace = true
crates/jrsonnet-types/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-types/Cargo.toml
+++ b/crates/jrsonnet-types/Cargo.toml
@@ -1,6 +1,8 @@
[package]
name = "jrsonnet-types"
-description = "Jrsonnet type system definition"
+description = "Type system definitions used by jrsonnet"
+keywords = ["jsonnet", "types"]
+categories = ["data-structures"]
authors.workspace = true
edition.workspace = true
license.workspace = true