コード例 #1
0
        /// <summary>
        /// </summary>
        /// <param name="userFilename">File Name for the </param>
        /// <param name="progress"></param>
        /// <returns></returns>
        public static async Task <UserSettings> SetupNewSite(string userFilename, IProgress <string> progress)
        {
            if (!FolderFileUtility.IsValidWindowsFileSystemFilename(userFilename))
            {
                throw new InvalidDataException("New site input must be a valid filename.");
            }

            var newSettings = new UserSettings();

            var rootDirectory = new DirectoryInfo(Path.Combine(StorageDirectory().FullName, userFilename));

            progress?.Report("Creating new settings - looking for home...");

            var fileNumber = 1;

            while (rootDirectory.Exists)
            {
                rootDirectory =
                    new DirectoryInfo(Path.Combine(StorageDirectory().FullName, $"{userFilename}-{fileNumber}"));
                rootDirectory.Refresh();
                progress?.Report($"Trying {rootDirectory.FullName}...");
                fileNumber++;
            }

            rootDirectory.Create();

            var siteRoot = new DirectoryInfo(Path.Combine(rootDirectory.FullName, "GeneratedSite"));

            newSettings.LocalSiteRootDirectory = siteRoot.FullName;

            progress?.Report($"Local Site Root set to {siteRoot.FullName}");

            newSettings.DatabaseFile =
                Path.Combine(rootDirectory.FullName, $"PointlessWaymarksCmsDatabase-{userFilename}.db");

            var mediaDirectory = new DirectoryInfo(Path.Combine(rootDirectory.FullName, "MediaArchive"));

            newSettings.LocalMediaArchive = mediaDirectory.FullName;

            progress?.Report("Adding fake default values...");

            newSettings.DefaultCreatedBy = "Pointless Waymarks CMS";
            newSettings.SiteName         = userFilename;
            newSettings.SiteUrl          = "localhost.com";
            newSettings.SiteKeywords     = "new,site";
            newSettings.SiteSummary      = "A new site.";
            newSettings.SiteAuthors      = "Pointless Waymarks CMS";
            newSettings.SiteEmailTo      = "*****@*****.**";

            SettingsFileName =
                Path.Combine(rootDirectory.FullName, $"PointlessWaymarksCmsSettings-{userFilename}.json");

            progress?.Report("Writing Settings");

            await WriteSettings(newSettings);

            progress?.Report("Setting up directory structure.");

            newSettings.VerifyOrCreateAllTopLevelFolders(progress);

            return(newSettings);
        }