mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +00:00
fix: strip f/ prefix from folder paths when deploying from workspace forks (#8662)
* fix: strip f/ prefix from folder paths when deploying from workspace forks Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: extract folderName helper for f/ prefix stripping Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -144,7 +144,7 @@
|
||||
const app = await AppService.getAppByPath({ workspace, path })
|
||||
return app.summary
|
||||
} else if (kind === 'folder') {
|
||||
const folder = await FolderService.getFolder({ workspace, name: path.slice(2) })
|
||||
const folder = await FolderService.getFolder({ workspace, name: path.replace(/^f\//, '') })
|
||||
return folder.summary
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -361,7 +361,14 @@
|
||||
|
||||
const parent = parentWorkspaceId
|
||||
const current = currentWorkspaceId
|
||||
for (const itemKey of selectedItems) {
|
||||
const sortedItems = [...selectedItems].sort((a, b) => {
|
||||
const aIsFolder = a.startsWith('folder:')
|
||||
const bIsFolder = b.startsWith('folder:')
|
||||
if (aIsFolder && !bIsFolder) return -1
|
||||
if (!aIsFolder && bIsFolder) return 1
|
||||
return 0
|
||||
})
|
||||
for (const itemKey of sortedItems) {
|
||||
const diff = selectableDiffs.find((d) => itemKey == getItemKey(d))
|
||||
|
||||
if (!diff) {
|
||||
|
||||
@@ -18,6 +18,11 @@ import {
|
||||
} from '$lib/utils_deployable'
|
||||
import type { TriggerKind } from './components/triggers'
|
||||
|
||||
/** Folder diff paths carry the `f/` prefix (e.g. `f/test`), but folder API endpoints expect just the name. */
|
||||
function folderName(path: string): string {
|
||||
return path.replace(/^f\//, '')
|
||||
}
|
||||
|
||||
export interface DeployItemParams {
|
||||
kind: Kind
|
||||
path: string
|
||||
@@ -254,12 +259,32 @@ export async function deployItem(params: DeployItemParams): Promise<DeployResult
|
||||
})
|
||||
}
|
||||
} else if (kind === 'folder') {
|
||||
await FolderService.createFolder({
|
||||
workspace: workspaceTo,
|
||||
requestBody: {
|
||||
name: path
|
||||
}
|
||||
const name = folderName(path)
|
||||
const folder = await FolderService.getFolder({
|
||||
workspace: workspaceFrom,
|
||||
name
|
||||
})
|
||||
if (alreadyExists) {
|
||||
await FolderService.updateFolder({
|
||||
workspace: workspaceTo,
|
||||
name,
|
||||
requestBody: {
|
||||
owners: folder.owners,
|
||||
extra_perms: folder.extra_perms as any,
|
||||
summary: folder.summary ?? undefined
|
||||
}
|
||||
})
|
||||
} else {
|
||||
await FolderService.createFolder({
|
||||
workspace: workspaceTo,
|
||||
requestBody: {
|
||||
name,
|
||||
owners: folder.owners,
|
||||
extra_perms: folder.extra_perms as any,
|
||||
summary: folder.summary ?? undefined
|
||||
}
|
||||
})
|
||||
}
|
||||
} else if (kind === 'trigger') {
|
||||
if (additionalInformation?.triggers) {
|
||||
const { data, createFn, updateFn } = await getTriggersDeployData(
|
||||
@@ -340,7 +365,7 @@ export async function checkItemExists(
|
||||
} else if (kind === 'folder') {
|
||||
return await FolderService.existsFolder({
|
||||
workspace: workspace,
|
||||
name: path
|
||||
name: folderName(path)
|
||||
})
|
||||
} else if (kind === 'trigger') {
|
||||
const triggersKind: TriggerKind[] = [
|
||||
@@ -435,10 +460,13 @@ export async function getItemValue(
|
||||
} else if (kind === 'folder') {
|
||||
const folder = await FolderService.getFolder({
|
||||
workspace: workspace,
|
||||
name: path
|
||||
name: folderName(path)
|
||||
})
|
||||
return {
|
||||
name: folder.name
|
||||
name: folder.name,
|
||||
owners: folder.owners,
|
||||
extra_perms: folder.extra_perms,
|
||||
summary: folder.summary
|
||||
}
|
||||
} else if (kind === 'trigger') {
|
||||
if (additionalInformation?.triggers) {
|
||||
|
||||
Reference in New Issue
Block a user