Skip to content

Commit 2e3b3c6

Browse files
committed
default_backend(): only select 'file' if it works
E.g. if there is no system keyring or some required packages are not installed then don't.
1 parent ffc6eec commit 2e3b3c6

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

R/default_backend.R

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ default_backend_auto <- function() {
8585
backend_secret_service$new()$is_available()) {
8686
backend_secret_service
8787

88-
} else if ("file" %in% names(known_backends)) {
88+
} else if ("file" %in% names(known_backends) && file_backend_works()) {
8989
backend_file
9090

9191
} else {
@@ -97,6 +97,19 @@ default_backend_auto <- function() {
9797
}
9898
}
9999

100+
file_backend_works <- function() {
101+
tryCatch({
102+
kb <- backend_file$new()
103+
krs <- kb$keyring_list()
104+
def <- kb$keyring_default()
105+
if (!def %in% krs$keyring) {
106+
return(FALSE)
107+
}
108+
kb$list()
109+
TRUE
110+
}, error = function(err) FALSE)
111+
}
112+
100113
backend_factory <- function(name) {
101114
assert_that(is_string(name))
102115
if (!name %in% names(known_backends)) {

0 commit comments

Comments
 (0)