mirror of
https://github.com/atom/atom.git
synced 2026-02-05 12:15:07 -05:00
36 lines
1.4 KiB
CoffeeScript
36 lines
1.4 KiB
CoffeeScript
fs = require 'fs-plus'
|
|
path = require 'path'
|
|
{ipcMain} = require 'electron'
|
|
|
|
module.exports =
|
|
class AtomPortable
|
|
@getPortableAtomHomePath: ->
|
|
execDirectoryPath = path.dirname(process.execPath)
|
|
path.join(execDirectoryPath, '..', '.atom')
|
|
|
|
@setPortable: (existingAtomHome) ->
|
|
fs.copySync(existingAtomHome, @getPortableAtomHomePath())
|
|
|
|
@isPortableInstall: (platform, environmentAtomHome, defaultHome) ->
|
|
return false unless platform in ['linux', 'win32']
|
|
return false if environmentAtomHome
|
|
return false if not fs.existsSync(@getPortableAtomHomePath())
|
|
# currently checking only that the directory exists and is writable,
|
|
# probably want to do some integrity checks on contents in future
|
|
@isPortableAtomHomePathWritable(defaultHome)
|
|
|
|
@isPortableAtomHomePathWritable: (defaultHome) ->
|
|
writable = false
|
|
message = ""
|
|
try
|
|
writePermissionTestFile = path.join(@getPortableAtomHomePath(), "write.test")
|
|
fs.writeFileSync(writePermissionTestFile, "test") if not fs.existsSync(writePermissionTestFile)
|
|
fs.removeSync(writePermissionTestFile)
|
|
writable = true
|
|
catch error
|
|
message = "Failed to use portable Atom home directory (#{@getPortableAtomHomePath()}). Using the default instead (#{defaultHome}). #{error.message}"
|
|
|
|
ipcMain.on 'check-portable-home-writable', (event) ->
|
|
event.sender.send 'check-portable-home-writable-response', {writable, message}
|
|
writable
|