From 097c2d4f05c3b91132374c33068046beb5feeee7 Mon Sep 17 00:00:00 2001 From: Will Lillis Date: Fri, 31 Oct 2025 21:20:17 -0400 Subject: [PATCH] fix(cli): remove `--emit=lib` generate option This also replaces the `--emit` option with an `--no-parser` flag. The default value is false, meaning a parser is still generated by default. --- crates/cli/src/init.rs | 10 ++++----- crates/cli/src/main.rs | 27 +++++------------------ crates/cli/src/templates/cmakelists.cmake | 4 ++-- crates/cli/src/templates/makefile | 4 ++-- docs/src/cli/generate.md | 8 ++----- 5 files changed, 17 insertions(+), 36 deletions(-) diff --git a/crates/cli/src/init.rs b/crates/cli/src/init.rs index 53ab84f3..62923441 100644 --- a/crates/cli/src/init.rs +++ b/crates/cli/src/init.rs @@ -572,14 +572,14 @@ pub fn generate_grammar_files( .replace( indoc! {r" $(PARSER): $(SRC_DIR)/grammar.json - $(TS) generate $^ + $(TS) generate $^ "}, indoc! {r" $(SRC_DIR)/grammar.json: grammar.js - $(TS) generate --emit=json $^ + $(TS) generate --no-parser $^ $(PARSER): $(SRC_DIR)/grammar.json - $(TS) generate --emit=parser $^ + $(TS) generate $^ "} ); write_file(path, contents)?; @@ -627,14 +627,14 @@ pub fn generate_grammar_files( add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js - --emit=json + --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json - --emit=parser --abi=${TREE_SITTER_ABI_VERSION} + --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating parser.c") "#} diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index ad7667c2..26595f41 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -88,17 +88,6 @@ struct Init { pub grammar_path: Option, } -#[derive(Clone, Debug, Default, ValueEnum, PartialEq, Eq)] -enum GenerationEmit { - /// Generate `grammar.json` and `node-types.json` - Json, - /// Generate `parser.c` and related files - #[default] - Parser, - /// Compile to a library - Lib, -} - #[derive(Args)] #[command(alias = "gen", alias = "g")] struct Generate { @@ -121,12 +110,11 @@ struct Generate { ) )] pub abi_version: Option, - /// What generated files to emit + /// Only generate `grammar.json` and `node-types.json` #[arg(long)] - #[clap(value_enum, default_value_t=GenerationEmit::Parser)] - pub emit: GenerationEmit, - /// Deprecated: use --emit=lib. - #[arg(long, short = 'b', conflicts_with = "emit")] + pub no_parser: bool, + /// Compile all defined languages in the current dir + #[arg(long, short = 'b')] pub build: bool, /// Compile a parser in debug mode #[arg(long, short = '0')] @@ -862,9 +850,6 @@ impl Generate { version.parse().expect("invalid abi version flag") } }); - if self.build { - warn!("--build is deprecated, use --emit=lib instead"); - } if let Err(err) = tree_sitter_generate::generate_parser_in_directory( current_dir, @@ -873,7 +858,7 @@ impl Generate { abi_version, self.report_states_for_rule.as_deref(), self.js_runtime.as_deref(), - self.emit != GenerationEmit::Json, + !self.no_parser, if self.disable_optimizations { OptLevel::empty() } else { @@ -889,7 +874,7 @@ impl Generate { Err(anyhow!(err.to_string())).with_context(|| "Error when generating parser")?; } } - if self.emit == GenerationEmit::Lib || self.build { + if self.build { if let Some(path) = self.libdir { loader = loader::Loader::with_parser_lib_path(path); } diff --git a/crates/cli/src/templates/cmakelists.cmake b/crates/cli/src/templates/cmakelists.cmake index c2fd82fd..b0f4f790 100644 --- a/crates/cli/src/templates/cmakelists.cmake +++ b/crates/cli/src/templates/cmakelists.cmake @@ -22,14 +22,14 @@ find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js - --emit=json + --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json - --emit=parser --abi=${TREE_SITTER_ABI_VERSION} + --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating parser.c") diff --git a/crates/cli/src/templates/makefile b/crates/cli/src/templates/makefile index 847381c5..b42dab97 100644 --- a/crates/cli/src/templates/makefile +++ b/crates/cli/src/templates/makefile @@ -73,10 +73,10 @@ $(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in -e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|' $< > $@ $(SRC_DIR)/grammar.json: grammar.js - $(TS) generate --emit=json $^ + $(TS) generate --no-parser $^ $(PARSER): $(SRC_DIR)/grammar.json - $(TS) generate --emit=parser $^ + $(TS) generate $^ install: all install -d '$(DESTDIR)$(DATADIR)'/tree-sitter/queries/KEBAB_PARSER_NAME '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)' diff --git a/docs/src/cli/generate.md b/docs/src/cli/generate.md index 02fcec00..9014e0ea 100644 --- a/docs/src/cli/generate.md +++ b/docs/src/cli/generate.md @@ -30,13 +30,9 @@ what keywords were extracted, what states were split and why, and the entry poin The ABI to use for parser generation. The default is ABI 15, with ABI 14 being a supported target. -### `--emit` +### `--no-parser` -What generated files to emit. Possible values: - -- `json`: Generate `grammar.json` and `node-types.json` -- `parser` (default): Generate `parser.c` and related files. -- `lib`: Compile to a library (equivalent of the deprecated `--build` option) +Only generate `grammar.json` and `node-types.json` ### `-0/--debug-build`