public static string GetFullOutputPath(this IStaticSite @this, string path) { if (path == null) { return(@this.OutputDirectory); } return(Path.Combine(@this.OutputDirectory, path)); }
public TextInputContext(IStaticSite context, IInput input) { Input = input; InputPath = input.GetFullInputPath(context); Site = context; // add fixed values Items["name"] = System.IO.Path.GetFileName(input.RelativeName); Items["path"] = input.RelativeName; Items["fullPath"] = input.Path; }
public IEnumerable <IInput> Get(IStaticSite context) { var dir = new DirectoryInfo(Path.Combine(context.RootDirectory, _path)); if (!dir.Exists) { return(Enumerable.Empty <IInput>()); } return(GetDirectoryFiles(context, dir, dir, true)); }
private async Task <InputItems> ExecuteAsync(IStaticSite site, IInput input, ITextMiddleware[] middlewares, bool write) { try { var textContext = new TextInputContext(site, input); var executor = new InputTransformer(_readMiddleware, middlewares, write ? _writer : null, textContext); await executor.ExecuteAsync().ConfigureAwait(false); return(textContext.Items); } catch (Exception e) { throw new ParseException($"Error while parsing file {input.RelativeName}", e); } }
public async Task TransformAsync(IStaticSite ctx, IInput input) { var origin = input.GetFullInputPath(ctx); var destination = input.GetFullOuputPath(ctx); var destinationdir = Path.GetDirectoryName(destination); if (!Directory.Exists(destinationdir)) { Directory.CreateDirectory(destinationdir); } using (var reader = File.OpenRead(origin)) using (var writer = new FileStream(destination, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { await reader.CopyToAsync(writer).ConfigureAwait(false); } }
private IEnumerable <IInput> GetDirectoryFiles(IStaticSite context, DirectoryInfo dir, DirectoryInfo rootDir, bool root) { for (var i = 0; i < _patterns.Length; i++) { foreach (var file in dir.GetFiles(_patterns[i])) { if (root) { if (Exclude != null && Exclude.Contains(file.Name, StringComparer.Ordinal)) { continue; } yield return(new FileInput(file.Name, file.FullName)); } else { var relativeDir = dir.FullName.Substring(rootDir.FullName.Length + 1); yield return(new FileInput(Path.Combine(relativeDir, file.Name), file.FullName)); } } } if (Recursive) { foreach (var subDir in dir.GetDirectories()) { if (root) { if (Exclude != null && Exclude.Contains(subDir.Name, StringComparer.Ordinal)) { continue; } } foreach (var file in GetDirectoryFiles(context, subDir, rootDir, false)) { yield return(file); } } } }
public static System.Threading.Tasks.Task RunAsync(string[] args, IStaticSite ctx) { return(RundotNetScript(args, ctx)); }
public Stream Open(IStaticSite ctx) { return(File.OpenRead(Path ?? System.IO.Path.Combine(ctx.InputDirectory, RelativeName))); }
public Task TransformAsync(IStaticSite site, IInput input) => ExecuteAsync(site, input, _transformMiddlewares, true);
public Task <InputItems> PrepareAsync(IStaticSite site, IInput input) => ExecuteAsync(site, input, _prepareMiddlewares, false);
public bool Accept(IStaticSite site, IInput input) => _filter(input);
public static async System.Threading.Tasks.Task RunRoslynAsync(string[] args, IStaticSite site) { //var globals = new Scripting.Globals { Site = site}; var txt = File.ReadAllText("FlipLeaf.csx"); var options = ScriptOptions.Default .WithReferences(typeof(IStaticSite).Assembly) ; await CSharpScript.RunAsync(txt, options, null); }
public FlipLeafFileProvider(IStaticSite site) { _site = site; }
public FluidParser(IStaticSite ctx) { _ctx = ctx; }
public CustomLinkInlineRendererExtension(IStaticSite site) { _site = site; }
public Task <InputItems> PrepareAsync(IStaticSite site, IInput input) => Task.FromResult(InputItems.Empty);
public bool Accept(IStaticSite ctx, IInput input) => true;
public static string GetFullOuputPath(this IInput @this, IStaticSite context) => context.GetFullOutputPath(@this.RelativeName);
public static async System.Threading.Tasks.Task RundotNetScript(string[] args, IStaticSite ctx) { var logger = new ScriptLogger(ScriptConsole.Default.Out, true); var dependencyResolver = new RuntimeDependencyResolver(type => ((level, message) => { if (level == LogLevel.Debug) { logger.Verbose(message); } if (level == LogLevel.Info) { logger.Log(message); } })); var code = Microsoft.CodeAnalysis.Text.SourceText.From(File.ReadAllText("FlipLeaf.csx")); var scriptContext = new ScriptContext(code, Environment.CurrentDirectory ?? Directory.GetCurrentDirectory(), args, scriptMode: Dotnet.Script.DependencyModel.Context.ScriptMode.REPL); var compiler = new ScriptCompiler(logger, dependencyResolver); var runner = new ScriptRunner(compiler, logger, ScriptConsole.Default); await runner.Execute <int>(scriptContext); }