extension: Require that grammar names are written in snake_case (#26295)
This PR updates the `ExtensionBuilder` to require that grammar names are written in snake_case. The grammar names are used to construct identifiers, so we need them to be valid C identifiers. Release Notes: - N/A
This commit is contained in:
parent
1b34437839
commit
05d3ee8555
3 changed files with 8 additions and 0 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -4537,6 +4537,7 @@ dependencies = [
|
||||||
"async-tar",
|
"async-tar",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"collections",
|
"collections",
|
||||||
|
"convert_case 0.8.0",
|
||||||
"fs",
|
"fs",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
"gpui",
|
"gpui",
|
||||||
|
|
|
@ -17,6 +17,7 @@ async-compression.workspace = true
|
||||||
async-tar.workspace = true
|
async-tar.workspace = true
|
||||||
async-trait.workspace = true
|
async-trait.workspace = true
|
||||||
collections.workspace = true
|
collections.workspace = true
|
||||||
|
convert_case.workspace = true
|
||||||
fs.workspace = true
|
fs.workspace = true
|
||||||
futures.workspace = true
|
futures.workspace = true
|
||||||
gpui.workspace = true
|
gpui.workspace = true
|
||||||
|
|
|
@ -4,6 +4,7 @@ use crate::{
|
||||||
use anyhow::{anyhow, bail, Context as _, Result};
|
use anyhow::{anyhow, bail, Context as _, Result};
|
||||||
use async_compression::futures::bufread::GzipDecoder;
|
use async_compression::futures::bufread::GzipDecoder;
|
||||||
use async_tar::Archive;
|
use async_tar::Archive;
|
||||||
|
use convert_case::{Case, Casing as _};
|
||||||
use futures::io::BufReader;
|
use futures::io::BufReader;
|
||||||
use futures::AsyncReadExt;
|
use futures::AsyncReadExt;
|
||||||
use http_client::{self, AsyncBody, HttpClient};
|
use http_client::{self, AsyncBody, HttpClient};
|
||||||
|
@ -97,6 +98,11 @@ impl ExtensionBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (grammar_name, grammar_metadata) in &extension_manifest.grammars {
|
for (grammar_name, grammar_metadata) in &extension_manifest.grammars {
|
||||||
|
let snake_cased_grammar_name = grammar_name.to_case(Case::Snake);
|
||||||
|
if grammar_name.as_ref() != snake_cased_grammar_name.as_str() {
|
||||||
|
bail!("grammar name '{grammar_name}' must be written in snake_case: {snake_cased_grammar_name}");
|
||||||
|
}
|
||||||
|
|
||||||
log::info!(
|
log::info!(
|
||||||
"compiling grammar {grammar_name} for extension {}",
|
"compiling grammar {grammar_name} for extension {}",
|
||||||
extension_dir.display()
|
extension_dir.display()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue