From 3aaa8ad8f055c2fa05399aea5ba33d83c52ad75d Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Tue, 3 Jul 2012 15:34:34 -0700 Subject: [PATCH] TreeView's `add` and `move` create intermediate directories as needed --- spec/extensions/tree-view-spec.coffee | 8 ++++---- src/extensions/tree-view/tree-view.coffee | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/extensions/tree-view-spec.coffee b/spec/extensions/tree-view-spec.coffee index dff7e3004..f39dbb57d 100644 --- a/spec/extensions/tree-view-spec.coffee +++ b/spec/extensions/tree-view-spec.coffee @@ -488,15 +488,15 @@ describe "TreeView", -> describe "when the path with a trailing '/' is changed and confirmed", -> describe "when no file or directory exists at the given path", -> it "adds a directory and closes the dialog", -> - newPath = fs.join(dirPath, "new-dir") - addDialog.miniEditor.insertText("new-dir/") + newPath = fs.join(dirPath, "new/dir") + addDialog.miniEditor.insertText("new/dir/") addDialog.trigger 'tree-view:confirm' expect(fs.exists(newPath)).toBeTruthy() expect(fs.isDirectory(newPath)).toBeTruthy() expect(addDialog.parent()).not.toExist() expect(rootView.getActiveEditor().buffer.getPath()).not.toBe newPath - describe "when a or directory already exists at the given path", -> + describe "when a file or directory already exists at the given path", -> it "shows an error message and does not close the dialog", -> newPath = fs.join(dirPath, "new-dir") fs.makeDirectory(newPath) @@ -587,7 +587,7 @@ describe "TreeView", -> describe "when the directories along the new path don't exist", -> it "creates the target directory before moving the file", -> runs -> - newPath = fs.join(rootDirPath, 'new-directory', 'renamed-test-file.txt') + newPath = fs.join(rootDirPath, 'new/directory', 'renamed-test-file.txt') moveDialog.miniEditor.setText(newPath) moveDialog.trigger 'tree-view:confirm' diff --git a/src/extensions/tree-view/tree-view.coffee b/src/extensions/tree-view/tree-view.coffee index 35e4b9ba3..23b44e8ae 100644 --- a/src/extensions/tree-view/tree-view.coffee +++ b/src/extensions/tree-view/tree-view.coffee @@ -171,7 +171,7 @@ class TreeView extends View newPath = @rootView.project.resolve(newPath) directoryPath = fs.directory(newPath) try - fs.makeDirectory(directoryPath) unless fs.exists(directoryPath) + fs.makeTree(directoryPath) unless fs.exists(directoryPath) fs.move(oldPath, newPath) catch e dialog.showError("Error: " + e.message + " Try a different path:") @@ -208,15 +208,15 @@ class TreeView extends View endsWithDirectorySeperator = /\/$/.test(relativePath) path = @rootView.project.resolve(relativePath) try - if endsWithDirectorySeperator - fs.makeDirectory(path) + if fs.exists(path) + pathType = if fs.isFile(path) then "file" else "directory" + dialog.showError("Error: A #{pathType} already exists at path '#{path}'. Try a different path:") + false + else if endsWithDirectorySeperator + fs.makeTree(path) else - if fs.exists(path) - dialog.showError("Error: A file already exists at path '#{path}'. Try a different path:") - false - else - fs.write(path, "") - @rootView.open(path) + fs.write(path, "") + @rootView.open(path) catch e dialog.showError("Error: " + e.message + " Try a different path:") return false