diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 12f9e172d..b43112559 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ We're always looking for people to help make Readarr even better, there are a number of ways to contribute. ## Documentation ## -Setup guides, FAQ, the more information we have on the [wiki](https://wiki.servarr.com/Readarr) the better. +Setup guides, FAQ, the more information we have on the [wiki](https://wiki.servarr.com/readarr) the better. ## Development ## diff --git a/README.md b/README.md index 11e19b810..bd50f94b8 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Readarr is an ebook (and maybe eventually magazine/audiobook) collection manager [![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60)](https://readarr.com/discord) [![GitHub](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Readarr/Readarr/issues) -[![Wiki](https://img.shields.io/badge/servarr-wiki-181717.svg?maxAge=60)](https://wiki.servarr.com/Readarr) +[![Wiki](https://img.shields.io/badge/servarr-wiki-181717.svg?maxAge=60)](https://wiki.servarr.com/readarr) ## Contributors diff --git a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js index ef613eb49..ad394d638 100644 --- a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js +++ b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js @@ -129,7 +129,7 @@ class FileBrowserModalContent extends Component { className={styles.mappedDrivesWarning} kind={kinds.WARNING} > - Mapped network drives are not available when running as a Windows Service, see the FAQ for more information. + Mapped network drives are not available when running as a Windows Service, see the FAQ for more information. } diff --git a/frontend/src/Settings/Development/DevelopmentSettings.js b/frontend/src/Settings/Development/DevelopmentSettings.js index 404632e08..f7928e80b 100644 --- a/frontend/src/Settings/Development/DevelopmentSettings.js +++ b/frontend/src/Settings/Development/DevelopmentSettings.js @@ -70,7 +70,7 @@ class DevelopmentSettings extends Component { type={inputTypes.TEXT} name="metadataSource" helpText={translate('MetadataSourceHelpText')} - helpLink="https://wiki.servarr.com/Readarr_Settings#Metadata" + helpLink="https://wiki.servarr.com/readarr/settings#metadata" onChange={onInputChange} {...settings.metadataSource} /> diff --git a/frontend/src/Settings/General/UpdateSettings.js b/frontend/src/Settings/General/UpdateSettings.js index b538c1fa6..cd03ce2a3 100644 --- a/frontend/src/Settings/General/UpdateSettings.js +++ b/frontend/src/Settings/General/UpdateSettings.js @@ -68,7 +68,7 @@ function UpdateSettings(props) { type={inputTypes.TEXT} name="branch" helpText={usingExternalUpdateMechanism ? translate('UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism') : translate('UsingExternalUpdateMechanismBranchToUseToUpdateReadarr')} - helpLink="https://wiki.servarr.com/Readarr_FAQ#How_do_I_update_my_Readarr" + helpLink="https://wiki.servarr.com/readarr/faq#how-do-I-update-my-readarr" {...branch} onChange={onInputChange} readOnly={usingExternalUpdateMechanism} @@ -109,7 +109,7 @@ function UpdateSettings(props) { name="updateMechanism" values={updateOptions} helpText={translate('UpdateMechanismHelpText')} - helpLink="https://wiki.servarr.com/Readarr_FAQ#How_do_I_update_my_Readarr" + helpLink="https://wiki.servarr.com/readarr/faq#how-do-i-update-my-readarr" onChange={onInputChange} {...updateMechanism} /> diff --git a/frontend/src/Settings/Indexers/Options/IndexerOptions.js b/frontend/src/Settings/Indexers/Options/IndexerOptions.js index 469f8f70e..98c9a46fa 100644 --- a/frontend/src/Settings/Indexers/Options/IndexerOptions.js +++ b/frontend/src/Settings/Indexers/Options/IndexerOptions.js @@ -99,7 +99,7 @@ function IndexerOptions(props) { unit="minutes" helpText={translate('RssSyncIntervalHelpText')} helpTextWarning={translate('ThisWillApplyToAllIndexersPleaseFollowTheRulesSetForthByThem')} - helpLink="https://wiki.servarr.com/Readarr_FAQ#How_does_Readarr_work" + helpLink="https://wiki.servarr.com/readarr/faq#how-does-readarr-work" onChange={onInputChange} {...settings.rssSyncInterval} /> diff --git a/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js b/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js index 1e80619c9..09f18b0d4 100644 --- a/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js +++ b/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js @@ -59,7 +59,7 @@ function MetadataProvider(props) { type={inputTypes.SELECT} name="writeBookTags" helpTextWarning={translate('WriteBookTagsHelpTextWarning')} - helpLink="https://wiki.servarr.com/Readarr_Settings#Write_Metadata_to_Book_Files" + helpLink="https://wiki.servarr.com/readarr/settings#write-metadata-to-book-files" values={writeBookTagOptions} onChange={onInputChange} {...settings.writeBookTags} @@ -104,7 +104,7 @@ function MetadataProvider(props) { type={inputTypes.SELECT} name="writeAudioTags" helpTextWarning={translate('WriteBookTagsHelpTextWarning')} - helpLink="https://wiki.servarr.com/Lidarr_Settings#Write_Metadata_to_Audio_Files" + helpLink="https://wiki.servarr.com/readarr/settings#write-metadata-to-audio-files" values={writeAudioTagOptions} onChange={onInputChange} {...settings.writeAudioTags} diff --git a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js index 2b9e9fe00..afbc7c156 100644 --- a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js +++ b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js @@ -42,7 +42,7 @@ function NotificationEventItems(props) {
diff --git a/frontend/src/Settings/Tags/Tags.js b/frontend/src/Settings/Tags/Tags.js index 00a21eec9..90e00bc2b 100644 --- a/frontend/src/Settings/Tags/Tags.js +++ b/frontend/src/Settings/Tags/Tags.js @@ -14,7 +14,7 @@ function Tags(props) { } = props; if (!items.length) { - const wikiLink = here; + const wikiLink = here; return (
{translate('NoTagsHaveBeenAddedYet', [wikiLink])} diff --git a/frontend/src/Store/Selectors/createHealthCheckSelector.js b/frontend/src/Store/Selectors/createHealthCheckSelector.js index 2bd30e22f..e924f0554 100644 --- a/frontend/src/Store/Selectors/createHealthCheckSelector.js +++ b/frontend/src/Store/Selectors/createHealthCheckSelector.js @@ -12,7 +12,7 @@ function createHealthCheckSelector() { source: 'UI', type: 'warning', message: 'Could not connect to SignalR, UI won\'t update', - wikiUrl: 'https://wiki.servarr.com/Readarr_System#could_not_connect_to_signalr' + wikiUrl: 'https://wiki.servarr.com/readarr/system#could-not-connect-to-signalr' }); } diff --git a/frontend/src/login.html b/frontend/src/login.html index 5dc2807e8..c2a372091 100644 --- a/frontend/src/login.html +++ b/frontend/src/login.html @@ -252,7 +252,7 @@ Forgot your password? diff --git a/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs index 3225163ee..5deded88a 100644 --- a/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs +++ b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs @@ -10,9 +10,9 @@ namespace NzbDrone.Core.Test.HealthCheck { private const string WikiRoot = "https://wiki.servarr.com/"; - [TestCase("I blew up because of some weird user mistake", null, WikiRoot + "Readarr_System#i_blew_up_because_of_some_weird_user_mistake")] - [TestCase("I blew up because of some weird user mistake", "#my_health_check", WikiRoot + "Readarr_System#my_health_check")] - [TestCase("I blew up because of some weird user mistake", "Custom_Page#my_health_check", WikiRoot + "Custom_Page#my_health_check")] + [TestCase("I blew up because of some weird user mistake", null, WikiRoot + "readarr/system#i-blew-up-because-of-some-weird-user-mistake")] + [TestCase("I blew up because of some weird user mistake", "#my-health-check", WikiRoot + "readarr/system#my-health-check")] + [TestCase("I blew up because of some weird user mistake", "custom-page#my-health-check", WikiRoot + "readarr/custom-page#my-health-check")] public void should_format_wiki_url(string message, string wikiFragment, string expectedUrl) { var subject = new NzbDrone.Core.HealthCheck.HealthCheck(typeof(HealthCheckBase), HealthCheckResult.Warning, message, wikiFragment); diff --git a/src/NzbDrone.Core/Datastore/DbFactory.cs b/src/NzbDrone.Core/Datastore/DbFactory.cs index 76636820d..2db023b5f 100644 --- a/src/NzbDrone.Core/Datastore/DbFactory.cs +++ b/src/NzbDrone.Core/Datastore/DbFactory.cs @@ -115,10 +115,10 @@ namespace NzbDrone.Core.Datastore if (OsInfo.IsOsx) { - throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/Readarr_FAQ#I_use_Readarr_on_a_Mac_and_it_suddenly_stopped_working_What_happened", e, fileName); + throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/readarr/faq#i-use-readarr-on-a-mac-and-it-suddenly-stopped-working-what-happened", e, fileName); } - throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/Readarr_FAQ#I_am_getting_an_error_Database_disk_image_is_malformed", e, fileName); + throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://wiki.servarr.com/readarr/faq#i-am-getting-an-error-database-disk-image-is-malformed", e, fileName); } catch (Exception e) { diff --git a/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs index 0d2774cb0..d5c2eeddd 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs @@ -65,15 +65,15 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (!calibreIsLocal) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and root folder settings.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and root folder settings.", "#bad-remote-path-mapping"); } else if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker-bad-remote-path-mapping"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local calibre server for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad_download_client_settings"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local calibre server for root folder {folder.Name} reports files in {libraryFolder} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad-download-client-settings"); } } @@ -81,15 +81,15 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre server for root folder {folder.Name} places downloads in {libraryFolder} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre server for root folder {folder.Name} places downloads in {libraryFolder} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker-bad-remote-path-mapping"); } else if (!calibreIsLocal) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre server for root folder {folder.Name} places downloads in {libraryFolder} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre server for root folder {folder.Name} places downloads in {libraryFolder} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.", "#bad-remote-path-mapping"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre server for root folder {folder.Name} places downloads in {libraryFolder} but Readarr cannot see this directory. You may need to adjust the folder's permissions or add a remote path mapping if calibre is running in docker", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre server for root folder {folder.Name} places downloads in {libraryFolder} but Readarr cannot see this directory. You may need to adjust the folder's permissions or add a remote path mapping if calibre is running in docker", "#permissions-error"); } } @@ -97,21 +97,21 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre server for root folder {folder.Name} listed file {file} but this file does not appear to exist inside the container. Review permissions for {libraryFolder} and PUID/PGID container settings", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; calibre server for root folder {folder.Name} listed file {file} but this file does not appear to exist inside the container. Review permissions for {libraryFolder} and PUID/PGID container settings", "#docker-bad-remote-path-mapping"); } else if (!calibreIsLocal) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre server for root folder {folder.Name} listed file {file} but this file does not appear to exist. Review permissions for {libraryFolder}", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote calibre server for root folder {folder.Name} listed file {file} but this file does not appear to exist. Review permissions for {libraryFolder}", "#permissions-error"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre server for root folder {folder.Name} listed file {file} but Readarr cannot see this file. Review permissions for {libraryFolder}", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre server for root folder {folder.Name} listed file {file} but Readarr cannot see this file. Review permissions for {libraryFolder}", "#permissions-error"); } } if (!libraryFolder.PathEquals(folder.Path)) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not the same as the root folder path {folder.Path} you chose. You may need to edit any remote path mapping or delete the root folder and re_create with the correct path", "#calibre_root_does_not_match"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Calibre for root folder {folder.Name} reports files in {libraryFolder} but this is not the same as the root folder path {folder.Path} you chose. You may need to edit any remote path mapping or delete the root folder and re-create with the correct path", "#calibre-root-does-not-match"); } } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs index 22ebf4531..630058bd1 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs @@ -43,7 +43,7 @@ namespace NzbDrone.Core.HealthCheck.Checks _logger.Debug(ex, "Unable to communicate with {0}", downloadClient.Definition.Name); var message = $"Unable to communicate with {downloadClient.Definition.Name}."; - return new HealthCheck(GetType(), HealthCheckResult.Error, $"{message} {ex.Message}", "#unable_to_communicate_with_download_client"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"{message} {ex.Message}", "#unable-to-communicate-with-download-client"); } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientRootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientRootFolderCheck.cs index 3a10dbbce..2b0f2f71a 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientRootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientRootFolderCheck.cs @@ -50,7 +50,7 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (rootFolders.Any(r => r.Path.PathEquals(folder.FullPath))) { - return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientCheckDownloadingToRoot"), client.Definition.Name, folder.FullPath), "#downloads_in_root_folder"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientCheckDownloadingToRoot"), client.Definition.Name, folder.FullPath), "#downloads-in-root-folder"); } } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs index 37b3a1aab..2cbe51001 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs @@ -37,10 +37,10 @@ namespace NzbDrone.Core.HealthCheck.Checks if (backOffProviders.Count == enabledProviders.Count) { - return new HealthCheck(GetType(), HealthCheckResult.Error, "All download clients are unavailable due to failures", "#download_clients_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Error, "All download clients are unavailable due to failures", "#download-clients-are-unavailable-due-to-failures"); } - return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Download clients unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#download_clients_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Download clients unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#download-clients-are-unavailable-due-to-failures"); } } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs index 22e420fd8..d4d4bdf71 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs @@ -31,13 +31,13 @@ namespace NzbDrone.Core.HealthCheck.Checks if (!_fingerprintingService.IsSetup()) { - return new HealthCheck(GetType(), HealthCheckResult.Warning, $"fpcalc could not be found. Audio fingerprinting disabled.", "#fpcalc_missing"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, $"fpcalc could not be found. Audio fingerprinting disabled.", "#fpcalc-missing"); } var fpcalcVersion = _fingerprintingService.FpcalcVersion(); if (fpcalcVersion == null || fpcalcVersion < new Version("1.4.3")) { - return new HealthCheck(GetType(), HealthCheckResult.Warning, $"You have an old version of fpcalc. Please upgrade to 1.4.3.", "#fpcalc_upgrade"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, $"You have an old version of fpcalc. Please upgrade to 1.4.3.", "#fpcalc-upgrade"); } return new HealthCheck(GetType()); diff --git a/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs index f76f678bc..f5849b207 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs @@ -37,10 +37,10 @@ namespace NzbDrone.Core.HealthCheck.Checks if (backOffProviders.Count == enabledProviders.Count) { - return new HealthCheck(GetType(), HealthCheckResult.Error, "All import lists are unavailable due to failures", "#import_lists_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Error, "All import lists are unavailable due to failures", "#import-lists-are-unavailable-due-to-failures"); } - return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Import lists unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.ImportList.Definition.Name))), "#import_lsits_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Import lists unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.ImportList.Definition.Name))), "#import-lsits-are-unavailable-due-to-failures"); } } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs index 6e15bc982..215d71736 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs @@ -41,10 +41,10 @@ namespace NzbDrone.Core.HealthCheck.Checks if (backOffProviders.Count == enabledProviders.Count) { - return new HealthCheck(GetType(), HealthCheckResult.Error, "All indexers are unavailable due to failures", "#indexers_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Error, "All indexers are unavailable due to failures", "#indexers-are-unavailable-due-to-failures"); } - return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Indexers unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#indexers_are_unavailable_due_to_failures"); + return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format("Indexers unavailable due to failures: {0}", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#indexers-are-unavailable-due-to-failures"); } } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs index 3b5cbaf74..0fdf9a17c 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs @@ -29,7 +29,7 @@ namespace NzbDrone.Core.HealthCheck.Checks if (mounts.Any()) { - return new HealthCheck(GetType(), HealthCheckResult.Error, "Mount containing a author path is mounted read-only: " + string.Join(",", mounts.Select(m => m.Name)), "#author_mount_ro"); + return new HealthCheck(GetType(), HealthCheckResult.Error, "Mount containing a author path is mounted read-only: " + string.Join(",", mounts.Select(m => m.Name)), "#author-mount-ro"); } return new HealthCheck(GetType()); diff --git a/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs index b73ab9bdd..af116cdba 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs @@ -67,15 +67,15 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (!status.IsLocalhost) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#bad-remote-path-mapping"); } else if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker-bad-remote-path-mapping"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad_download_client_settings"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local download client {client.Definition.Name} places downloads in {folder.FullPath} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad-download-client-settings"); } } @@ -83,15 +83,15 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker-bad-remote-path-mapping"); } else if (!status.IsLocalhost) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} places downloads in {folder.FullPath} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.", "#bad-remote-path-mapping"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Download client {client.Definition.Name} places downloads in {folder.FullPath} but Readarr cannot see this directory. You may need to adjust the folder's permissions.", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Download client {client.Definition.Name} places downloads in {folder.FullPath} but Readarr cannot see this directory. You may need to adjust the folder's permissions.", "#permissions-error"); } } } @@ -127,7 +127,7 @@ namespace NzbDrone.Core.HealthCheck.Checks var trackPath = failureMessage.BookInfo.Path; if (_diskProvider.FileExists(trackPath)) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Readarr can see but not access downloaded track {trackPath}. Likely permissions error.", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Readarr can see but not access downloaded track {trackPath}. Likely permissions error.", "#permissions-error"); } else { @@ -156,36 +156,36 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (!status.IsLocalhost) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#bad-remote-path-mapping"); } else if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your remote path mappings and download client settings.", "#docker-bad-remote-path-mapping"); } else { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad_download_client_settings"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Local download client {client.Definition.Name} reported files in {dlpath} but this is not a valid {_osInfo.Name} path. Review your download client settings.", "#bad-download-client-settings"); } } if (_diskProvider.FolderExists(dlpath)) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Readarr can see but not access download directory {dlpath}. Likely permissions error.", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Readarr can see but not access download directory {dlpath}. Likely permissions error.", "#permissions-error"); } // if it's a remote client/docker, likely missing path mappings if (_osInfo.IsDocker) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker_bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"You are using docker; download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "#docker-bad-remote-path-mapping"); } else if (!status.IsLocalhost) { - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist. Likely missing remote path mapping.", "#bad_remote_path_mapping"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Remote download client {client.Definition.Name} reported files in {dlpath} but this directory does not appear to exist. Likely missing remote path mapping.", "#bad-remote-path-mapping"); } else { // path mappings shouldn't be needed locally so probably a permissions issue - return new HealthCheck(GetType(), HealthCheckResult.Error, $"Download client {client.Definition.Name} reported files in {dlpath} but Readarr cannot see this directory. You may need to adjust the folder's permissions.", "#permissions_error"); + return new HealthCheck(GetType(), HealthCheckResult.Error, $"Download client {client.Definition.Name} reported files in {dlpath} but Readarr cannot see this directory. You may need to adjust the folder's permissions.", "#permissions-error"); } } catch (DownloadClientException ex) diff --git a/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs index 8a4795a0c..aad3a6708 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs @@ -50,11 +50,11 @@ namespace NzbDrone.Core.HealthCheck.Checks { if (missingRootFolders.Count == 1) { - return new HealthCheck(GetType(), HealthCheckResult.Error, "Missing root folder: " + missingRootFolders.First(), "#missing_root_folder"); + return new HealthCheck(GetType(), HealthCheckResult.Error, "Missing root folder: " + missingRootFolders.First(), "#missing-root-folder"); } var message = string.Format("Multiple root folders are missing: {0}", string.Join(" | ", missingRootFolders)); - return new HealthCheck(GetType(), HealthCheckResult.Error, message, "#missing_root_folder"); + return new HealthCheck(GetType(), HealthCheckResult.Error, message, "#missing-root-folder"); } return new HealthCheck(GetType()); diff --git a/src/NzbDrone.Core/HealthCheck/HealthCheck.cs b/src/NzbDrone.Core/HealthCheck/HealthCheck.cs index f594376e8..fd55eb89f 100644 --- a/src/NzbDrone.Core/HealthCheck/HealthCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/HealthCheck.cs @@ -34,12 +34,12 @@ namespace NzbDrone.Core.HealthCheck private static string MakeWikiFragment(string message) { - return "#" + CleanFragmentRegex.Replace(message.ToLower(), string.Empty).Replace(' ', '_'); + return "#" + CleanFragmentRegex.Replace(message.ToLower(), string.Empty).Replace(' ', '-'); } private static HttpUri MakeWikiUrl(string fragment) { - return new HttpUri("https://wiki.servarr.com/Readarr_System#") + new HttpUri(fragment); + return new HttpUri("https://wiki.servarr.com/readarr/system#") + new HttpUri(fragment); } } diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs index 0db3b9144..4bdd413ac 100644 --- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs +++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs @@ -29,7 +29,7 @@ namespace NzbDrone.Core.Notifications.CustomScript public override string Name => "Custom Script"; - public override string Link => "https://wiki.servarr.com/Readarr_Settings#Connections"; + public override string Link => "https://wiki.servarr.com/readarr/settings#Connections"; public override ProviderMessage Message => new ProviderMessage("Testing will execute the script with the EventType set to Test, ensure your script handles this correctly", ProviderMessageType.Warning); diff --git a/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs b/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs index 5ec819ffd..b0702b010 100644 --- a/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs +++ b/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs @@ -38,10 +38,10 @@ namespace NzbDrone.Core.Notifications.Twitter AuthorizeNotification = "startOAuth"; } - [FieldDefinition(0, Label = "Consumer Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer key from a Twitter application", HelpLink = "https://wiki.servarr.com/Useful_Tools#Twitter_Connect")] + [FieldDefinition(0, Label = "Consumer Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer key from a Twitter application", HelpLink = "https://wiki.servarr.com/useful-tools#twitter-connect")] public string ConsumerKey { get; set; } - [FieldDefinition(1, Label = "Consumer Secret", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer secret from a Twitter application", HelpLink = "https://github.com/Readarr/Readarr/wiki/Twitter-Notifications")] + [FieldDefinition(1, Label = "Consumer Secret", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer secret from a Twitter application", HelpLink = "https://wiki.servarr.com/useful-tools#twitter-connect")] public string ConsumerSecret { get; set; } [FieldDefinition(2, Label = "Access Token", Privacy = PrivacyLevel.ApiKey, Advanced = true)] diff --git a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs index 11fd73a8e..afa4bf6fc 100644 --- a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs +++ b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs @@ -16,7 +16,7 @@ namespace NzbDrone.Core.Notifications.Webhook _proxy = proxy; } - public override string Link => "https://wiki.servarr.com/Readarr_Settings#Connect"; + public override string Link => "https://wiki.servarr.com/readarr/settings#connect"; public override void OnGrab(GrabMessage message) { diff --git a/src/Readarr.Api.V1/ProviderResource.cs b/src/Readarr.Api.V1/ProviderResource.cs index c504e65cb..6d256e403 100644 --- a/src/Readarr.Api.V1/ProviderResource.cs +++ b/src/Readarr.Api.V1/ProviderResource.cs @@ -38,7 +38,7 @@ namespace Readarr.Api.V1 Tags = definition.Tags, Fields = SchemaBuilder.ToSchema(definition.Settings), - InfoLink = string.Format("https://wiki.servarr.com/Readarr_Supported_{0}", + InfoLink = string.Format("https://wiki.servarr.com/readarr/supported-{0}", definition.Implementation.ToLower()) }; }