Skip to content

Commit 8b7931e

Browse files
authored
Merge pull request #886 from mjbvz/extract-common-RunNpmCommand
Extract common run npm command logic in NodeModulesNode
2 parents 4178d03 + ab31365 commit 8b7931e

File tree

1 file changed

+39
-68
lines changed

1 file changed

+39
-68
lines changed

Nodejs/Product/Nodejs/Project/NodeModulesNode.cs

Lines changed: 39 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -521,11 +521,11 @@ private bool CheckValidCommandTarget(DependencyNode node) {
521521
return true;
522522
}
523523

524-
public async System.Threading.Tasks.Task InstallMissingModules() {
524+
private async System.Threading.Tasks.Task RunNpmCommand(Func<INpmCommander, System.Threading.Tasks.Task> impl) {
525525
DoPreCommandActions();
526526
try {
527527
using (var commander = NpmController.CreateNpmCommander()) {
528-
await commander.Install();
528+
await impl(commander);
529529
}
530530
} catch (NpmNotFoundException nnfe) {
531531
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
@@ -534,6 +534,10 @@ public async System.Threading.Tasks.Task InstallMissingModules() {
534534
}
535535
}
536536

537+
public System.Threading.Tasks.Task InstallMissingModules() {
538+
return RunNpmCommand(commander => commander.Install());
539+
}
540+
537541
public async System.Threading.Tasks.Task InstallMissingModule(DependencyNode node) {
538542
if (!CheckValidCommandTarget(node)) {
539543
return;
@@ -552,41 +556,27 @@ public async System.Threading.Tasks.Task InstallMissingModule(DependencyNode nod
552556
var package = node.Package;
553557
var dep = root.PackageJson.AllDependencies[package.Name];
554558

555-
DoPreCommandActions();
556-
try {
557-
using (var commander = NpmController.CreateNpmCommander()) {
558-
await commander.InstallPackageByVersionAsync(
559-
package.Name,
560-
null == dep ? "*" : dep.VersionRangeText,
561-
DependencyType.Standard,
562-
false);
563-
}
564-
} catch (NpmNotFoundException nnfe) {
565-
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
566-
} finally {
567-
AllowCommands();
568-
}
569-
}
570-
571-
internal async System.Threading.Tasks.Task UpdateModules(IList<HierarchyNode> nodes) {
572-
DoPreCommandActions();
573-
try {
574-
using (var commander = NpmController.CreateNpmCommander()) {
575-
if (nodes.Count == 1 && nodes[0] == this) {
576-
await commander.UpdatePackagesAsync();
577-
} else {
578-
var valid = nodes.OfType<DependencyNode>().Where(CheckValidCommandTarget).ToList();
579-
var list = valid.Select(node => node.Package).ToList();
580-
if (list.Count > 0) {
581-
await commander.UpdatePackagesAsync(list);
582-
}
559+
await RunNpmCommand(async commander => {
560+
await commander.InstallPackageByVersionAsync(
561+
package.Name,
562+
null == dep ? "*" : dep.VersionRangeText,
563+
DependencyType.Standard,
564+
false);
565+
});
566+
}
567+
568+
internal System.Threading.Tasks.Task UpdateModules(IList<HierarchyNode> nodes) {
569+
return RunNpmCommand(async commander => {
570+
if (nodes.Count == 1 && nodes[0] == this) {
571+
await commander.UpdatePackagesAsync();
572+
} else {
573+
var valid = nodes.OfType<DependencyNode>().Where(CheckValidCommandTarget).ToList();
574+
var list = valid.Select(node => node.Package).ToList();
575+
if (list.Count > 0) {
576+
await commander.UpdatePackagesAsync(list);
583577
}
584578
}
585-
} catch (NpmNotFoundException nnfe) {
586-
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
587-
} finally {
588-
AllowCommands();
589-
}
579+
});
590580
}
591581

592582
public void UpdateModules() {
@@ -597,48 +587,29 @@ public async System.Threading.Tasks.Task UpdateModule(DependencyNode node) {
597587
if (!CheckValidCommandTarget(node)) {
598588
return;
599589
}
600-
DoPreCommandActions();
601-
try {
602-
using (var commander = NpmController.CreateNpmCommander()) {
603-
await commander.UpdatePackagesAsync(new[] { node.Package });
604-
}
605-
} catch (NpmNotFoundException nnfe) {
606-
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
607-
} finally {
608-
AllowCommands();
609-
}
590+
await RunNpmCommand(async commander => {
591+
await commander.UpdatePackagesAsync(new[] { node.Package });
592+
});
610593
}
611594

612-
public async System.Threading.Tasks.Task UninstallModules() {
613-
DoPreCommandActions();
614-
try {
615-
var selected = _projectNode.GetSelectedNodes();
616-
using (var commander = NpmController.CreateNpmCommander()) {
617-
foreach (var node in selected.OfType<DependencyNode>().Where(CheckValidCommandTarget)) {
618-
await commander.UninstallPackageAsync(node.Package.Name);
619-
}
595+
596+
public System.Threading.Tasks.Task UninstallModules() {
597+
var selected = _projectNode.GetSelectedNodes();
598+
return RunNpmCommand(async commander => {
599+
foreach (var node in selected.OfType<DependencyNode>().Where(CheckValidCommandTarget)) {
600+
await commander.UninstallPackageAsync(node.Package.Name);
620601
}
621-
} catch (NpmNotFoundException nnfe) {
622-
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
623-
} finally {
624-
AllowCommands();
625-
}
602+
});
626603
}
627604

628605
public async System.Threading.Tasks.Task UninstallModule(DependencyNode node) {
629606
if (!CheckValidCommandTarget(node)) {
630607
return;
631608
}
632-
DoPreCommandActions();
633-
try {
634-
using (var commander = NpmController.CreateNpmCommander()) {
635-
await commander.UninstallPackageAsync(node.Package.Name);
636-
}
637-
} catch (NpmNotFoundException nnfe) {
638-
ErrorHelper.ReportNpmNotInstalled(null, nnfe);
639-
} finally {
640-
AllowCommands();
641-
}
609+
610+
await RunNpmCommand(async commander => {
611+
await commander.UninstallPackageAsync(node.Package.Name);
612+
});
642613
}
643614

644615
#endregion

0 commit comments

Comments
 (0)