UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

45 lines • 1.96 kB
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= import { specOf } from "../../spec/builtins.js"; import { FlagView } from "../../spec/flag_view.js"; import { IOResult } from "../../../io/types.js"; import { posixNormpath } from "../../../utils/path.js"; import { missingOperandError } from "../../spec/usage.js"; const ENC = new TextEncoder(); function parseFlags(bag) { const fl = new FlagView(bag, specOf('readlink')); return { canonicalize: fl.asBool('canonicalize'), canonicalizeExisting: fl.asBool('canonicalize_existing'), canonicalizeMissing: fl.asBool('canonicalize_missing'), noNewline: fl.asBool('no_newline'), }; } export function readlinkGeneric(paths, _texts, ctx) { if (paths.length === 0) throw missingOperandError('readlink', null); const parsed = parseFlags(ctx.flags); const normalize = parsed.canonicalize || parsed.canonicalizeExisting || parsed.canonicalizeMissing; const noNewline = parsed.noNewline; const results = []; for (const p of paths) { results.push(normalize ? posixNormpath(p.virtual) : p.virtual); } let text = results.join('\n'); if (!noNewline) text += '\n'; const out = ENC.encode(text); return [out, new IOResult()]; } //# sourceMappingURL=readlink.js.map