Add convert to SDK style project to context menu (#18847)

* differentiate between sdk and legacy style projects in tree

* switch to legacy

* add to context menu

* add function call
This commit is contained in:
Kim Santiago
2022-03-29 10:15:36 -07:00
committed by GitHub
parent 459fab256e
commit f002a26fe4
6 changed files with 37 additions and 20 deletions

View File

@@ -133,12 +133,12 @@
"view/item/context": [ "view/item/context": [
{ {
"command": "projects.manageProject", "command": "projects.manageProject",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable",
"group": "0_projectsFirst@1" "group": "0_projectsFirst@1"
}, },
{ {
"command": "projects.removeProject", "command": "projects.removeProject",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "9_dbProjectsLast@9" "group": "9_dbProjectsLast@9"
} }
] ]

View File

@@ -185,6 +185,11 @@
"command": "sqlDatabaseProjects.generateProjectFromOpenApiSpec", "command": "sqlDatabaseProjects.generateProjectFromOpenApiSpec",
"title": "%sqlDatabaseProjects.generateProjectFromOpenApiSpec%", "title": "%sqlDatabaseProjects.generateProjectFromOpenApiSpec%",
"category": "%sqlDatabaseProjects.displayName%" "category": "%sqlDatabaseProjects.displayName%"
},
{
"command": "sqlDatabaseProjects.convertToSdkStyleProject",
"title": "%sqlDatabaseProjects.convertToSdkStyleProject%",
"category": "%sqlDatabaseProjects.displayName%"
} }
], ],
"menus": { "menus": {
@@ -296,77 +301,81 @@
{ {
"command": "sqlDatabaseProjects.changeTargetPlatform", "command": "sqlDatabaseProjects.changeTargetPlatform",
"when": "false" "when": "false"
},
{
"command": "sqlDatabaseProjects.convertToSdkStyleProject",
"when": "false"
} }
], ],
"view/item/context": [ "view/item/context": [
{ {
"command": "sqlDatabaseProjects.build", "command": "sqlDatabaseProjects.build",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "1_dbProjectsFirst@1" "group": "1_dbProjectsFirst@1"
}, },
{ {
"command": "sqlDatabaseProjects.publish", "command": "sqlDatabaseProjects.publish",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "1_dbProjectsFirst@2" "group": "1_dbProjectsFirst@2"
}, },
{ {
"command": "sqlDatabaseProjects.schemaCompare", "command": "sqlDatabaseProjects.schemaCompare",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable",
"group": "1_dbProjectsFirst@3" "group": "1_dbProjectsFirst@3"
}, },
{ {
"command": "sqlDatabaseProjects.updateProjectFromDatabase", "command": "sqlDatabaseProjects.updateProjectFromDatabase",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable",
"group": "1_dbProjectsFirst@4" "group": "1_dbProjectsFirst@4"
}, },
{ {
"command": "sqlDatabaseProjects.newItem", "command": "sqlDatabaseProjects.newItem",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "2_dbProjects_newMain@1" "group": "2_dbProjects_newMain@1"
}, },
{ {
"command": "sqlDatabaseProjects.addExistingItem", "command": "sqlDatabaseProjects.addExistingItem",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "2_dbProjects_newMain@2" "group": "2_dbProjects_newMain@2"
}, },
{ {
"command": "sqlDatabaseProjects.newFolder", "command": "sqlDatabaseProjects.newFolder",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "2_dbProjects_newMain@3" "group": "2_dbProjects_newMain@3"
}, },
{ {
"command": "sqlDatabaseProjects.newTable", "command": "sqlDatabaseProjects.newTable",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@1" "group": "3_dbProjects_newItem@1"
}, },
{ {
"command": "sqlDatabaseProjects.newView", "command": "sqlDatabaseProjects.newView",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@2" "group": "3_dbProjects_newItem@2"
}, },
{ {
"command": "sqlDatabaseProjects.newStoredProcedure", "command": "sqlDatabaseProjects.newStoredProcedure",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@3" "group": "3_dbProjects_newItem@3"
}, },
{ {
"command": "sqlDatabaseProjects.newExternalStreamingJob", "command": "sqlDatabaseProjects.newExternalStreamingJob",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@4" "group": "3_dbProjects_newItem@4"
}, },
{ {
"command": "sqlDatabaseProjects.newScript", "command": "sqlDatabaseProjects.newScript",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@7" "group": "3_dbProjects_newItem@7"
}, },
{ {
"command": "sqlDatabaseProjects.newPreDeploymentScript", "command": "sqlDatabaseProjects.newPreDeploymentScript",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@8" "group": "3_dbProjects_newItem@8"
}, },
{ {
"command": "sqlDatabaseProjects.newPostDeploymentScript", "command": "sqlDatabaseProjects.newPostDeploymentScript",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder",
"group": "3_dbProjects_newItem@9" "group": "3_dbProjects_newItem@9"
}, },
{ {
@@ -389,19 +398,24 @@
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.folder || viewItem =~ /^databaseProject.itemType.file/ || viewItem == databaseProject.itemType.reference", "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.folder || viewItem =~ /^databaseProject.itemType.file/ || viewItem == databaseProject.itemType.reference",
"group": "9_dbProjectsLast@2" "group": "9_dbProjectsLast@2"
}, },
{
"command": "sqlDatabaseProjects.convertToSdkStyleProject",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.legacyProject",
"group": "9_dbProjectsLast@5"
},
{ {
"command": "sqlDatabaseProjects.changeTargetPlatform", "command": "sqlDatabaseProjects.changeTargetPlatform",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "9_dbProjectsLast@6" "group": "9_dbProjectsLast@6"
}, },
{ {
"command": "sqlDatabaseProjects.editProjectFile", "command": "sqlDatabaseProjects.editProjectFile",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "9_dbProjectsLast@7" "group": "9_dbProjectsLast@7"
}, },
{ {
"command": "sqlDatabaseProjects.openContainingFolder", "command": "sqlDatabaseProjects.openContainingFolder",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "9_dbProjectsLast@8" "group": "9_dbProjectsLast@8"
}, },
{ {

View File

@@ -32,6 +32,7 @@
"sqlDatabaseProjects.editProjectFile": "Edit .sqlproj File", "sqlDatabaseProjects.editProjectFile": "Edit .sqlproj File",
"sqlDatabaseProjects.changeTargetPlatform": "Change Target Platform", "sqlDatabaseProjects.changeTargetPlatform": "Change Target Platform",
"sqlDatabaseProjects.generateProjectFromOpenApiSpec": "Generate SQL Project from OpenAPI/Swagger spec", "sqlDatabaseProjects.generateProjectFromOpenApiSpec": "Generate SQL Project from OpenAPI/Swagger spec",
"sqlDatabaseProjects.convertToSdkStyleProject": "Convert to SDK-style project",
"sqlDatabaseProjects.Settings": "Database Projects", "sqlDatabaseProjects.Settings": "Database Projects",
"sqlDatabaseProjects.dotnetInstallLocation": "Full path to .NET SDK on the machine.", "sqlDatabaseProjects.dotnetInstallLocation": "Full path to .NET SDK on the machine.",

View File

@@ -481,6 +481,7 @@ export const sqlAuth = 'SqlAuth';
// Tree item types // Tree item types
export enum DatabaseProjectItemType { export enum DatabaseProjectItemType {
project = 'databaseProject.itemType.project', project = 'databaseProject.itemType.project',
legacyProject = 'databaseProject.itemType.legacyProject',
folder = 'databaseProject.itemType.folder', folder = 'databaseProject.itemType.folder',
file = 'databaseProject.itemType.file', file = 'databaseProject.itemType.file',
externalStreamingJob = 'databaseProject.itemType.file.externalStreamingJob', externalStreamingJob = 'databaseProject.itemType.file.externalStreamingJob',

View File

@@ -81,6 +81,7 @@ export default class MainController implements vscode.Disposable {
vscode.commands.registerCommand('sqlDatabaseProjects.addDatabaseReference', async (node: WorkspaceTreeItem) => { return this.projectsController.addDatabaseReference(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.addDatabaseReference', async (node: WorkspaceTreeItem) => { return this.projectsController.addDatabaseReference(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.openContainingFolder', async (node: WorkspaceTreeItem) => { return this.projectsController.openContainingFolder(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.openContainingFolder', async (node: WorkspaceTreeItem) => { return this.projectsController.openContainingFolder(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.editProjectFile', async (node: WorkspaceTreeItem) => { return this.projectsController.editProjectFile(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.editProjectFile', async (node: WorkspaceTreeItem) => { return this.projectsController.editProjectFile(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.convertToSdkStyleProject', async (node: WorkspaceTreeItem) => { return this.projectsController.convertToSdkStyleProject(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.delete', async (node: WorkspaceTreeItem) => { return this.projectsController.delete(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.delete', async (node: WorkspaceTreeItem) => { return this.projectsController.delete(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.exclude', async (node: WorkspaceTreeItem) => { return this.projectsController.exclude(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.exclude', async (node: WorkspaceTreeItem) => { return this.projectsController.exclude(node); });
vscode.commands.registerCommand('sqlDatabaseProjects.changeTargetPlatform', async (node: WorkspaceTreeItem) => { return this.projectsController.changeTargetPlatform(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.changeTargetPlatform', async (node: WorkspaceTreeItem) => { return this.projectsController.changeTargetPlatform(node); });

View File

@@ -47,7 +47,7 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem {
public get treeItem(): vscode.TreeItem { public get treeItem(): vscode.TreeItem {
const projectItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.Expanded); const projectItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.Expanded);
projectItem.contextValue = DatabaseProjectItemType.project; projectItem.contextValue = this.project.isSdkStyleProject ? DatabaseProjectItemType.project : DatabaseProjectItemType.legacyProject;
projectItem.iconPath = IconPathHelper.databaseProject; projectItem.iconPath = IconPathHelper.databaseProject;
projectItem.label = path.basename(this.projectUri.fsPath, sqlprojExtension); projectItem.label = path.basename(this.projectUri.fsPath, sqlprojExtension);