mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Add PackageManager::onDidLoad/UnloadPackage
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
This commit is contained in:
@@ -34,6 +34,14 @@ describe "PackageManager", ->
|
||||
expect(console.warn.callCount).toBe(1)
|
||||
expect(console.warn.argsForCall[0][0]).toContain("Could not resolve")
|
||||
|
||||
it "invokes ::onDidLoadPackage listeners with the loaded package", ->
|
||||
loadedPackage = null
|
||||
atom.packages.onDidLoadPackage (pack) -> loadedPackage = pack
|
||||
|
||||
atom.packages.loadPackage("package-with-main")
|
||||
|
||||
expect(loadedPackage.name).toBe "package-with-main"
|
||||
|
||||
describe "::unloadPackage(name)", ->
|
||||
describe "when the package is active", ->
|
||||
it "throws an error", ->
|
||||
@@ -61,6 +69,13 @@ describe "PackageManager", ->
|
||||
atom.packages.unloadPackage(pack.name)
|
||||
expect(atom.packages.isPackageLoaded(pack.name)).toBeFalsy()
|
||||
|
||||
it "invokes ::onDidUnloadPackage listeners with the unloaded package", ->
|
||||
atom.packages.loadPackage('package-with-main')
|
||||
unloadedPackage = null
|
||||
atom.packages.onDidUnloadPackage (pack) -> unloadedPackage = pack
|
||||
atom.packages.unloadPackage('package-with-main')
|
||||
expect(unloadedPackage.name).toBe 'package-with-main'
|
||||
|
||||
describe "::activatePackage(id)", ->
|
||||
describe "when called multiple times", ->
|
||||
it "it only calls activate on the package once", ->
|
||||
|
||||
@@ -90,6 +90,24 @@ class PackageManager
|
||||
onDidDeactivatePackage: (callback) ->
|
||||
@emitter.on 'did-deactivate-package', callback
|
||||
|
||||
# Public: Invoke the given callback when a package is loaded.
|
||||
#
|
||||
# * `callback` A {Function} to be invoked when a package is loaded.
|
||||
# * `package` The {Package} that was loaded.
|
||||
#
|
||||
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
|
||||
onDidLoadPackage: (callback) ->
|
||||
@emitter.on 'did-load-package', callback
|
||||
|
||||
# Public: Invoke the given callback when a package is unloaded.
|
||||
#
|
||||
# * `callback` A {Function} to be invoked when a package is unloaded.
|
||||
# * `package` The {Package} that was unloaded.
|
||||
#
|
||||
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
|
||||
onDidUnloadPackage: (callback) ->
|
||||
@emitter.on 'did-unload-package', callback
|
||||
|
||||
on: (eventName) ->
|
||||
switch eventName
|
||||
when 'loaded'
|
||||
@@ -321,6 +339,7 @@ class PackageManager
|
||||
pack = new Package(packagePath, metadata)
|
||||
pack.load()
|
||||
@loadedPackages[pack.name] = pack
|
||||
@emitter.emit 'did-load-package', pack
|
||||
return pack
|
||||
catch error
|
||||
console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error
|
||||
@@ -338,6 +357,7 @@ class PackageManager
|
||||
|
||||
if pack = @getLoadedPackage(name)
|
||||
delete @loadedPackages[pack.name]
|
||||
@emitter.emit 'did-unload-package', pack
|
||||
else
|
||||
throw new Error("No loaded package for name '#{name}'")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user