diff --git a/cli/src/commands/sync/sync.ts b/cli/src/commands/sync/sync.ts index a5dde194b8..b672799106 100644 --- a/cli/src/commands/sync/sync.ts +++ b/cli/src/commands/sync/sync.ts @@ -1986,7 +1986,7 @@ interface ChangeTracker { } async function addToChangedIfNotExists(p: string, tracker: ChangeTracker) { - const isScript = exts.some((e) => p.endsWith(e)); + const isScript = exts.some((e) => p.endsWith(e)) && !isFileResource(p) && !isFilesetResource(p); if (isScript) { if (isFlowPath(p)) { const folder = extractFolderPath(p, "flow")!; diff --git a/cli/src/types.ts b/cli/src/types.ts index a2bc8bea69..98ef694044 100644 --- a/cli/src/types.ts +++ b/cli/src/types.ts @@ -286,6 +286,9 @@ export function getTypeStrFromPath( if (p.startsWith("dependencies" + SEP)) { return "workspace_dependencies"; } + if (isFileResource(p) || isFilesetResource(p)) { + return "resource"; + } const parsed = path.parse(p); if ( parsed.ext == ".go" || @@ -349,9 +352,6 @@ export function getTypeStrFromPath( ) { return typeEnding; } else { - if (isFileResource(p) || isFilesetResource(p)) { - return "resource"; - } throw new Error("Could not infer type of path " + JSON.stringify(parsed)); } } diff --git a/cli/test/utils_unit.test.ts b/cli/test/utils_unit.test.ts index 47edf45236..e5bcea4b92 100644 --- a/cli/test/utils_unit.test.ts +++ b/cli/test/utils_unit.test.ts @@ -270,6 +270,10 @@ describe("getTypeStrFromPath", () => { test("detects fileset resource files as resource type", () => { expect(getTypeStrFromPath("f/test/my_config.fileset/config.yaml")).toBe("resource"); expect(getTypeStrFromPath("u/admin/templates.fileset/path/to/file.txt")).toBe("resource"); + // fileset files with script-like extensions should still be detected as resource + expect(getTypeStrFromPath("f/test/my_queries.fileset/query.sql")).toBe("resource"); + expect(getTypeStrFromPath("f/test/my_queries.fileset/script.py")).toBe("resource"); + expect(getTypeStrFromPath("f/test/my_queries.fileset/nested/dir/file.ts")).toBe("resource"); }); test("throws for unknown type", () => {