library(shinygouv)
knitr::opts_chunk$set(eval = FALSE)

Dans le dossier “inst/” du package, nous allons créer deux dossiers:

  • un pour récolter les css et js du dsfr,
  • et un pour stocker les templates HTML que vous aurez converti

Ci-dessous, nous prenons l’exemple de la montée de version de 1.6.0 vers 1.7.2

Indiquez ici le numéro de la nouvelle version à implémenter que vous pourrez trouver sur la page du dsfr

nouvelle_version <- "2.0.0"

Récolter les fichiers CSS et JS du DSFR

  • Télécharger le zip de la dernière version 1.7.2 qui se trouve ici
  • Décompresser le fichier
  • Déplacer le dossier “dsfr-v1.7.2/dist” dans le dossier “inst/” du package ‘shinygouv’.

Pour une version minimale, les seuls fichiers à garder sont :

/ Racine du projet
└── index.html
└── dsfr.min.css
└── dsfr.module.min.js
└── dsfr.nomodule.min.js
└── favicon
└── font
└── icons
└── utility
  └── icons

Vous pouvez lancer le contenu du script “dev/maj_version_dsfr.R” pour votre version pour réaliser ce nettoyage

source("dev/maj_version_dsfr.R")
maj_version_dsfr()

On pourra ensuite créer une fonction qui permettera d’ajouter les dépendances dans les applications {shiny}.

Créer un dossier pour le code HTML des composants

Nous recommandons de faire une copie du dossier de la version précédente

last_version <- max(list.files("inst", pattern = "^v\\d"))
if (last_version != paste0("v", nouvelle_version)) {
  fs::dir_copy(
    path = file.path("inst", last_version),
    new_path = paste0("inst/v", nouvelle_version)
  )
}

Dans le fichier “table_correspondance_shiny_dsfr.csv”, mettez non dans la colonne mis_a_jour car pour le moment, vous n’avez pas récupéré le HTML de toutes les composantes de la nouvelle version

corresp <- read.csv2(file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))
corresp[, "mis_a_jour"] <- "non"
write.csv2(corresp, file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))

Vous pouvez ouvrir une issue pour lister tous les fichiers HTML de composants à vérifier avant de mettre oui dans la colonne mis_a_jour

corresp <- read.csv2(file.path("inst", paste0("v", nouvelle_version), "table_correspondance_shiny_dsfr.csv"))

# A coller dans votre issue
cat(
  paste("- [ ]", corresp[["fichier"]]),
  sep = "\n"
)

Monter le numéro de version dans DESCRIPTION

Quand tous les dossiers sont prêt, pour garder trace de la version du dsfr utilisée dans {shinygouv}, nous stockons celle en cours dans le fichier DESCRIPTION

desc::desc_set("VersionDsfr" = nouvelle_version)

Nettoyer la version d’avant

Nous n’avons pas besoin de stocker toutes les versions du dsfr dans le package.
Maintenant que vous avez récupéré les fichiers pour une nouvelle version, vous pouvez supprimer la plus ancienne.

all_versions <- list.files("inst", pattern = "^v\\d")
if (length(all_versions > 2)) {
  unlink(file.path("inst", min(all_versions)), recursive = TRUE)
}

Récupérer les codes HTML un par un

Suivre la procédure de création de composant dans “dev/flat_comment-faire-un-composant-shiny.Rmd”, même pour mettre à jour l’existant.

rstudioapi::navigateToFile("dev/flat_comment-faire-un-composant-shiny.Rmd")