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.
This commit is contained in:
Will Lillis 2025-10-31 21:20:17 -04:00 committed by Christian Clason
parent b8f52210f9
commit 097c2d4f05
5 changed files with 17 additions and 36 deletions

View file

@ -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")
"#}

View file

@ -88,17 +88,6 @@ struct Init {
pub grammar_path: Option<PathBuf>,
}
#[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<String>,
/// 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);
}

View file

@ -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")

View file

@ -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)'

View file

@ -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`