mirror of
https://github.com/atom/atom.git
synced 2026-01-22 21:38:10 -05:00
Add Atom.getAvailablePackageMetadata()
This includes the metadata for all available packages whether or not they are currently loaded.
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user