private EvaluationResult UnsafeOutputFile(Context context, ModuleLiteral env, EvaluationStackFrame args) { ThrowIfNotAllowed(context, OutputFile); var path = Args.AsPath(args, 0); var rewriteCount = Args.AsNumberOrEnumValueOptional(args, 1) ?? 1; return(EvaluationResult.Create(new FileArtifact(path, rewriteCount))); }
private EvaluationResult SealSourceDirectory(Context context, ModuleLiteral env, EvaluationStackFrame args) { AbsolutePath path; SealDirectoryKind sealDirectoryKind; string[] tags; string description; string[] patterns; if (args.Length > 0 && args[0].Value is ObjectLiteral) { var obj = Args.AsObjectLiteral(args, 0); var directory = Converter.ExtractDirectory(obj, m_sealRoot, allowUndefined: false); path = directory.Path; var include = Converter.ExtractStringLiteral(obj, m_sealInclude, s_includeMap.Keys, allowUndefined: true); sealDirectoryKind = include != null ? s_includeMap[include] : SealDirectoryKind.SourceTopDirectoryOnly; tags = Converter.ExtractStringArray(obj, m_sealTags, allowUndefined: true); description = Converter.ExtractString(obj, m_sealDescription, allowUndefined: true); patterns = Converter.ExtractStringArray(obj, m_sealPatterns, allowUndefined: true); } else { path = Args.AsPath(args, 0, false); var optionAsEnumValue = Args.AsNumberOrEnumValueOptional(args, 1); var option = optionAsEnumValue.HasValue ? (SealSourceDirectoryOption)optionAsEnumValue.Value : SealSourceDirectoryOption.TopDirectoryOnly; sealDirectoryKind = option == SealSourceDirectoryOption.AllDirectories ? SealDirectoryKind.SourceAllDirectories : SealDirectoryKind.SourceTopDirectoryOnly; tags = Args.AsStringArrayOptional(args, 2); description = Args.AsStringOptional(args, 3); patterns = Args.AsStringArrayOptional(args, 4); } DirectoryArtifact sealedDirectoryArtifact; if (!context.GetPipConstructionHelper().TrySealDirectory( directoryRoot: path, contents: s_emptySealContents, outputDirectorycontents: s_emptyOutputDirectoryContents, kind: sealDirectoryKind, tags: tags, description: description, patterns: patterns, sealedDirectory: out sealedDirectoryArtifact)) { // Error has been logged return(EvaluationResult.Error); } var result = new StaticDirectory(sealedDirectoryArtifact, sealDirectoryKind, s_emptySealContents.WithCompatibleComparer(OrdinalPathOnlyFileArtifactComparer.Instance)); return(new EvaluationResult(result)); }
private static EvaluationResult SealSourceDirectory(Context context, ModuleLiteral env, EvaluationStackFrame args) { AbsolutePath path = Args.AsPath(args, 0, false); var optionAsEnumValue = Args.AsNumberOrEnumValueOptional(args, 1); var option = optionAsEnumValue.HasValue ? (SealSourceDirectoryOption)optionAsEnumValue.Value : SealSourceDirectoryOption.TopDirectoryOnly; var tags = Args.AsStringArrayOptional(args, 2); var description = Args.AsStringOptional(args, 3); var patterns = Args.AsStringArrayOptional(args, 4); var sealDirectoryKind = option == SealSourceDirectoryOption.AllDirectories ? SealDirectoryKind.SourceAllDirectories : SealDirectoryKind.SourceTopDirectoryOnly; DirectoryArtifact sealedDirectoryArtifact; if (!context.GetPipConstructionHelper().TrySealDirectory(path, s_emptySealContents, sealDirectoryKind, tags, description, patterns, out sealedDirectoryArtifact)) { // Error has been logged return(EvaluationResult.Error); } var result = new StaticDirectory(sealedDirectoryArtifact, sealDirectoryKind, s_emptySealContents.WithCompatibleComparer(OrdinalPathOnlyFileArtifactComparer.Instance)); return(new EvaluationResult(result)); }