समस्याका स्वचालन संस्करण वृद्धि पैकेज
मैं एक आर पैकेज विकासशील रहा हूँ और मैं हर बार जब मैं इसे बनाने संस्करण बढ़ाना चाहते हैं। मैं चाहता हूं कि मेरे परिणामों को पैकेज संस्करणों में जोड़ सकें। अभी के लिए मैं ऐसा करने के लिए अपने बदसूरत फ़ंक्शन का उपयोग कर रहा था।
मेरा प्रश्न है: क्या यह बेहतर करने का कोई तरीका है? या, क्या मुझे सामान्य रूप से ऐसा करने से बचना चाहिए?
एक अन्य विकल्प
एक अन्य विकल्प मैं के बारे में सोच रहा था मेरी पैकेज (GitHub में आयोजित) स्थापित'devtools :: install_github' का उपयोग कर और फिर मेरी परिणामों के साथ बचाने के (या भूखंडों को जोड़ने) करने के लिए है कि GithubSHA1 स्थापित DESCRIPTION फ़ाइल में सहेजा गया है।
उदाहरण के लिए मैं'devtools' पैकेज के लिए संस्करण और GithubSHA1 ऐसे ही प्राप्त कर सकते हैं:
read.dcf(file=system.file("DESCRIPTION", package="devtools"),
fields=c("Version", "GithubSHA1"))
## Version GithubSHA1
## [1,] "1.5.0.99" "3ae58a2a2232240e67b898f875b8da5e57d1b3a8"
मेरे कोशिश करता अब तक
मैं निम्नलिखित समारोह लिखा एक नया वर्णन फ़ाइल बनाने के लिए , अद्यतन संस्करण और तारीख के साथ।
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="/"))
}
मुझे यहां बहुत अधिक कुरूपता नहीं मिलती है, इसी तरह के दृष्टिकोण का उपयोग Roxygen2 पैकेज द्वारा किया जाता है। – gagolews
लेकिन roxygen2 को कोलेट फ़ील्ड को छोड़कर, विवरण फ़ाइल से निपट नहीं है, है ना? – alko989
मैंने देखा कि roxygen2 कभी-कभी मेरी DESCRIPTION फ़ाइलों को महत्वपूर्ण रूप से सुधारता है, उदा। यह लाइनों को तोड़ता है आदि – gagolews