Install R packages before copying repo contents

pull/718/head
Tim Head 2019-06-25 13:42:46 +02:00
rodzic 4b0e838136
commit 0eae8dc0c4
1 zmienionych plików z 29 dodań i 6 usunięć

Wyświetl plik

@ -291,15 +291,38 @@ class RBuildPack(PythonBuildPack):
return super().get_build_scripts() + scripts return super().get_build_scripts() + scripts
def get_assemble_scripts(self): def get_preassemble_scripts(self):
""" """Install contents of install.R"""
Return series of build-steps specific to this repository. scripts = []
"""
assemble_scripts = super().get_assemble_scripts()
installR_path = self.binder_path("install.R") installR_path = self.binder_path("install.R")
if os.path.exists(installR_path): if os.path.exists(installR_path):
assemble_scripts += [("${NB_USER}", "Rscript %s" % installR_path)] packages = []
with open(installR_path) as f:
for line in f:
line = line.strip()
# skip commented out lines
if line.startswith("#"):
continue
else:
# XXX This needs a better solution for detecting which
# XXX kind of string quoting the user used/how to
# XXX escape quotes...
# using " as quote
if '"' in line:
packages.append("-e '{}'".format(line))
# using ' as quote or no quotes
else:
packages.append('-e "{}"'.format(line))
package_expressions = " \\ \n".join(sorted(packages))
scripts += [("${NB_USER}", "R --quiet %s" % package_expressions)]
return super().get_preassemble_scripts() + scripts
def get_assemble_scripts(self):
"""Install the repository itself as a R package"""
assemble_scripts = super().get_assemble_scripts()
description_R = "DESCRIPTION" description_R = "DESCRIPTION"
if not self.binder_dir and os.path.exists(description_R): if not self.binder_dir and os.path.exists(description_R):