Giter Club home page Giter Club logo

Comments (8)

stephlocke avatar stephlocke commented on June 19, 2024 4

This would be handy

from minicran.

msteijaert avatar msteijaert commented on June 19, 2024 3

Here's an example based on achubaty's comment

addGithubPackage <- function(githubPath,...){
    packageName <- basename(githubPath)
    exDir <- file.path(tempdir(),packageName)
    if(file.exists(exDir)) unlink(exDir, recursive=TRUE)
    zipFile <- file.path(tempdir(),paste0(packageName,".zip"))
    download.file(paste0(githubPath,"/","zipball/master"),zipFile)
    unzip(zipFile, exdir = exDir)
    file.rename(list.files(exDir,full.names=TRUE)[1],file.path(exDir,packageName))
    addLocalPackage(packageName,exDir,...)
}
addGithubPackage(githubPath="https://github.com/js229/Vennerable/",path=reposPath,build=TRUE)

from minicran.

jonlachmann avatar jonlachmann commented on June 19, 2024 2

Hi! I needed this functionality and took the code from the branch 50-addPackageGitHub and extended it to support private repos etc by calling the appropriate functions in the remotes package.

The end result is below. Feel free to add it to the package or let me know if you would like a proper pull request.

addPackageGitHub <- function(repo, username = NULL, ref = "master", subdir = NULL, auth_token = remotes:::github_pat(quiet), ...) {
  packageName <- basename(repo)
  exDir <- file.path(tempdir(), packageName)
  if (dir.exists(exDir)) unlink(exDir, recursive = TRUE)

  remote <- remotes:::github_remote(repo = repo, username = username, ref = ref, subdir = subdir, auth_token = auth_token)
  tarFile <- remotes:::remote_download(remote)

  untar(tarFile, exdir = exDir)
  file.rename(list.files(exDir, full.names = TRUE)[1], file.path(exDir, packageName))

  ## TODO: addLocalPackage() does not add the dependencies of the locally built package!
  addLocalPackage(packageName, exDir, ..., build = TRUE)
}

addPackageGitHub("user/repo", auth_token=github_token, path=miniCRAN_dir)

from minicran.

achubaty avatar achubaty commented on June 19, 2024

see devtools::install_remote() to see how the package source bundle is downloaded. from there, #23's addLocalPackage can take over

from minicran.

seasmith avatar seasmith commented on June 19, 2024

@msteijaert
I resolved a file path error by setting mode = "wb" in download.file(). Thank you, for the function.

OS: Windows 7
R: 3.4.4

from minicran.

StaffanBetner avatar StaffanBetner commented on June 19, 2024

@msteijaert's code doesn't work anymore. I get the error Error: No files found in path with extension '.tar.gz'

from minicran.

achubaty avatar achubaty commented on June 19, 2024

@msteijaert thank you for taking a first crack at this. I've implemented a version of your function on the 50-addPackageGitHub branch, though it needs work. See the commit message there.

@msteijaert's code doesn't work anymore. I get the error Error: No files found in path with extension '.tar.gz'

Can you post the code you used? I can't reporduce the error.

from minicran.

daattali avatar daattali commented on June 19, 2024

Are there any concrete plans on adding this feature, or is it more of a "long term wish list"?

from minicran.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.