Esempio n. 1
0
        public static string GetFullOutputPath(this IStaticSite @this, string path)
        {
            if (path == null)
            {
                return(@this.OutputDirectory);
            }

            return(Path.Combine(@this.OutputDirectory, path));
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
                }
        }
Esempio n. 6
0
        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);
                    }
                }
            }
        }
Esempio n. 7
0
 public static System.Threading.Tasks.Task RunAsync(string[] args, IStaticSite ctx)
 {
     return(RundotNetScript(args, ctx));
 }
Esempio n. 8
0
 public Stream Open(IStaticSite ctx)
 {
     return(File.OpenRead(Path ?? System.IO.Path.Combine(ctx.InputDirectory, RelativeName)));
 }
Esempio n. 9
0
 public Task TransformAsync(IStaticSite site, IInput input) => ExecuteAsync(site, input, _transformMiddlewares, true);
Esempio n. 10
0
 public Task <InputItems> PrepareAsync(IStaticSite site, IInput input) => ExecuteAsync(site, input, _prepareMiddlewares, false);
Esempio n. 11
0
 public bool Accept(IStaticSite site, IInput input) => _filter(input);
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public FlipLeafFileProvider(IStaticSite site)
 {
     _site = site;
 }
Esempio n. 14
0
 public FluidParser(IStaticSite ctx)
 {
     _ctx = ctx;
 }
Esempio n. 15
0
 public CustomLinkInlineRendererExtension(IStaticSite site)
 {
     _site = site;
 }
Esempio n. 16
0
 public Task <InputItems> PrepareAsync(IStaticSite site, IInput input) => Task.FromResult(InputItems.Empty);
Esempio n. 17
0
 public bool Accept(IStaticSite ctx, IInput input) => true;
Esempio n. 18
0
 public static string GetFullOuputPath(this IInput @this, IStaticSite context) => context.GetFullOutputPath(@this.RelativeName);
Esempio n. 19
0
        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);
        }