Skip to content

Commit

Permalink
loader: add TREE_SITTER_LIBDIR; cli: add --libdir to `tree-sitter gen…
Browse files Browse the repository at this point in the history
…erate`

Closes #1336
  • Loading branch information
ahlinc committed Jan 6, 2023
1 parent f87911f commit 772495d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
11 changes: 7 additions & 4 deletions cli/loader/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::sync::Mutex;
use std::time::SystemTime;
use std::{fs, mem};
use std::{env, fs, mem};
use tree_sitter::{Language, QueryError, QueryErrorKind};
use tree_sitter_highlight::HighlightConfiguration;
use tree_sitter_tags::{Error as TagsError, TagsConfiguration};
Expand Down Expand Up @@ -108,9 +108,12 @@ unsafe impl Sync for Loader {}

impl Loader {
pub fn new() -> Result<Self> {
let parser_lib_path = dirs::cache_dir()
.ok_or(anyhow!("Cannot determine cache directory"))?
.join("tree-sitter/lib");
let parser_lib_path = match env::var("TREE_SITTER_LIBDIR") {
Ok(path) => PathBuf::from(path),
_ => dirs::cache_dir()
.ok_or(anyhow!("Cannot determine cache directory"))?
.join("tree-sitter/lib"),
};
Ok(Self::with_parser_lib_path(parser_lib_path))
}

Expand Down
18 changes: 15 additions & 3 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use anyhow::{anyhow, Context, Result};
use clap::{App, AppSettings, Arg, SubCommand};
use glob::glob;
use std::path::Path;
use std::path::{Path, PathBuf};
use std::{env, fs, u64};
use tree_sitter_cli::{
generate, highlight, logger, parse, playground, query, tags, test, test_highlight, test_tags,
Expand Down Expand Up @@ -107,10 +107,18 @@ fn run() -> Result<()> {
)
.arg(Arg::with_name("no-bindings").long("no-bindings"))
.arg(
Arg::with_name("build").long("build").short("b")
.help("Compile all defined languages in the current dir")
Arg::with_name("build")
.long("build")
.short("b")
.help("Compile all defined languages in the current dir"),
)
.arg(&debug_build_arg)
.arg(
Arg::with_name("libdir")
.long("libdir")
.takes_value(true)
.value_name("path"),
)
.arg(
Arg::with_name("report-states-for-rule")
.long("report-states-for-rule")
Expand Down Expand Up @@ -276,6 +284,7 @@ fn run() -> Result<()> {
let grammar_path = matches.value_of("grammar-path");
let debug_build = matches.is_present("debug-build");
let build = matches.is_present("build");
let libdir = matches.value_of("libdir");
let report_symbol_name = matches.value_of("report-states-for-rule").or_else(|| {
if matches.is_present("report-states") {
Some("")
Expand Down Expand Up @@ -305,6 +314,9 @@ fn run() -> Result<()> {
report_symbol_name,
)?;
if build {
if let Some(path) = libdir {
loader = loader::Loader::with_parser_lib_path(PathBuf::from(path));
}
loader.use_debug_build(debug_build);
loader.languages_at_path(&current_dir)?;
}
Expand Down

0 comments on commit 772495d

Please sign in to comment.