💉 dependencies into AtomPackage

Removes use of resourcePath and config globals
This commit is contained in:
Kevin Sawicki
2013-10-07 14:38:19 -07:00
parent 722be2267d
commit 87bfcf5683
2 changed files with 19 additions and 13 deletions

View File

@@ -27,6 +27,8 @@ class Atom
initialize: ->
@unsubscribe()
{devMode, resourcePath} = atom.getLoadSettings()
Config = require './config'
Keymap = require './keymap'
PackageManager = require './package-manager'
@@ -35,20 +37,20 @@ class Atom
ThemeManager = require './theme-manager'
ContextMenuManager = require './context-menu-manager'
@packages = new PackageManager()
#TODO Remove once packages have been updated to not touch atom.packageStates directly
@__defineGetter__ 'packageStates', => @packages.packageStates
@__defineSetter__ 'packageStates', (packageStates) => @packages.packageStates = packageStates
@subscribe @packages, 'loaded', => @watchThemes()
@themes = new ThemeManager()
@contextMenu = new ContextMenuManager(@getLoadSettings().devMode)
@contextMenu = new ContextMenuManager(devMode)
@config = new Config()
@pasteboard = new Pasteboard()
@keymap = new Keymap()
@syntax = deserialize(@getWindowState('syntax')) ? new Syntax()
@packages = new PackageManager({devMode, resourcePath, configDirPath: @config.getDirectoryPath()})
@subscribe @packages, 'loaded', => @watchThemes()
#TODO Remove once packages have been updated to not touch atom.packageStates directly
@__defineGetter__ 'packageStates', => @packages.packageStates
@__defineSetter__ 'packageStates', (packageStates) => @packages.packageStates = packageStates
getCurrentWindow: ->
remote.getCurrentWindow()

View File

@@ -8,7 +8,11 @@ module.exports =
class PackageManager
_.extend @prototype, EventEmitter
constructor: ->
constructor: ({configDirPath, devMode, @resourcePath}) ->
@packageDirPaths = [path.join(configDirPath, "packages")]
if devMode
@packageDirPaths.unshift(path.join(configDirPath, "dev", "packages"))
@loadedPackages = {}
@activePackages = {}
@packageStates = {}
@@ -83,10 +87,10 @@ class PackageManager
resolvePackagePath: (name) ->
return name if fsUtils.isDirectorySync(name)
packagePath = fsUtils.resolve(config.packageDirPaths..., name)
packagePath = fsUtils.resolve(@packageDirPaths..., name)
return packagePath if fsUtils.isDirectorySync(packagePath)
packagePath = path.join(window.resourcePath, 'node_modules', name)
packagePath = path.join(@resourcePath, 'node_modules', name)
return packagePath if @isInternalPackage(packagePath)
isInternalPackage: (packagePath) ->
@@ -108,11 +112,11 @@ class PackageManager
getAvailablePackagePaths: ->
packagePaths = []
for packageDirPath in config.packageDirPaths
for packageDirPath in @packageDirPaths
for packagePath in fsUtils.listSync(packageDirPath)
packagePaths.push(packagePath) if fsUtils.isDirectorySync(packagePath)
for packagePath in fsUtils.listSync(path.join(window.resourcePath, 'node_modules'))
for packagePath in fsUtils.listSync(path.join(@resourcePath, 'node_modules'))
packagePaths.push(packagePath) if @isInternalPackage(packagePath)
_.uniq(packagePaths)