Skip to content

Commit 4ca839c

Browse files
committed
Don't fail creation of Package is there is no NAMESPACE file
1 parent 90e6604 commit 4ca839c

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

crates/ark/src/lsp/inputs/package.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use crate::lsp::inputs::package_namespace::Namespace;
1414
/// Represents an R package and its metadata relevant for static analysis.
1515
#[derive(Clone, Debug)]
1616
pub struct Package {
17-
/// Path to the directory that contains `DESCRIPTION` and `NAMESPACE`. Can
17+
/// Path to the directory that contains `DESCRIPTION``. Can
1818
/// be an installed package or a package source.
1919
pub path: PathBuf,
2020

@@ -47,11 +47,16 @@ impl Package {
4747
));
4848
}
4949

50-
let namespace_contents = fs::read_to_string(&namespace_path)?;
51-
let namespace = Namespace::parse(&namespace_contents)?;
50+
let namespace = if namespace_path.is_file() {
51+
let namespace_contents = fs::read_to_string(&namespace_path)?;
52+
Namespace::parse(&namespace_contents)?
53+
} else {
54+
tracing::info!("Package `{name}` doesn't contain a NAMESPACE file, using defaults");
55+
Namespace::default()
56+
};
5257

5358
Ok(Some(Package {
54-
path: package_path.to_path_buf(),
59+
path: package_path,
5560
description,
5661
namespace,
5762
}))

crates/ark/src/lsp/inputs/package_namespace.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use tree_sitter::Parser;
99
use crate::treesitter::TSQuery;
1010

1111
/// Parsed NAMESPACE file
12-
#[derive(Clone, Debug)]
12+
#[derive(Default, Clone, Debug)]
1313
pub struct Namespace {
1414
/// Names of objects exported with `export()`
1515
pub exports: Vec<String>,

0 commit comments

Comments
 (0)