Add Atom.getAvailablePackageMetadata()

This includes the metadata for all available packages
whether or not they are currently loaded.
This commit is contained in:
Kevin Sawicki
2013-05-21 18:20:23 -07:00
parent 25b8da0a76
commit 07e8ee35d9
5 changed files with 17 additions and 14 deletions

View File

@@ -24,8 +24,7 @@ describe "PackageConfigPanel", ->
]
spyOn(packageManager, 'getAvailable').andCallFake (callback) ->
callback(null, packages)
loadedPackages = packages.map (pack) -> {metadata: pack}
spyOn(atom, 'getLoadedPackages').andReturn(loadedPackages)
spyOn(atom, 'getAvailablePackageMetadata').andReturn(packages)
configObserver = jasmine.createSpy("configObserver")
observeSubscription = config.observe('core.disabledPackages', configObserver)
@@ -65,7 +64,7 @@ describe "PackageConfigPanel", ->
p2View.enableToggle.find('a').click()
expect(configObserver).toHaveBeenCalledWith(['p1', 'p3', 'p2'])
describe "when the enable link is checked", ->
describe "when the enable link is clicked", ->
it "removes the package name from the disabled packages array", ->
p3View = panel.installed.find("[name='p3']").view()
p3View.enableToggle.find('a').click()

View File

@@ -115,6 +115,14 @@ _.extend atom,
getAvailablePackageNames: ->
fsUtils.base(path) for path in @getAvailablePackagePaths()
getAvailablePackageMetadata: ->
packages = []
for packagePath in atom.getAvailablePackagePaths()
name = fsUtils.base(packagePath)
metadata = atom.getLoadedPackage(name)?.metadata ? Package.loadMetadata(path, true)
packages.push(metadata)
packages
loadThemes: ->
themeNames = config.get("core.themes")
themeNames = [themeNames] unless _.isArray(themeNames)

View File

@@ -12,12 +12,5 @@ class InstalledPackagesConfigPanel extends ConfigPanel
@div class: 'installed-packages'
initialize: ->
for packagePath in atom.getAvailablePackagePaths().sort()
name = path.basename(packagePath)
metadata = atom.getLoadedPackage(name)?.metadata
unless metadata
try
metadata = Package.loadMetadata()
catch e
metadata = {name}
for metadata in _.sortBy(atom.getAvailablePackageMetadata(), 'name')
@append(new PackageConfigView(metadata))

View File

@@ -102,7 +102,7 @@ class PackageConfigView extends View
@updateDefaultAction()
@enableToggle.find('a').on 'click', => @togglePackageEnablement
@enableToggle.find('a').on 'click', => @togglePackageEnablement()
@observeConfig 'core.disabledPackages', =>
@updatePackageState()

View File

@@ -18,9 +18,12 @@ class Package
pack.load(options)
pack
@loadMetadata: (path) ->
@loadMetadata: (path, ignoreErrors=false) ->
if metadataPath = CSON.resolve(join(path, 'package'))
metadata = CSON.readFileSync(metadataPath)
try
metadata = CSON.readFileSync(metadataPath)
catch e
throw e unless ignoreErrors
metadata ?= {}
metadata.name = basename(path)
metadata