From 8e8ab4ff94d90053f67dfd68be45811c2beca9f5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 25 Oct 2012 15:20:12 -0700 Subject: [PATCH] Add getPath helper --- native/v8_extensions/git.js | 2 ++ native/v8_extensions/git.mm | 14 ++++++++++++++ spec/app/git-spec.coffee | 13 +++++++++++++ src/app/git.coffee | 9 +++++---- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/native/v8_extensions/git.js b/native/v8_extensions/git.js index 104b92bb1..b2e6e6d68 100644 --- a/native/v8_extensions/git.js +++ b/native/v8_extensions/git.js @@ -3,6 +3,7 @@ var $git = {}; native function getRepository(path); native function getHead(); + native function getPath(); function GitRepository(path) { var repo = getRepository(path); @@ -12,5 +13,6 @@ var $git = {}; } GitRepository.prototype.getHead = getHead; + GitRepository.prototype.getPath = getPath; this.GitRepository = GitRepository; })(); diff --git a/native/v8_extensions/git.mm b/native/v8_extensions/git.mm index e8d673151..7837786d8 100644 --- a/native/v8_extensions/git.mm +++ b/native/v8_extensions/git.mm @@ -20,6 +20,13 @@ class GitRepository : public CefBase { git_repository_free(repo); } + CefRefPtr GetPath() { + if (exists) + return CefV8Value::CreateString(git_repository_path(repo)); + else + return CefV8Value::CreateNull(); + } + CefRefPtr GetHead() { if (!exists) return CefV8Value::CreateNull(); @@ -65,6 +72,13 @@ bool Git::Execute(const CefString& name, retval = userData->GetHead(); return true; } + + if (name == "getPath") { + GitRepository *userData = (GitRepository *)object->GetUserData().get(); + retval = userData->GetPath(); + return true; + } + return false; } diff --git a/spec/app/git-spec.coffee b/spec/app/git-spec.coffee index 3b9fa920e..7d904bfed 100644 --- a/spec/app/git-spec.coffee +++ b/spec/app/git-spec.coffee @@ -2,6 +2,19 @@ Git = require 'git' describe "Git", -> + describe "getPath()", -> + it "returns the repository path for a working directory file path", -> + repo = new Git(require.resolve('fixtures/git/nohead.git/HEAD')) + expect(repo.getPath()).toBe require.resolve('fixtures/git/nohead.git') + '/' + repo = new Git(require.resolve('fixtures/git/master.git/HEAD')) + expect(repo.getPath()).toBe require.resolve('fixtures/git/master.git') + '/' + + it "returns the repository path for a repository path", -> + repo = new Git(require.resolve('fixtures/git/nohead.git')) + expect(repo.getPath()).toBe require.resolve('fixtures/git/nohead.git') + '/' + repo = new Git(require.resolve('fixtures/git/master.git')) + expect(repo.getPath()).toBe require.resolve('fixtures/git/master.git') + '/' + describe "getHead()", -> it "returns null for a empty repository", -> repo = new Git(require.resolve('fixtures/git/nohead.git')) diff --git a/src/app/git.coffee b/src/app/git.coffee index 493eabe3e..aaf0ae92d 100644 --- a/src/app/git.coffee +++ b/src/app/git.coffee @@ -1,11 +1,12 @@ module.exports = class Git - constructor: (@repoPath) -> - @repo = new GitRepository(@repoPath) + constructor: (path) -> + @repo = new GitRepository(path) - getHead: -> - @repo.getHead() || '' + getPath: -> @repo.getPath() + + getHead: -> @repo.getHead() || '' getShortHead: -> head = @getHead()