ProblemaAutomatizzare incremento versione di R pacchetti
Sto sviluppando un pacchetto R e voglio aumentare la versione automaticamente ogni volta che costruisco. Voglio che sia in grado di associare i miei risultati alle versioni dei pacchetti. Per ora stavo usando la mia funzione brutta per farlo.
La mia domanda è: c'è un modo per farlo meglio? O, dovrei evitare di farlo in generale?
Un'altra opzione
Un'altra opzione Stavo pensando di è quello di installare il mio pacchetto (ospitato in github) utilizzando'devtools :: install_github' e quindi salvare con i miei risultati (o l'aggiunta di trame) il GithubSHA1 che viene salvato nel file DESCRIPTION installato.
Per esempio posso ottenere la versione e GithubSHA1 come quella per il pacchetto'devtools':
read.dcf(file=system.file("DESCRIPTION", package="devtools"),
fields=c("Version", "GithubSHA1"))
## Version GithubSHA1
## [1,] "1.5.0.99" "3ae58a2a2232240e67b898f875b8da5e57d1b3a8"
miei tentativi finora
ho scritto la seguente funzione per produrre un nuovo file di descrizione , con versione aggiornata e data. (Aumento della versione principale è una cosa che non mi dispiace crescente per mano)
incVer <- function(pkg, folder=".", increase="patch"){
## Read DESCRIPTION from installed package ´pkg´ and make new one on the specified
## ´folder´. Two options for ´increase´ are "patch" and "minor"
f <- read.dcf(file=system.file("DESCRIPTION", package=pkg),
fields=c("Package", "Type", "Title", "Version", "Date",
"Author", "Maintainer", "Description", "License",
"Depends", "Imports", "Suggests"))
curVer <- package_version(f[4])
if(increase == "patch") {
curVer[[1,3]] <- ifelse(is.na(curVer$patchlevel), 1, curVer$patchlevel + 1)
} else if (increase == "minor") {
curVer[[1,2]] <- ifelse(is.na(curVer$minor), 1, curVer$minor + 1)
curVer[[1,3]] <- 0
} else {
stop(paste("Can not identify the increase argument: " , increase))
}
f[4] <- toString(curVer)
## Update also the date
f[5] <- format (Sys.time(), "%Y-%m-%d")
write.dcf(f, file=paste(folder, "DESCRIPTION", sep="/"))
}
Non trovo molto brutto qui, un approccio simile è utilizzato dal pacchetto Roxygen2. – gagolews
Ma roxygen2 non ha a che fare con il file DESCRIPTION, eccetto per il campo collation, giusto? – alko989
Ho osservato che roxygen2 a volte riformatta in modo significativo i miei file DESCRIPTION, ad es. rompe le linee, ecc. – gagolews