diff --git a/spec/app/config-spec.coffee b/spec/app/config-spec.coffee index 661ef3c78..351aa4785 100644 --- a/spec/app/config-spec.coffee +++ b/spec/app/config-spec.coffee @@ -109,3 +109,20 @@ describe "Config", -> config.set("foo.bar.baz", "i'm back") expect(observeHandler).toHaveBeenCalledWith("i'm back") + + describe "initializeConfigDirectory()", -> + beforeEach -> + config.configDirPath = '/tmp/dot-atom-dir' + + afterEach -> + fs.remove('/tmp/dot-atom-dir') if fs.exists('/tmp/dot-atom-dir') + + describe "when the configDirPath doesn't exist", -> + it "copies the contents of dot-atom to ~/.atom if it doesn't exist", -> + expect(fs.exists(config.configDirPath)).toBeFalsy() + config.initializeConfigDirectory() + expect(fs.exists(config.configDirPath)).toBeTruthy() + expect(fs.exists(fs.join(config.configDirPath, 'packages'))).toBeTruthy() + expect(fs.exists(fs.join(config.configDirPath, 'snippets'))).toBeTruthy() + expect(fs.exists(fs.join(config.configDirPath, 'themes'))).toBeTruthy() + expect(fs.isFile(fs.join(config.configDirPath, 'config.cson'))).toBeTruthy() diff --git a/src/app/config.coffee b/src/app/config.coffee index 509b9fec8..cdb9b3182 100644 --- a/src/app/config.coffee +++ b/src/app/config.coffee @@ -30,7 +30,20 @@ class Config @configFilePath = fs.resolve(configDirPath, 'config', ['json', 'cson']) @configFilePath ?= fs.join(configDirPath, 'config.cson') + initializeConfigDirectory: -> + return if fs.exists(@configDirPath) + + fs.makeDirectory(@configDirPath) + templateConfigDirPath = fs.resolve(window.resourcePath, 'dot-atom') + onConfigDirFile = (path) => + templatePath = fs.join(templateConfigDirPath, path) + configPath = fs.join(@configDirPath, path) + fs.write(configPath, fs.read(templatePath)) + onConfigDirPath = (path) -> true + fs.traverseTree(templateConfigDirPath, onConfigDirFile, onConfigDirPath) + load: -> + @initializeConfigDirectory() @loadUserConfig() @requireUserInitScript()