mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Render markdown in installed package views
This commit is contained in:
@@ -3,14 +3,20 @@ _ = require 'underscore'
|
||||
Package = require 'package'
|
||||
ConfigPanel = require 'config-panel'
|
||||
PackageConfigView = require 'package-config-view'
|
||||
packageManager = require 'package-manager'
|
||||
|
||||
### Internal ###
|
||||
|
||||
module.exports =
|
||||
class InstalledPackagesConfigPanel extends ConfigPanel
|
||||
@content: ->
|
||||
@div class: 'installed-packages'
|
||||
@div class: 'installed-packages', =>
|
||||
@div outlet: 'loadingArea', class: 'alert alert-info loading-area', =>
|
||||
@span 'Loading installed packages\u2026'
|
||||
|
||||
initialize: ->
|
||||
for metadata in _.sortBy(atom.getAvailablePackageMetadata(), 'name')
|
||||
@append(new PackageConfigView(metadata))
|
||||
packages = _.sortBy(atom.getAvailablePackageMetadata(), 'name')
|
||||
packageManager.renderMarkdownInMetadata packages, =>
|
||||
@loadingArea.hide()
|
||||
@append(new PackageConfigView(pack)) for pack in packages
|
||||
@trigger 'installed-packages-loaded', [packages]
|
||||
|
||||
@@ -34,6 +34,8 @@ class PackageConfigPanel extends ConfigPanel
|
||||
@availableLink.addClass('active')
|
||||
@available.show()
|
||||
|
||||
@installedCount.text(atom.getAvailablePackageNames().length)
|
||||
@installed.on 'installed-packages-loaded', (event, packages) =>
|
||||
@installedCount.text(packages.length)
|
||||
|
||||
@available.on 'available-packages-loaded', (event, packages) =>
|
||||
@availableCount.text(packages.length)
|
||||
|
||||
@@ -4,57 +4,68 @@ async = require 'async'
|
||||
|
||||
### Internal ###
|
||||
|
||||
module.exports =
|
||||
getAvailable: (callback) ->
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['available', '--json'])
|
||||
chunks = []
|
||||
apmProcess.stdout.on 'data', (chunk) -> chunks.push(chunk)
|
||||
apmProcess.on 'close', (code) ->
|
||||
if code is 0
|
||||
try
|
||||
packages = JSON.parse(Buffer.concat(chunks).toString()) ? []
|
||||
catch error
|
||||
callback(error)
|
||||
return
|
||||
renderMarkdownInMetadata = (packages, callback) ->
|
||||
queue = async.queue (pack, callback) ->
|
||||
operations = []
|
||||
if pack.description
|
||||
operations.push (callback) ->
|
||||
roaster pack.description, {}, (error, html) ->
|
||||
pack.descriptionHtml = html
|
||||
callback()
|
||||
if pack.readme
|
||||
operations.push (callback) ->
|
||||
roaster pack.readme, {}, (error, html) ->
|
||||
pack.readmeHtml = html
|
||||
callback()
|
||||
async.waterfall(operations, callback)
|
||||
queue.push(pack) for pack in packages
|
||||
queue.drain = callback
|
||||
|
||||
if packages.length > 0
|
||||
queue = async.queue (pack, callback) ->
|
||||
roaster pack.description, {}, (error, html) ->
|
||||
pack.descriptionHtml = html
|
||||
roaster pack.readme, {}, (error, html) ->
|
||||
pack.readmeHtml = html
|
||||
callback()
|
||||
queue.push(pack) for pack in packages
|
||||
queue.drain = -> callback(null, packages)
|
||||
else
|
||||
callback(null, packages)
|
||||
getAvailable = (callback) ->
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['available', '--json'])
|
||||
chunks = []
|
||||
apmProcess.stdout.on 'data', (chunk) -> chunks.push(chunk)
|
||||
apmProcess.on 'close', (code) ->
|
||||
if code is 0
|
||||
try
|
||||
packages = JSON.parse(Buffer.concat(chunks).toString()) ? []
|
||||
catch error
|
||||
callback(error)
|
||||
return
|
||||
|
||||
if packages.length > 0
|
||||
renderMarkdownInMetadata packages, -> callback(null, packages)
|
||||
else
|
||||
callback(new Error("apm failed with code: #{code}"))
|
||||
callback(null, packages)
|
||||
else
|
||||
callback(new Error("apm failed with code: #{code}"))
|
||||
|
||||
install: ({name, version}, callback) ->
|
||||
activateOnSuccess = !atom.isPackageDisabled(name)
|
||||
activateOnFailure = atom.isPackageActive(name)
|
||||
atom.deactivatePackage(name) if atom.isPackageActive(name)
|
||||
install = ({name, version}, callback) ->
|
||||
activateOnSuccess = !atom.isPackageDisabled(name)
|
||||
activateOnFailure = atom.isPackageActive(name)
|
||||
atom.deactivatePackage(name) if atom.isPackageActive(name)
|
||||
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['install', "#{name}@#{version}"])
|
||||
apmProcess.on 'close', (code) =>
|
||||
if code is 0
|
||||
atom.activatePackage(name) if activateOnSuccess
|
||||
callback()
|
||||
else
|
||||
actom.activatePackage(name) if activateOnFailure
|
||||
callback(new Error("Installing '#{name}' failed."))
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['install', "#{name}@#{version}"])
|
||||
apmProcess.on 'close', (code) =>
|
||||
if code is 0
|
||||
atom.activatePackage(name) if activateOnSuccess
|
||||
callback()
|
||||
else
|
||||
actom.activatePackage(name) if activateOnFailure
|
||||
callback(new Error("Installing '#{name}' failed."))
|
||||
|
||||
uninstall: ({name}, callback) ->
|
||||
atom.deactivatePackage(name) if atom.isPackageActive(name)
|
||||
uninstall = ({name}, callback) ->
|
||||
atom.deactivatePackage(name) if atom.isPackageActive(name)
|
||||
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['uninstall', name])
|
||||
apmProcess.on 'close', (code) =>
|
||||
if code is 0
|
||||
atom.unloadPackage(name)
|
||||
callback()
|
||||
else
|
||||
callback(new Error("Uninstalling '#{name}' failed."))
|
||||
apm = require.resolve '.bin/apm'
|
||||
apmProcess = spawn(apm, ['uninstall', name])
|
||||
apmProcess.on 'close', (code) =>
|
||||
if code is 0
|
||||
atom.unloadPackage(name)
|
||||
callback()
|
||||
else
|
||||
callback(new Error("Uninstalling '#{name}' failed."))
|
||||
|
||||
module.exports = {renderMarkdownInMetadata, install, uninstall, getAvailable}
|
||||
|
||||
Reference in New Issue
Block a user