Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jprichardson/node-github-download
Easily download Github repos without dependencies such as Git, Tar, Unzip, etc.
https://github.com/jprichardson/node-github-download
Last synced: 14 days ago
JSON representation
Easily download Github repos without dependencies such as Git, Tar, Unzip, etc.
- Host: GitHub
- URL: https://github.com/jprichardson/node-github-download
- Owner: jprichardson
- License: mit
- Created: 2013-01-17T23:18:05.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2021-09-09T16:27:04.000Z (about 3 years ago)
- Last Synced: 2024-10-12T18:08:47.260Z (28 days ago)
- Language: JavaScript
- Size: 30.3 KB
- Stars: 76
- Watchers: 7
- Forks: 32
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Node.js - github-download
================[![build status](https://secure.travis-ci.org/jprichardson/node-github-download.svg)](http://travis-ci.org/jprichardson/node-github-download)
Easily download Github repos without any external dependencies such as Git, Tar, Unzip, etc.
Why?
----I really like the concept of managing user defined projects, repos, file structures (package management) on Github like the way that [Component](https://github.com/component) does package management. I have a package management system [Rock](https://github.com/rocktemplates) that I use to create skeleton/templates of projects. I wanted Rock to use Github as a package management system. I also didn't want any dependencies amongst any 3rd party programs like Git, Tar, or Unzip. Pure Node.js JavaScript is what I wanted.
Installation
------------npm install github-download
Usage
-----### ghdownload(params, dir)
Downloads the latest copy of some Github reference (branch, tag, or commit), or the `master` branch by default (specifically the `master` branch, it does _not_ honor Github's default branch configuration). This will still work even if the Github API limit has been reached.
- **params**: Can either be:
- a Github URL string such as:
- `https://github.com/jprichardson/node-vcsurl.git`
- `[email protected]:jprichardson/node-vcsurl.git`
- `git://github.com/jprichardson/node-vcsurl.git`
- and even including a reference, e.g. `https://github.com/jprichardson/node-vcsurl.git#master`
- or an object like so: `{user: 'jprichardson', repo: 'vcsurl', ref: 'master'}`
- **dir**: The output directory. Uses the current working directory if nothing is specified.Returns a GithubDownloader object that emits events on `dir`, `file`, and `end`.
Example:
```javascript
var ghdownload = require('github-download')
, exec = require('exec')ghdownload({user: 'jprichardson', repo: 'node-batchflow', ref: 'master'}, process.cwd())
.on('dir', function(dir) {
console.log(dir)
})
.on('file', function(file) {
console.log(file)
})
.on('zip', function(zipUrl) { //only emitted if Github API limit is reached and the zip file is downloaded
console.log(zipUrl)
})
.on('error', function(err) {
console.error(err)
})
.on('end', function() {
exec('tree', function(err, stdout, sderr) {
console.log(stdout)
})
})
```Outputs:
.
├── CHANGELOG.md
├── LICENSE
├── README.md
├── lib
│ └── batchflow.js
├── package.json
└── test
├── batchflow-par-array.test.js
├── batchflow-par-limit.test.js
├── batchflow-par-object.test.js
├── batchflow-seq-array.test.js
├── batchflow-seq-object.test.js
├── batchflow.test.js
├── mocha.opts
└── resources3 directories, 12 files
License
-------(MIT License)
Copyright 2013-2016, JP Richardson