public UAReturn InstallReqPackageFromCRAN(string packagename)
{
UAReturn result = new UAReturn() { Success = false };
string command = string.Empty;
string retmsg = string.Empty;
string[] pkgs = packagename.Split(',');
string packagenames = GetCommaSeparatedWithSingleQuotes(pkgs);
if (packagenames == null)//bad string
{
result.CommandString = packagename;
retmsg = " Mulitple packages must be comma separated and no quotes should be used.";
}
else
{
StringBuilder sbmsgs = new StringBuilder();
//
foreach (string pkgnam in pkgs)//uninstall package(s)
{
//UAReturn result = new UAReturn() { Success = false };
if (!_dispatcher.IsLoaded(pkgnam) && !isPackageInstalled(pkgnam)) // if package is not already loaded and installed. then install it.
{
command = string.Format("BSkyInstallPkg('{0}')", pkgnam); //string.Format("install.packages(c({0}))", packagenames);
string retstr = _dispatcher.EvaluateToString(command);
if (retstr != null && retstr.Trim().Length > 0)
sbmsgs.Append(retstr);
else
sbmsgs.Append(pkgnam + " installed successfully.");
}
else //if you wish, you can unload andi nstall and then reinstall the R pacakge from CRAN
{
//UnLoadPackage(pkgnam);
//UninstallPackage(pkgnam);
//command = string.Format("BSkyInstallPkg({0})", pkgnam); //string.Format("install.packages(c({0}))", packagenames);
//sbmsgs.Append(_dispatcher.EvaluateToString(command));
sbmsgs.Append("Warning: "+pkgnam + " is already present.");
}
}
//command = string.Format("BSkyInstallPkg({0})", packagenames); //string.Format("install.packages(c({0}))", packagenames);
retmsg = sbmsgs.ToString();// _dispatcher.EvaluateToString(command);
}
_journal.WriteLine(command);
result.CommandString = command;
result.Error = retmsg;
if (retmsg.Contains("Check Command.") || retmsg.ToLower().Contains("error") || retmsg.ToLower().Contains("warning"))
result.Success = false;
else
result.Success = true;
//LoadPackage(packagename); // Normally, when we install package, it should also be loaded. Can also be done outside.
return result;
}