Skip to content

Commit e9f6b8f

Browse files
author
angelozerr
committed
Refresh node_modules/$name folder
1 parent 54472d8 commit e9f6b8f

File tree

4 files changed

+63
-8
lines changed

4 files changed

+63
-8
lines changed

eclipse/terminal/ts.eclipse.ide.terminal.interpreter.npm/src/ts/eclipse/ide/terminal/interpreter/npm/internal/NpmTerminalInterpreterPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
public class NpmTerminalInterpreterPlugin implements BundleActivator {
77

8+
public static final String PLUGIN_ID = "ts.eclipse.ide.terminal.interpreter.npm";
9+
810
@Override
911
public void start(BundleContext context) throws Exception {
1012

eclipse/terminal/ts.eclipse.ide.terminal.interpreter.npm/src/ts/eclipse/ide/terminal/interpreter/npm/internal/commands/NpmInstallCommandInterpreter.java

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package ts.eclipse.ide.terminal.interpreter.npm.internal.commands;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
36
import org.eclipse.core.resources.IContainer;
7+
import org.eclipse.core.resources.IFolder;
8+
import org.eclipse.core.resources.IResource;
49
import org.eclipse.core.resources.ResourcesPlugin;
5-
import org.eclipse.core.runtime.IPath;
10+
import org.eclipse.core.runtime.CoreException;
611
import org.eclipse.core.runtime.IProgressMonitor;
712
import org.eclipse.core.runtime.IStatus;
813
import org.eclipse.core.runtime.Path;
@@ -11,13 +16,17 @@
1116

1217
import ts.eclipse.ide.terminal.interpreter.AbstractCommandInterpreter;
1318
import ts.eclipse.ide.terminal.interpreter.UIInterpreterHelper;
19+
import ts.eclipse.ide.terminal.interpreter.npm.internal.NpmTerminalInterpreterPlugin;
1420

1521
public class NpmInstallCommandInterpreter extends AbstractCommandInterpreter {
1622

17-
private final IPath NODE_MODULES_PATH = new Path("node_modules");
23+
private final String NODE_MODULES = "node_modules";
24+
25+
private final List<String> folders;
1826

1927
public NpmInstallCommandInterpreter(String workingDir) {
2028
super(workingDir);
29+
this.folders = new ArrayList<String>();
2130
}
2231

2332
@Override
@@ -29,12 +38,50 @@ public void execute() {
2938

3039
@Override
3140
public IStatus runInUIThread(IProgressMonitor monitor) {
32-
if (container.exists(NODE_MODULES_PATH)) {
33-
UIInterpreterHelper.selectRevealInProjectExplorer(container.getFolder(NODE_MODULES_PATH));
41+
try {
42+
List<IResource> resources = getResources(monitor);
43+
if (resources.size() > 0) {
44+
UIInterpreterHelper.selectRevealInDefaultViews(resources.get(0));
45+
}
46+
} catch (CoreException e) {
47+
return new Status(IStatus.ERROR, NpmTerminalInterpreterPlugin.PLUGIN_ID,
48+
"Error while collecting npm folders", e);
3449
}
3550
return Status.OK_STATUS;
3651
}
52+
53+
private List<IResource> getResources(IProgressMonitor monitor) throws CoreException {
54+
List<IResource> resources = new ArrayList<IResource>();
55+
if (folders.size() > 0) {
56+
for (String folder : folders) {
57+
collectResource(folder, resources, monitor);
58+
}
59+
} else {
60+
collectResource(NODE_MODULES, resources, monitor);
61+
}
62+
63+
return resources;
64+
}
65+
66+
private void collectResource(String folder, List<IResource> resources, IProgressMonitor monitor)
67+
throws CoreException {
68+
IFolder resource = container.getFolder(new Path(folder));
69+
resource.refreshLocal(IResource.DEPTH_INFINITE, monitor);
70+
if (resource.exists()) {
71+
resources.add(resource);
72+
}
73+
}
3774
}.schedule();
75+
76+
}
77+
}
78+
79+
@Override
80+
public void onTrace(String line) {
81+
int index = line.indexOf(NODE_MODULES);
82+
if (index != -1) {
83+
String folder = line.substring(index, line.length()).trim();
84+
folders.add(folder);
3885
}
3986
}
4087

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/UIInterpreterHelper.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
public class UIInterpreterHelper {
1919

20+
private final static String[] DEFAULT_VIEW_IDS = { IPageLayout.ID_PROJECT_EXPLORER,
21+
"org.eclipse.ui.views.ResourceNavigator" };
22+
2023
/**
2124
* Open in an editor the given file.
2225
*
@@ -32,12 +35,15 @@ public static void openFile(IFile file) throws PartInitException {
3235
}
3336

3437
/**
35-
* Select the given element in the Project Explorer.
38+
* Select the given element in the default view (Project Explorer,
39+
* Navigator).
3640
*
3741
* @param element
3842
*/
39-
public static void selectRevealInProjectExplorer(Object element) {
40-
selectReveal(element, IPageLayout.ID_PROJECT_EXPLORER);
43+
public static void selectRevealInDefaultViews(Object element) {
44+
for (String viewId : DEFAULT_VIEW_IDS) {
45+
selectReveal(element, viewId);
46+
}
4147
}
4248

4349
/**

eclipse/terminal/ts.eclipse.ide.terminal.interpreter/src/ts/eclipse/ide/terminal/interpreter/internal/jobs/RefreshContainerJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public IStatus runInUIThread(IProgressMonitor monitor) {
3333
}
3434
}
3535
// Select the container in the Project Explorer
36-
UIInterpreterHelper.selectRevealInProjectExplorer(container);
36+
UIInterpreterHelper.selectRevealInDefaultViews(container);
3737
return Status.OK_STATUS;
3838
}
3939
}

0 commit comments

Comments
 (0)