示例#1
0
        internal DirectoryInfo CreateContentDirectory(DirectoryInfo outputPath)
        {
            var model = new LaunchPageModel(Manifest, AppInfo)
            {
                ContentDirectory = "./Web Files",
                Launcher         = outputPath.GetFiles("*.application").First().Name,
                Installer        = outputPath.GetFiles("setup.exe").FirstOrDefault()?.Name ?? "#"
            };

            if (model.AppInfo.Links == null)
            {
                model.AppInfo.Links = new LinkList();
            }
            var webFilesDir = Directory.CreateDirectory(Path.Combine(WorkingDirectory.FullName, "Web Files"));
            var otherFiles  = SourceDirectory.EnumerateFiles("*", SearchOption.AllDirectories).Where(f => !f.Extension.Contains("cshtml"));

            foreach (var otherFile in otherFiles)
            {
                var targetRelativePath = otherFile.FullName.Replace(SourceDirectory.FullName, string.Empty).Substring(1);
                var fullPath           = Path.Combine(webFilesDir.FullName, targetRelativePath);
                Directory.CreateDirectory(new FileInfo(fullPath).Directory.FullName);
                otherFile.CopyTo(
                    fullPath, true);
            }

            var templateFiles = SourceDirectory.EnumerateFiles("*.cshtml", SearchOption.AllDirectories).Where(f => f.Name.ToLower() != "index.cshtml");

            foreach (var templateFile in templateFiles)
            {
                var targetRelativePath = templateFile.FullName.Replace(SourceDirectory.FullName, string.Empty).Substring(1);
                var fullPath           = Path.Combine(webFilesDir.FullName, targetRelativePath);
                Directory.CreateDirectory(new FileInfo(fullPath).Directory.FullName);
                var compile = Engine.RunCompile(templateFile.Name, typeof(LaunchPageModel), model);
                File.WriteAllText(compile, fullPath);
            }
            var indexFile = SourceDirectory.GetFiles("index.cshtml").FirstOrDefault();

            if (indexFile != null)
            {
                var indexDestPath = Path.Combine(WorkingDirectory.FullName,
                                                 indexFile.FullName.Replace(indexFile.Extension, ".html")
                                                 .Replace(SourceDirectory.FullName, string.Empty)
                                                 .Substring(1));

                var indexOutput = Engine.RunCompile(indexFile.Name, typeof(LaunchPageModel), model);
                File.WriteAllText(indexDestPath, indexOutput);
            }
            foreach (var file in WorkingDirectory.EnumerateFiles("*.cshtml", SearchOption.AllDirectories))
            {
                file.Delete();
            }
            return(WorkingDirectory);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        public IEnumerable <IFile> EnumerateFiles(FileSearchOptions options = null)
        {
            var files = WorkingDirectory.Exists ? WorkingDirectory.EnumerateFiles("*", SearchOption.AllDirectories) : new List <FileInfo>();

            foreach (var enumerateFile in files)
            {
                var name = enumerateFile.FullName.Replace(WorkingDirectory.FullName + "\\", "");
                var f    = new FileFsBased(FileAccess.ReadWrite, new FileDescriptor {
                    DateTime = enumerateFile.LastWriteTime, Filename = name, Path = enumerateFile.FullName
                });
                yield return(f);
            }
        }