{attachment} 0.2.4 : Remplissez le champ ‘Remotes’

Author : Sébastien Rochette
Tags : développement, package, thinkrverse
Date :

Une nouvelle version de {attachment} est disponible sur CRAN. Découvrez vos dépendances installées à partir de GitHub, GitLab, … et ajoutez les au champ ‘Remotes’ dans le fichier DESCRIPTION de votre package.

install.packages("attachment")

En attendant la sortie sur le CRAN, vous pouvez installer depuis GitHub : remotes::install_github("ThinkR-open/[email protected]")

{attachment} vous aide à gérer les dépendances pendant le développement de votre package.
Tous les paquets utilisés dans votre code doivent être déclarés dans le fichier DESCRIPTION, afin que les autres utilisateurs puissent installer votre package avec les dépendances requises. {attachment} extrait les paquets déclarés dans vos codes et les liste au bon endroit (‘Imports’, ‘Suggests’ et maintenant ‘Remotes’) dans votre fichier DESCRIPTION.

Notez que {attachment} peut être utilisé en dehors du développement d’un package si vous souhaitez extraire la liste des dépendances utilisées dans vos scripts R ou vos fichiers Rmarkdown, où qu’ils soient stockés.

Pas l’temps de tout lire – NEWS

Changements cassants

  • (cassé dans 0.2.3) – att_to_desc_from_is() peut maintenant être exécuté avec must.exist = FALSE pour être utilisé pour remplir le fichier DESCRIPTION pendant le processus de bookdown CI. Les fichiers CI YAML, comme ceux provenant de gitlabr::use_gitlab_ci() pour les sorties bookdown doivent être mis à jour avec ce paramètre.

Changements majeurs

  • Permet d’ajouter le champ Remotes à DESCRIPTION avec set_remotes_to_desc().
  • Diviser la vignette en deux : développement du paquet et gestion des autres dépendances.

Changements mineurs

  • Vérification des noms de paquets mal orthographiés avant de remplir DESCRIPTION.
  • Autorise un vecteur des fichiers R dans att_from_rscripts().
  • Déplacement de la branche git par défaut de master à main.
  • Permet de nettoyer la liste des Remotes avant la mise à jour avec set_remotes_to_desc(clean = TRUE).

Correction de bogues

  • Ajout de NAMESPACE si manquant avec att_amend_desc(document = TRUE).
  • Ajout de DESCRIPTION avec un squelette vide si manquant avec att_amend_desc().
  • Suppression par défaut du NAMESPACE avant la mise à jour pour se débarrasser de ceux qui sont corrompus dans att_from_namespace().
  • Correction de la détection des sorties multiples de ‘render’ dans un YAML de Rmd avec att_from_rmd().

Rappel : pendant le développement d’un package

La fonction star de {attachment} est attachment::att_amend_desc() à lancer à chaque fois avant devtools::check(). Cela vous évitera quelques warnings et erreurs !

att_amend_desc()

Nouveautés dans la v0.2.4

Propose content for the “Remotes” field in DESCRIPTION

set_remotes_to_desc() ajoute les paquets qui ont été installés sur votre ordinateur depuis d’autres sources que le CRAN dans le champ Remotes: de DESCRIPTION, selon la liste de ‘Imports’ et ‘Suggests’.

Par exemple :

  • Pour GitHub : Remotes : thinkr-open/attachment
  • Pour GitLab : Remotes : gitlab::jimhester/covr.

Vous pouvez le lancer après att_amend_desc() dans le développement de votre paquet.

att_amend_desc(dummypackage) %>%
  set_remotes_to_desc()

Créons un petit fichier DESCRIPTION

desc_file <- tempfile(pattern = "desc")
cat("
Imports:
    attachment,
    glue
Suggests:
    desc
", file = desc_file) 

J’installe {attachment} depuis GitHub et j’exécute set_remotes_to_desc() sur le fichier exemple.

# install from GitHub
remotes::install_github("ThinkR-open/attachment", 
                        upgrade = "never", quiet = TRUE)
# Add 'Remotes' field
set_remotes_to_desc(desc_file)
## Remotes for attachment were added to DESCRIPTION.
# Read the DESCRIPTION file
cat(readLines(desc_file), sep = "\n")
## Imports:
##     attachment,
##     glue
## Suggests:
##     desc
## Remotes:  
##     thinkr-open/attachment

Le champ ‘Remotes’ a été correctement ajouté !

Trouver les installations hors CRAN sur votre ordinateur

Si vous voulez seulement savoir si des paquets ont été installés à partir d’une autre source que CRAN, sans modifier DESCRIPTION, vous pouvez utiliser find_remotes().

Vous pouvez l’utiliser sur un vecteur de noms de paquets.

# install from GitHub
remotes::install_github("ThinkR-open/attachment",
                        upgrade = "never", quiet = TRUE)
find_remotes(pkg = c("attachment", "desc", "glue"))
## $attachment
## [1] "thinkr-open/attachment"
# install from CRAN
remotes::install_cran("attachment", 
                      upgrade = "never", quiet = TRUE)
find_remotes(pkg = c("attachment", "desc", "glue"))
## NULL

Vous pouvez aussi avoir envie de le combiner avec att_from_description() ou n’importe quel autre att_from_*()

att_from_description() %>%
  find_remotes()
att_from_rscripts(path = "R/") %>%
  find_remotes()
att_from_rmds(path = "vignettes/") %>%
  find_remotes()

Remplir un fichier de description bookdown

Vous pouvez utiliser une approche similaire pour un fichier de description {bookdown} en utilisant attachment::att_to_desc_from_is().
En effet, vous pouvez l’utiliser dans votre CI pour construire automatiquement vos pages HTML tout en analysant les dépendances requises. Notez que pour l’inclure directement dans le CI (comme proposé dans les modèles {gitlabr}), vous devrez peut-être définir att_to_desc_from_is(must.exist = FALSE).

# bookdown Imports are in Rmds
imports <- c("bookdown", attachment::att_from_rmds("."))
attachment::att_to_desc_from_is(
  path.d = "DESCRIPTION",
  imports = imports, suggests = NULL, 
  must.exist = FALSE
)

Ensuite, vous pouvez installer les dépendances à partir du fichier DESCRIPTION.

remotes::install_local()

Proposer un contenu pour le champ “Remotes”

Un intérêt d’utiliser DESCRIPTION pour lister vos dépendances bookdown est d’utiliser des paquets provenant d’autres sources que le CRAN et de les lister dans le champ “Remotes”.
Voici set_remotes_to_desc(), qui ajoute les paquets qui ont été installés depuis une autre source que le CRAN dans le champ Remotes: de DESCRIPTION.

Vous pouvez le lancer après att_to_desc_from_is().

attachment::att_to_desc_from_is(
  path.d = "DESCRIPTION",
  imports = imports, suggests = NULL, 
  must.exist = FALSE
) %>%
  set_remotes_to_desc()

Pour aller plus loin

Notez que {attachment} est utilisé dans {fusen}, un package qui réduit le développement de package à un simple fichier Rmarkdown. Pour en savoir plus, consultez la documentation dédiée : https://thinkr-open.github.io/fusen/


À propos de l'auteur

Sébastien Rochette

Sébastien Rochette

Expert du langage R – Défenseur du 'Rmd first', joueur de cartographies


Comments


Also read