Skip to content

Commit 4174cb7

Browse files
committed
refactor: use data exported from collectFiles
1 parent 1f5c02e commit 4174cb7

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

packages/core/src/amazonq/util/files.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as vscode from 'vscode'
77
import * as path from 'path'
88
import {
99
CollectFilesFilter,
10+
CollectFilesResultItem,
1011
defaultExcludePatterns,
1112
getWorkspaceFoldersByPrefixes,
1213
} from '../../shared/utilities/workspaceUtils'
@@ -108,12 +109,12 @@ export async function prepareRepoData(
108109
const { excludePatterns, filterFn } = getFilterAndExcludePattern(useAutoBuildFeature, includeInfraDiagram)
109110

110111
const ignoredExtensionMap = new Map<string, number>()
111-
const isExcluded = (relativeFilePath: string, fileSize: number) => {
112-
const isCodeFile_ = isCodeFile(relativeFilePath)
113-
const isDevFile = relativeFilePath === 'devfile.yaml'
114-
const isInfraDiagramFileExt = isInfraDiagramFile(relativeFilePath)
112+
const isExcluded = (file: CollectFilesResultItem) => {
113+
const isCodeFile_ = isCodeFile(file.relativeFilePath)
114+
const isDevFile = file.relativeFilePath === 'devfile.yaml'
115+
const isInfraDiagramFileExt = isInfraDiagramFile(file.relativeFilePath)
115116

116-
let isExcludeFile = fileSize >= fileSizeByteLimit
117+
let isExcludeFile = file.fileSizeBytes >= fileSizeByteLimit
117118
// When useAutoBuildFeature is on, only respect the gitignore rules filtered earlier and apply the size limit
118119
if (!isExcludeFile && !useAutoBuildFeature) {
119120
isExcludeFile = isDevFile || (!isCodeFile_ && (!includeInfraDiagram || !isInfraDiagramFileExt))
@@ -122,7 +123,7 @@ export async function prepareRepoData(
122123
if (isExcludeFile) {
123124
if (!isCodeFile_) {
124125
const re = /(?:\.([^.]+))?$/
125-
const extensionArray = re.exec(relativeFilePath)
126+
const extensionArray = re.exec(file.relativeFilePath)
126127
const extension = extensionArray?.length ? extensionArray[1] : undefined
127128
if (extension) {
128129
const currentCount = ignoredExtensionMap.get(extension)

packages/core/src/amazonq/util/zipProjectUtil.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
5-
65
import path from 'path'
7-
import { collectFiles, CollectFilesOptions } from '../../shared/utilities/workspaceUtils'
6+
import { collectFiles, CollectFilesOptions, CollectFilesResultItem } from '../../shared/utilities/workspaceUtils'
87
import { CurrentWsFolders } from '../commons/types'
98
import { ZipStream } from '../../shared/utilities/zipStream'
109

@@ -19,9 +18,9 @@ interface ZipProjectOptions {
1918
}
2019

2120
interface ZipProjectCustomizations {
22-
isExcluded?: (relativePath: string, fileSize: number) => boolean
23-
checkForError?: (relativePath: string, fileSize: number) => void | never
24-
computeSideEffects?: (filePath: string) => Promise<void> | void
21+
isExcluded?: (file: CollectFilesResultItem) => boolean
22+
checkForError?: (file: CollectFilesResultItem) => Error | undefined
23+
computeSideEffects?: (file: CollectFilesResultItem) => Promise<void> | void
2524
}
2625

2726
export async function zipProject(
@@ -41,15 +40,16 @@ export async function zipProject(
4140
}
4241
zippedFiles.add(file.zipFilePath)
4342

44-
if (customizations?.isExcluded && customizations.isExcluded(file.relativeFilePath, file.fileSizeBytes)) {
43+
if (customizations?.isExcluded && customizations.isExcluded(file)) {
4544
continue
4645
}
47-
if (customizations?.checkForError) {
48-
customizations.checkForError(file.relativeFilePath, file.fileSizeBytes)
46+
const errorToThrow = customizations?.checkForError ? customizations.checkForError(file) : undefined
47+
if (errorToThrow) {
48+
throw errorToThrow
4949
}
5050

5151
if (customizations?.computeSideEffects) {
52-
await customizations.computeSideEffects(file.fileUri.fsPath)
52+
await customizations.computeSideEffects(file)
5353
}
5454

5555
totalBytes += file.fileSizeBytes
@@ -58,7 +58,12 @@ export async function zipProject(
5858
const posixPath = file.zipFilePath.split(path.sep).join(path.posix.sep)
5959

6060
try {
61-
zip.writeFile(file.fileUri.fsPath, posixPath)
61+
// filepath will be out-of-sync for files with unsaved changes.
62+
if (file.isText) {
63+
zip.writeString(file.fileContent, posixPath)
64+
} else {
65+
zip.writeFile(file.fileUri.fsPath, posixPath)
66+
}
6267
} catch (error) {
6368
if (error instanceof Error && error.message.includes('File not found')) {
6469
// No-op: Skip if file was deleted or does not exist

0 commit comments

Comments
 (0)