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

@@ -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