GitXplorerGitXplorer
p

node-treeeater

public
18 stars
6 forks
0 issues

Commits

List of commits on branch master.
Unverified
828a2d690997c8e23623947399fcaa591abd8631

Merge pull request #9 from hoodie/master

ppayload committed 9 years ago
Unverified
39f758cbab335f2b9f7f9bd52b4384fa82fe00b8

pretty legible colors

hhoodie committed 9 years ago
Unverified
456a5b25f997e9d96caa1b99c01c19cf3d046fbb

Merge pull request #8 from dodo/master

ppayload committed 10 years ago
Unverified
66684f1429912db9246b0134fd981bab4cc7741a

Merge pull request #7 from Cybolic/master

ppayload committed 10 years ago
Unverified
ea6389f2077f7659dd874cb48047155a968b0e85

Removed redundant steps in package.json.

CCybolic committed 12 years ago
Unverified
335e9f4644ae4abe34a172cf0c6ad311b9c4b928

fix wscript for 0.6.x

ddodo committed 13 years ago

README

The README file for this repository.

treeeater

  • trees are a treat for treeeater
  • use it to call git commands in Node
  • it is written in CoffeeScript and is heavily using its sweet syntactic sugar
  • http://flattr.com - yes, you can give me money :P

principle

  • an asynchronous wrapper around git spawning commands
  • use git help to find out how to get things done
  • specify command line options in an readable and easy way in Coffee Script
  • some output is being parsed into objects which actually make some sense!

usage in Coffee Script

  • provide a callback to get the whole output
git.version console.log
# git version 1.7.5.2
  • or listen on item or data events to get it line-, item- or chunkwise
n = 0
buffer = git.log()
buffer.on 'item', (line) -> console.log "#{n += 1}:", line

buffer = git.cat 'package.json', 'HEAD^'
file = fs.createWriteStream("package.json.bak")
file.on 'open', -> buffer.pipe file
  • put command line arguments as key: value pairs or strings into your call
Git = require 'treeeater'
# an option on construction is default for all calls
git = new Git cwd: 'parrot'
# ~/parrot$ git log -1 --pretty=raw HEAD^^
log = git.log 1:null, pretty:'raw', 'HEAD^^'
log.on 'item', do_something_with_it
# change current working directory, which must exist
git.opts.cwd = 'dead'
# git init --bare -L .
git.init bare:null, L:'.'
  • some functions are not named after git commands and provide some parsed output
n = 0
commits = git.commits()
commits.on 'item', (commit) ->
    if my_email is commit.author.email
        n += 1
commits.on 'close', ->
    console.log "I've authored #{n} commits!"

git.tree 'HEAD', (trees) ->
    coffee = []
    tree = git.tree_hierachy(trees)
    for stuff in tree
        if stuff.type == 'tree'
            for more_stuff in stuff
                if '.coffee' in more_stuff.path
                    coffee.push more_stuff
    console.log "#{coffe.length} coffee files in level 1 subfolders"