summaryrefslogtreecommitdiffhomepage
path: root/packages/shared/src/util/glob.ts
diff options
context:
space:
mode:
authorDax <[email protected]>2026-04-15 10:26:20 -0400
committerGitHub <[email protected]>2026-04-15 14:26:20 +0000
commitbe9432a893dd1662c10ff41c7ab552bcba8f3e1b (patch)
treef49000b3dd9c3bea5247d319e8fcbd4fb879b7b0 /packages/shared/src/util/glob.ts
parentaf20191d1cd60a7f4a421ad81eca5053f7deace1 (diff)
downloadopencode-be9432a893dd1662c10ff41c7ab552bcba8f3e1b.tar.gz
opencode-be9432a893dd1662c10ff41c7ab552bcba8f3e1b.zip
shared package (#22626)
Diffstat (limited to 'packages/shared/src/util/glob.ts')
-rw-r--r--packages/shared/src/util/glob.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/shared/src/util/glob.ts b/packages/shared/src/util/glob.ts
new file mode 100644
index 000000000..febf062da
--- /dev/null
+++ b/packages/shared/src/util/glob.ts
@@ -0,0 +1,34 @@
+import { glob, globSync, type GlobOptions } from "glob"
+import { minimatch } from "minimatch"
+
+export namespace Glob {
+ export interface Options {
+ cwd?: string
+ absolute?: boolean
+ include?: "file" | "all"
+ dot?: boolean
+ symlink?: boolean
+ }
+
+ function toGlobOptions(options: Options): GlobOptions {
+ return {
+ cwd: options.cwd,
+ absolute: options.absolute,
+ dot: options.dot,
+ follow: options.symlink ?? false,
+ nodir: options.include !== "all",
+ }
+ }
+
+ export async function scan(pattern: string, options: Options = {}): Promise<string[]> {
+ return glob(pattern, toGlobOptions(options)) as Promise<string[]>
+ }
+
+ export function scanSync(pattern: string, options: Options = {}): string[] {
+ return globSync(pattern, toGlobOptions(options)) as string[]
+ }
+
+ export function match(pattern: string, filepath: string): boolean {
+ return minimatch(filepath, pattern, { dot: true })
+ }
+}