         console.log "#{@devPackagesDirectory.cyan} (#{devPackages.length})"
     callback?(null, devPackages)
 
+  listGitPackages: (options, callback) ->
+    gitPackages = @listPackages(@gitPackagesDirectory, options)
+    if gitPackages.length > 0
+      unless options.argv.bare or options.argv.json
+        console.log "#{@gitPackagesDirectory.cyan} (#{gitPackages.length})"
+    callback?(null, gitPackages)
+
   listBundledPackages: (options, callback) ->
     config.getResourcePath (resourcePath) ->
       try

      @listUserPackages options, (error, packages) =>
        @logPackages(packages, options)

  listPackagesAsJson: (options) ->
    output =
      core: []
      dev: []
      user: []

    @listBundledPackages options, (error, packages) =>
      output.core = packages
      @listDevPackages options, (error, packages) =>
        output.dev = packages
        @listUserPackages options, (error, packages) ->
          output.user = packages
          console.log JSON.stringify(output)

  run: (options) ->
    {callback} = options

  constructor: ->
    @userPackagesDirectory = path.join(config.getAtomDirectory(), 'packages')
    @devPackagesDirectory = path.join(config.getAtomDirectory(), 'dev', 'packages')
    @gitPackagesDirectory = path.join(config.getAtomDirectory(), 'git-packages')
    if configPath = CSON.resolve(path.join(config.getAtomDirectory(), 'config'))
      try
        @disabledPackages = CSON.readFileSync(configPath)?.core?.disabledPackages
