[education/rkward] rkward/plugins/rkwarddev_scripts: initial commit
Thomas Friedrichsmeier
null at kde.org
Fri May 6 16:59:42 BST 2022
Git commit 982164e7f39c158249b451a528222d7851945edb by Thomas Friedrichsmeier, on behalf of m.eik michalke.
Committed on 06/05/2022 at 15:59.
Pushed by tfry into branch 'master'.
initial commit
A +235 -0 rkward/plugins/rkwarddev_scripts/rkwarddev_rk.gitInstall_plugin_script.R
https://invent.kde.org/education/rkward/commit/982164e7f39c158249b451a528222d7851945edb
diff --git a/rkward/plugins/rkwarddev_scripts/rkwarddev_rk.gitInstall_plugin_script.R b/rkward/plugins/rkwarddev_scripts/rkwarddev_rk.gitInstall_plugin_script.R
new file mode 100644
index 00000000..8957af52
--- /dev/null
+++ b/rkward/plugins/rkwarddev_scripts/rkwarddev_rk.gitInstall_plugin_script.R
@@ -0,0 +1,235 @@
+require(rkwarddev)
+rkwarddev.required("0.08-1")
+
+rk.local({
+# define where the plugin should write its files
+output.dir <- tempdir()
+# overwrite an existing plugin in output.dir?
+overwrite <- TRUE
+# if you set guess.getters to TRUE, the resulting code will need RKWard >= 0.6.0
+guess.getter <- TRUE
+# define the indentation character for the generated code
+rk.set.indent(by=" ")
+# should empty "else" clauses be kept in the JavaScript code?
+rk.set.empty.e(TRUE)
+# make your plugin translatable by setting this to TRUE
+update.translations <- TRUE
+
+aboutPlugin <- rk.XML.about(
+ name="rk.gitInstall",
+ author=c(
+ person(given="Meik", family="Michalke", email="meik.michalke at hhu.de", role=c("aut", "cre"))
+ ),
+ about=list(
+ desc="RKWard GUI to install R packges directly from git or subversion repositories",
+ version="0.01-0",
+ url="https://rkward.kde.org",
+ license="GPL (>= 3)"
+ )
+)
+
+plugin.dependencies <- rk.XML.dependencies(
+ dependencies=list(rkward.min=">= 0.6.0"),
+ package=list(
+ c(name="devtools")
+ )
+)
+
+# name of the main component, relevant for help page content
+rk.set.comp("Install from git")
+
+############
+## your plugin dialog and JavaScript should be put here
+############
+
+packageSource <- rk.XML.dropdown("Package source",
+ options=list(
+ "GitHub"=c(val="github", chk=TRUE),
+ "Bitbucket"=c(val="bitbucket"),
+ "git (generic)"=c(val="git"),
+ "subversion (generic)"=c(val="svn")
+ ),
+ id.name="packageSource",
+ help="Set the location where the package resides that you want to install."
+)
+
+gitUserRepo <- rk.XML.row(
+ gitUser <- rk.XML.input("Git user name",
+ required=TRUE,
+ id.name="gitUser",
+ help="Specify the user name (GitHub and Bitbucket only)."
+ ),
+ gitRepo <- rk.XML.input("Repository",
+ required=TRUE,
+ id.name="gitRepo",
+ help="Give the repository name (GitHub and Bitbucket only)."
+ )
+)
+
+fullURL <- rk.XML.input("URL to repository",
+ initial="https://example.com/...",
+ required=TRUE,
+ id.name="fullURL",
+ help="Give the full URL to the repository (generic git and svn only)."
+)
+
+repoFrame <- rk.XML.frame(
+ gitUserRepo,
+ fullURL,
+ label="Package reporitory",
+ id.name="repoFrame"
+)
+
+gitReference <- rk.XML.input("Commit/tag/branch",
+ help="If you want a certain commit, tag or branch for installation, define that here."
+)
+
+gitSubdir <- rk.XML.input("Subdirectory",
+ help="If you want to install from a subdirectory of the repository, define that here."
+)
+
+authUser <- rk.XML.input("User",
+ required=TRUE,
+ help="To install from a private repository, set the user name (Bitbucket only)."
+)
+
+authPassword <- rk.XML.input("Password",
+ required=TRUE,
+ help="To install from a private repository, set the password (Bitbucket only)."
+)
+
+authToken <- rk.XML.input("Personal access token (PAT)",
+ required=TRUE,
+ help="To install from a private repository, set your personal access token (PAT, GitHub only)."
+)
+
+authFrame <- rk.XML.frame(
+ authToken,
+ rk.XML.row(
+ authUser,
+ authPassword
+ ),
+ label="Private repository",
+ checkable=TRUE,
+ chk=FALSE
+)
+
+pluginDialog <- rk.XML.dialog(
+ rk.XML.col(
+ packageSource,
+ repoFrame,
+ gitReference,
+ gitSubdir,
+ authFrame
+ ),
+ label="Install from git/svn"
+)
+
+logicSection <- rk.XML.logic(
+ lgcIsGit <- rk.XML.convert(sources=list(string=packageSource), mode=c(equals="git"), id.name="lgcIsGit"),
+ lgcIsSVN <- rk.XML.convert(sources=list(string=packageSource), mode=c(equals="svn"), id.name="lgcIsSVN"),
+ lgcRequireURL <- rk.XML.convert(sources=list(lgcIsGit, lgcIsSVN), mode=c(or=""), id.name="lgcRequireURL"),
+ rk.XML.connect(governor=lgcRequireURL, client=gitUserRepo, set="visible", not=TRUE),
+ rk.XML.connect(governor=lgcRequireURL, client=fullURL, set="visible"),
+ lgcIsGithub <- rk.XML.convert(sources=list(string=packageSource), mode=c(equals="github"), id.name="lgcIsGithub"),
+ lgcIsBitbucket <- rk.XML.convert(sources=list(string=packageSource), mode=c(equals="bitbucket"), id.name="lgcIsBitbucket"),
+ rk.XML.connect(governor=lgcIsGithub, client=authToken, set="enabled"),
+ rk.XML.connect(governor=lgcIsBitbucket, client=authUser, set="enabled"),
+ rk.XML.connect(governor=lgcIsBitbucket, client=authPassword, set="enabled"),
+ rk.XML.connect(governor=lgcRequireURL, client=authFrame, set="enabled", not=TRUE)
+)
+
+## JavaScript
+# see if frames are checked
+authFrameChecked <- rk.JS.vars(authFrame, modifiers="checked")
+
+JScalculate <- rk.paste.JS(
+ authFrameChecked,
+ echo("\tinstall_", packageSource, "(\n"),
+ js(
+ if(packageSource == "github" || packageSource == "bitbucket"){
+ echo("\t\trepo=\"", gitUser, "/", gitRepo, "\"")
+ if(gitReference){
+ echo(",\n\t\tref=\"", gitReference, "\"")
+ } else {}
+ if(authFrameChecked){
+ if(packageSource == "github" && authToken){
+ echo(",\n\t\tauth_token=\"", authToken, "\"")
+ } else if(packageSource == "bitbucket"){
+ if(authUser){
+ echo(",\n\t\tauth_user=\"", authUser, "\"")
+ } else {}
+ if(authPassword){
+ echo(",\n\t\tpassword=\"", authPassword, "\"")
+ } else {}
+ } else {}
+ } else {}
+ } else if(packageSource == "git" || packageSource == "svn"){
+ echo("\t\turl=\"", fullURL, "\"")
+ if(gitReference){
+ echo(",\n\t\tbranch=\"", gitReference, "\"")
+ } else {}
+ } else {},
+ if(gitSubdir){
+ echo(",\n\t\tsubdir=\"", gitSubdir, "\"")
+ } else {}
+ ),
+ echo("\n\t)"),
+ echo("\n")
+)
+
+#############
+## the main call
+## if you run the following function call, files will be written to output.dir!
+#############
+# this is where things get serious, that is, here all of the above is put together into one plugin
+plugin.dir <- rk.plugin.skeleton(
+ about=aboutPlugin,
+ dependencies=plugin.dependencies,
+ path=output.dir,
+ guess.getter=guess.getter,
+ scan=c("var", "saveobj", "settings"),
+ xml=list(
+ dialog=pluginDialog,
+ #wizard=,
+ logic=logicSection#,
+ #snippets=
+ ),
+ js=list(
+ #results.header=FALSE,
+ #load.silencer=,
+ require="devtools",
+ #variables=,
+ #globals=,
+ #preprocess=,
+ calculate=JScalculate#,
+ #printout=,
+ #doPrintout=
+ ),
+ rkh=list(
+ #summary=,
+ #usage=,
+ #sections=,
+ #settings=,
+ #related=,
+ #technical=
+ ),
+ create=c("pmap", "xml", "js", "desc", "rkh"),
+ overwrite=overwrite,
+ #components=list(),,
+ #provides=c("logic", "dialog"),
+ pluginmap=list(name="Install from git", hierarchy="settings"),
+ tests=FALSE,
+ edit=FALSE,
+ load=TRUE,
+ show=TRUE,
+ gen.info="$SRC/inst/rkward/rkwarddev_rk.gitInstall_plugin_script.R",
+ hints=FALSE
+)
+
+ # you can make your plugin translatable, see top of script
+ if(isTRUE(update.translations)){
+ rk.updatePluginMessages(file.path(output.dir,"rk.gitInstall","inst","rkward","rk.gitInstall.pluginmap"))
+ } else {}
+
+})
\ No newline at end of file
More information about the rkward-tracker
mailing list