Skip to content

Commit b0c0cf2

Browse files
authored
Merge pull request #72 from xbotter/main
Implement Copy Installation Package Command for Script & Interactive
2 parents 8e35212 + 5e160ef commit b0c0cf2

File tree

5 files changed

+80
-0
lines changed

5 files changed

+80
-0
lines changed

front-end/src/app/components/install-package/install-package.component.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@
195195
class="btn btn-default-sm btn-sm">
196196
Install
197197
</button>
198+
<button
199+
class="mt-2"
200+
type="button"
201+
(click)="copy(package.id)"
202+
class="btn btn-default-sm btn-sm">
203+
Copy
204+
</button>
198205
</td>
199206
</tr>
200207

front-end/src/app/components/install-package/install-package.component.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,17 @@ export class InstallPackageComponent implements AfterViewInit {
177177
}
178178
}
179179

180+
copy(packageName: string) {
181+
this.loading.startLoading();
182+
const selectedVersion = this.packageListVersion[packageName];
183+
this.commandSrv
184+
.copyPackage(packageName, selectedVersion)
185+
.subscribe(res => {
186+
this.commandSrv.syncViews('getData');
187+
this.loading.stopLoading();
188+
});
189+
}
190+
180191
findPackageStableVersion(
181192
searchPackageResultVersions: SearchPackageResultVersion[]
182193
): string {

front-end/src/app/services/command-service/command.service.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,23 @@ export class CommandService {
8888
return obs;
8989
}
9090

91+
copyPackage(
92+
packageName: string,
93+
selectedVersion: string
94+
): Observable<CommandResult<any>> {
95+
var obs = new Observable<CommandResult<any>>(sub => {
96+
command(
97+
'nugetpackagemanagergui.copyPackage',
98+
{
99+
packageName: packageName,
100+
selectedVersion: selectedVersion,
101+
},
102+
(res: CommandResult<any>) => sub.next(res)
103+
);
104+
});
105+
return obs;
106+
}
107+
91108
updatePackage(
92109
projectId: number,
93110
packageName: string,

src/extension.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
} from './services/update.service';
2424
import { remove, removeAllPackage } from './services/uninstall.service';
2525
import { install } from './services/install.service';
26+
import { copy } from './services/copy.service';
2627

2728
export function activate(context: vscode.ExtensionContext) {
2829
const vscexpress = new VSCExpress(context, 'front-end');
@@ -189,6 +190,26 @@ export function activate(context: vscode.ExtensionContext) {
189190
)
190191
);
191192

193+
context.subscriptions.push(
194+
vscode.commands.registerCommand(
195+
'nugetpackagemanagergui.copyPackage',
196+
async (data: {
197+
packageName: string;
198+
selectedVersion: string;
199+
}) => {
200+
await tryCatch(
201+
async () =>
202+
copy(
203+
data.packageName,
204+
data.selectedVersion
205+
),
206+
`${data.packageName} copied to clipboard`,
207+
false
208+
);
209+
}
210+
)
211+
);
212+
192213
context.subscriptions.push(
193214
vscode.commands.registerCommand(
194215
'nugetpackagemanagergui.updateAllPackage',

src/services/copy.service.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import * as vscode from 'vscode';
2+
import { ServiceResult } from '../models/common.model';
3+
4+
/**
5+
* Copy the package reference to the clipboard
6+
* @param packageName The package name
7+
* @param selectedVersion The target version
8+
* @returns
9+
*/
10+
export async function copy(
11+
packageName: string,
12+
selectedVersion: string
13+
): Promise<ServiceResult> {
14+
15+
const packageReference = `#r "nuget:${packageName}, ${selectedVersion}"`;
16+
17+
await vscode.env.clipboard.writeText(packageReference);
18+
19+
return {
20+
isSuccessful: true,
21+
message: `The package '${packageName}' has been copied to the clipboard.`,
22+
};
23+
24+
}

0 commit comments

Comments
 (0)