From 69b1f7d94750ef98c58a5fc0e7e4403cc822074b Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:24:15 -0600 Subject: [PATCH 1/7] Adds missing imports --- DESCRIPTION | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 7c792c3..e129fdc 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -34,7 +34,9 @@ Imports: shiny.i18n (>= 0.2.0), shiny (>= 1.3.2), stringr (>= 1.4.0), - shinyWidgets (>= 0.2.1) + shinyWidgets (>= 0.2.1), + purrr (>= 0.3.4), + gert (>= 1.5.0) Suggests: knitr (>= 1.23), readr (>= 1.3.1), From fbc48fc1212c714fc24829a8a4d3c383b33e207e Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:25:12 -0600 Subject: [PATCH 2/7] Fixes a check warning --- R/get_instance.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/get_instance.R b/R/get_instance.R index 873cb75..de1ff6d 100644 --- a/R/get_instance.R +++ b/R/get_instance.R @@ -7,7 +7,6 @@ #' @return a character of the active issue in the session #' @export #' -#' @examples get_instance <- function() { From 3aaf55d64c9e4c5f3a9c3ad8b698ec2b8f48e077 Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:26:31 -0600 Subject: [PATCH 3/7] Code cleaning to avoid RMD check warnings --- R/git.R | 79 ++++++++++++++------------------------------------------- 1 file changed, 19 insertions(+), 60 deletions(-) diff --git a/R/git.R b/R/git.R index eb0ccaf..b50f88c 100644 --- a/R/git.R +++ b/R/git.R @@ -12,36 +12,12 @@ add_upstream <- function(instance = "saved") { # Look for instance --------------------------------------------------------- if (instance == "saved") { - # It looks in session - if (Sys.getenv("ixplorer_instance") != "") { - - instance <- Sys.getenv("ixplorer_instance") - message ("You are currently on ", instance) - - # If there is no enviroment variable it means user is looking for - # a previously saved instance - } else if (Sys.getenv("ixplorer_instance") == "") { - - saved_instances <- keyring::keyring_list() %>% - filter(stringr::str_detect(keyring, "ixplorer_")) - - # if there are saved instances, then it chooses the instance that was last saved - if (nrow(saved_instances) > 0) { - - last_saved <- saved_instances[1,1] - instance <- last_saved - message("You are currently on ", instance) - - # When there are no saved instances, then a message is printed - } else { - message("There are no saved instances, try the authentication gadget") - } + instance <- get_instance() + if (instance == "none") { + stop("There are no saved instances. Try the authentication gadget") } - # If the user chooses an instance other than "saved" then it looks for - # the specified instance in previously saved keyrings - } else { saved_instances <- keyring::keyring_list() %>% @@ -49,12 +25,14 @@ add_upstream <- function(instance = "saved") { filter(keyring == paste0("ixplorer_",instance)) if (nrow(saved_instances) > 0) { + instance <- toString(saved_instances[1]) - # If the instance specified was not found a message is printed - } else { - message("No credentials for ", instance) + } else { + + stop("No credentials for ", instance) } + } # Completing the repo url --------------------------------------------------- @@ -77,27 +55,6 @@ add_upstream <- function(instance = "saved") { git2r::remote_add(repo = camino, name = "upstream", url = proyecto_madre) - # previous code ------------------------------------------------------------- - # credentials <- tryCatch( - # keyring::key_get(paste0("token_", instance)), - # error = function(cond) "no_credentials") - - - # if (credentials != "no_credentials") { - # credentials <- credentials %>% - # stringr::str_split("/", simplify = TRUE) %>% - # tibble::as_tibble() %>% - # magrittr::set_names(c("url", "token", - # "user", "persistence")) %>% - # dplyr::mutate(persistence = as.logical(persistence)) - # - # } else { - # stop(paste("No credentials yet for", instance)) - # } - # - # if (credentials$persistence == FALSE) { - # keyring::key_delete(paste0("token_", instance)) - # } } @@ -123,11 +80,12 @@ incluye_upstream <- function(instancia = "guardada") { #' @title Extend git credential cache time-out +#' #' @description Set the number of seconds before the git credential cache times #' out. Note that this is written for work on remote servers where we do not -#' want to store our git credentials (other might have acces to it, or -#' impersonate us). On a trusted machine the most common setting would be ( on -#' a linux machine) . However, some caching is +#' want to store our git credentials because other might have access to it, or +#' impersonate us. On a trusted machine the most common setting would be (on +#' a linux machine) git credential.helper store. However, some caching is #' required when working on a remote server because frequent commit-push #' cycles where you have to write out your username and password every time is #' not nice. @@ -153,13 +111,14 @@ set_git_timeout <- function(timeout = 14400, global = FALSE) { #' @title Extienda el tiempo de sus credenciales de git -#' @description Esta es una función traducida que llama a set_git_timeout(). +#' +#' @description Esta es una función traducida que llama a set_git_timeout. #' Establezca la cantidad de segundos para que se agote el #' tiempo de espera del caché de credenciales de git. Tenga en cuenta que #' esto está escrito para trabajar en servidores remotos donde no queremos #' almacenar nuestras credenciales de git (otros pueden tener acceso o #' hacerse pasar por nosotros). En una máquina confiable, la configuración más -#' común sería (en una máquina Linux) . Sin +#' común sería (en una máquina Linux) git credential.helper store. Sin #' embargo, se requiere algo de almacenamiento en caché cuando se trabaja en #' un servidor remoto porque los ciclos frecuentes de envío y confirmación en #' los que tiene que escribir su nombre de usuario y contraseña cada vez no son @@ -170,16 +129,16 @@ set_git_timeout <- function(timeout = 14400, global = FALSE) { #' desea. También por defecto, el tiempo de espera se establece en 4 horas #' (14400 segundos). #' -#' @param detencion -#' @param global +#' @param detencion número de segundos antes del tiempo de espera +#' @param global si el cambio debe ser global o local para el repositorio #' #' @export fijar_tiempo_credenciales <- function(pausa = 14000, global = FALSE) { if (global == FALSE) { - set_git_timeout(tiempo = detencion, global = FALSE) + set_git_timeout(timeout = pausa, global = FALSE) } else { - set_git_timeout(tiempo = dentencion, global = TRUE) + set_git_timeout(timeout = pausa, global = TRUE) } } From 85c0433fa628e292053969db6689159ea36e0635 Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:26:54 -0600 Subject: [PATCH 4/7] Message improvement --- R/list_closed_tickets.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/list_closed_tickets.R b/R/list_closed_tickets.R index 56fde75..966cea9 100644 --- a/R/list_closed_tickets.R +++ b/R/list_closed_tickets.R @@ -26,7 +26,7 @@ if (instance == "saved") { instance <- get_instance() if (instance == "none") { - stop("There are no saved instances") + stop("There are no saved instances. Try the authentication gadget") } } else { From 9986ba32ef5a911bce8b4460e45b58b5b3dcb7f9 Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:28:36 -0600 Subject: [PATCH 5/7] Changes in funtion descriptions adressing RMD check warnings --- man/fijar_tiempo_credenciales.Rd | 8 +++++--- man/set_git_timeout.Rd | 6 +++--- man/synch_branch.Rd | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/man/fijar_tiempo_credenciales.Rd b/man/fijar_tiempo_credenciales.Rd index 139281e..63a8619 100644 --- a/man/fijar_tiempo_credenciales.Rd +++ b/man/fijar_tiempo_credenciales.Rd @@ -7,16 +7,18 @@ fijar_tiempo_credenciales(pausa = 14000, global = FALSE) } \arguments{ -\item{global}{} +\item{global}{si el cambio debe ser global o local para el repositorio} + +\item{detencion}{número de segundos antes del tiempo de espera} } \description{ -Esta es una función traducida que llama a set_git_timeout(). +Esta es una función traducida que llama a set_git_timeout. Establezca la cantidad de segundos para que se agote el tiempo de espera del caché de credenciales de git. Tenga en cuenta que esto está escrito para trabajar en servidores remotos donde no queremos almacenar nuestras credenciales de git (otros pueden tener acceso o hacerse pasar por nosotros). En una máquina confiable, la configuración más -común sería (en una máquina Linux) . Sin +común sería (en una máquina Linux) git credential.helper store. Sin embargo, se requiere algo de almacenamiento en caché cuando se trabaja en un servidor remoto porque los ciclos frecuentes de envío y confirmación en los que tiene que escribir su nombre de usuario y contraseña cada vez no son diff --git a/man/set_git_timeout.Rd b/man/set_git_timeout.Rd index 1c1b61f..b4704fa 100644 --- a/man/set_git_timeout.Rd +++ b/man/set_git_timeout.Rd @@ -14,9 +14,9 @@ set_git_timeout(timeout = 14400, global = FALSE) \description{ Set the number of seconds before the git credential cache times out. Note that this is written for work on remote servers where we do not -want to store our git credentials (other might have acces to it, or -impersonate us). On a trusted machine the most common setting would be ( on -a linux machine) . However, some caching is +want to store our git credentials because other might have access to it, or +impersonate us. On a trusted machine the most common setting would be (on +a linux machine) git credential.helper store. However, some caching is required when working on a remote server because frequent commit-push cycles where you have to write out your username and password every time is not nice. diff --git a/man/synch_branch.Rd b/man/synch_branch.Rd index 0ab2baf..a682b25 100644 --- a/man/synch_branch.Rd +++ b/man/synch_branch.Rd @@ -4,7 +4,7 @@ \alias{synch_branch} \title{Synch your master branch with upstream} \usage{ -synch_branch() +synch_branch(default_branch_name = "master") } \value{ From 7cb4ed6b804d1863ce11ba1e906511ecdfc465f1 Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:29:42 -0600 Subject: [PATCH 6/7] Removes pasts test of credential handling structure --- tests/testthat.R | 4 --- tests/testthat/.ixplorer_api | 6 ---- tests/testthat/.ixplorer_project | 6 ---- tests/testthat/.ixplorer_repo | 6 ---- tests/testthat/.ixplorer_url | 6 ---- tests/testthat/.ixplorer_user | 6 ---- tests/testthat/test-verify.R | 56 -------------------------------- 7 files changed, 90 deletions(-) delete mode 100644 tests/testthat.R delete mode 100644 tests/testthat/.ixplorer_api delete mode 100644 tests/testthat/.ixplorer_project delete mode 100644 tests/testthat/.ixplorer_repo delete mode 100644 tests/testthat/.ixplorer_url delete mode 100644 tests/testthat/.ixplorer_user delete mode 100644 tests/testthat/test-verify.R diff --git a/tests/testthat.R b/tests/testthat.R deleted file mode 100644 index 0805668..0000000 --- a/tests/testthat.R +++ /dev/null @@ -1,4 +0,0 @@ -library(testthat) -library(ixplorer) - -test_check("ixplorer") diff --git a/tests/testthat/.ixplorer_api b/tests/testthat/.ixplorer_api deleted file mode 100644 index 33118c0..0000000 --- a/tests/testthat/.ixplorer_api +++ /dev/null @@ -1,6 +0,0 @@ -V1 -IXTOKEN= -IXURL= https://gitear.ixpantia.com/ -IXOWNER= ixplorer -IXREPO= sitio_pruebas -IXUSER= ronny diff --git a/tests/testthat/.ixplorer_project b/tests/testthat/.ixplorer_project deleted file mode 100644 index bc04e1f..0000000 --- a/tests/testthat/.ixplorer_project +++ /dev/null @@ -1,6 +0,0 @@ -V1 -IXTOKEN= 47c0be813944aaa0132d77a8110d48e9d3a644af -IXURL= https://gitear.ixpantia.com/ -IXOWNER= -IXREPO= sitio_pruebas -IXUSER= ronny diff --git a/tests/testthat/.ixplorer_repo b/tests/testthat/.ixplorer_repo deleted file mode 100644 index d7a9315..0000000 --- a/tests/testthat/.ixplorer_repo +++ /dev/null @@ -1,6 +0,0 @@ -V1 -IXTOKEN= 47c0be813944aaa0132d77a8110d48e9d3a644af -IXURL= https://gitear.ixpantia.com/ -IXOWNER= ixplorer -IXREPO= -IXUSER= ronny diff --git a/tests/testthat/.ixplorer_url b/tests/testthat/.ixplorer_url deleted file mode 100644 index b875ab8..0000000 --- a/tests/testthat/.ixplorer_url +++ /dev/null @@ -1,6 +0,0 @@ -V1 -IXTOKEN= 47c0be813944aaa0132d77a8110d48e9d3a644af -IXURL= -IXOWNER= ixplorer -IXREPO= sitio_pruebas -IXUSER= ronny diff --git a/tests/testthat/.ixplorer_user b/tests/testthat/.ixplorer_user deleted file mode 100644 index efb8777..0000000 --- a/tests/testthat/.ixplorer_user +++ /dev/null @@ -1,6 +0,0 @@ -V1 -IXTOKEN= 47c0be813944aaa0132d77a8110d48e9d3a644af -IXURL= https://gitear.ixpantia.com/ -IXOWNER= ixplorer -IXREPO= sitio_pruebas -IXUSER= diff --git a/tests/testthat/test-verify.R b/tests/testthat/test-verify.R deleted file mode 100644 index dd4e88e..0000000 --- a/tests/testthat/test-verify.R +++ /dev/null @@ -1,56 +0,0 @@ -context("verificacion") - -# Como hago para que el archivo lo busque en testdata, o lo dejo en este wd? -test_that("Finds file .ixplorer", { - skip("no hay ixplorer") - working_directory <- rstudioapi::getActiveProject() - ixplorer_file <- paste0(working_directory, "/.ixplorer") - file <- verify_ixplorer_file(ixplorer_file) - expect_true(any(class(file) == "data.frame")) -}) - -test_that("Detects missing data TOKEN access value", { - skip("no hay ixplorer") - file <- readr::read_csv(".ixplorer_api") %>% - tidyr::separate(col = V1, into = c("object", "value"), sep = " ") - expect_true(verify_ixtoken(file) == "There is no ixplorer TOKEN, please use the Authentication gadget") -}) - -test_that("Detects missing data URL access value", { - skip("no hay ixplorer") - file <- readr::read_csv(".ixplorer_url") %>% - tidyr::separate(col = V1, into = c("object", "value"), sep = " ") - expect_true(verify_ixurl(file) == "There is no ixplorer URL, please use the Authentication gadget") -}) - -test_that("Detects missing data PROJECT access value", { - skip("no hay ixplorer") - file <- readr::read_csv(".ixplorer_project") %>% - tidyr::separate(col = V1, into = c("object", "value"), sep = " ") - expect_true(verify_ixproject(file) == "There is no ixplorer PROJECT name, please use the Authentication gadget") -}) - -test_that("Detects missing data REPOSITORY access value", { - skip("no hay ixplorer") - file <- readr::read_csv(".ixplorer_repo") %>% - tidyr::separate(col = V1, into = c("object", "value"), sep = " ") - expect_true(verify_ixrepo(file) == "There is no ixplorer REPOSITORY, please use the Authentication gadget") -}) - -test_that("Detects missing data USER access value", { - skip("no hay .ixplorer") - file <- readr::read_csv(".ixplorer_user") %>% - tidyr::separate(col = V1, into = c("object", "value"), sep = " ") - expect_true(verify_ixuser(file) == "There is no ixplorer USER, please use the Authentication gadget") -}) - - - - -# Hay un error o paso para verificar con posiciones de datos -# Si eliminio una linea, la posicion varia y queda mal las condiciones -# dentro de los verify. - -# el msj de set_authentication se esta repitiendo. YO habia provocado eso -# adrede porque no hacia un print del msj y tuve que hacerlo explicito -# ahora se esta comportando imprimiendo dos veces. From cfeed9100a66c1f4878d1b2b2137d82ac8461fd0 Mon Sep 17 00:00:00 2001 From: danielgranadoscampos Date: Fri, 4 Mar 2022 11:30:52 -0600 Subject: [PATCH 7/7] Ref #96. Includes section for publish_wiki() in vignettes --- vignettes/img/clone_wiki.png | Bin 0 -> 35484 bytes vignettes/ixplorer.Rmd | 15 ++++++++++++--- vignettes/ixplorer_en.Rmd | 10 ++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 vignettes/img/clone_wiki.png diff --git a/vignettes/img/clone_wiki.png b/vignettes/img/clone_wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..c96d948b67d2e74d7665552e8dfcdc6e1e733187 GIT binary patch literal 35484 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