diff options
| author | Dax <[email protected]> | 2026-04-15 10:26:20 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-15 14:26:20 +0000 |
| commit | be9432a893dd1662c10ff41c7ab552bcba8f3e1b (patch) | |
| tree | f49000b3dd9c3bea5247d319e8fcbd4fb879b7b0 /packages/shared/src/util/glob.ts | |
| parent | af20191d1cd60a7f4a421ad81eca5053f7deace1 (diff) | |
| download | opencode-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.ts | 34 |
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 }) + } +} |
