diff --git a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js index c05e2674b..3f1d337f2 100644 --- a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js +++ b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js @@ -128,7 +128,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/General/UpdateSettings.js b/frontend/src/Settings/General/UpdateSettings.js index b5cdd3b44..52ba1bbd4 100644 --- a/frontend/src/Settings/General/UpdateSettings.js +++ b/frontend/src/Settings/General/UpdateSettings.js @@ -63,7 +63,7 @@ function UpdateSettings(props) { type={inputTypes.TEXT} name="branch" helpText={usingExternalUpdateMechanism ? 'Branch used by external update mechanism' : 'Branch to use to update Readarr'} - helpLink="https://github.com/Readarr/Readarr/wiki/Release-Branches" + helpLink="https://wiki.servarr.com/Readarr_FAQ#How_do_I_update_my_Readarr" {...branch} onChange={onInputChange} readOnly={usingExternalUpdateMechanism} @@ -100,7 +100,7 @@ function UpdateSettings(props) { name="updateMechanism" values={updateOptions} helpText="Use Readarr's built-in updater or a script" - helpLink="https://github.com/Readarr/Readarr/wiki/Updating" + 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 7101cd261..8109fd9a8 100644 --- a/frontend/src/Settings/Indexers/Options/IndexerOptions.js +++ b/frontend/src/Settings/Indexers/Options/IndexerOptions.js @@ -88,7 +88,7 @@ function IndexerOptions(props) { unit="minutes" helpText="Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)" helpTextWarning="This will apply to all indexers, please follow the rules set forth by them" - helpLink="https://github.com/Readarr/Readarr/wiki/RSS-Sync" + 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 7273e806e..f29b389e0 100644 --- a/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js +++ b/frontend/src/Settings/Metadata/MetadataProvider/MetadataProvider.js @@ -54,7 +54,7 @@ function MetadataProvider(props) { type={inputTypes.TEXT} name="metadataSource" helpText="Alternative Metadata Source (Leave blank for default)" - helpLink="https://github.com/Readarr/Readarr/wiki/Metadata-Source" + helpLink="https://wiki.servarr.com/Readarr_Settings#Metadata" onChange={onInputChange} {...settings.metadataSource} /> @@ -70,7 +70,7 @@ function MetadataProvider(props) { type={inputTypes.SELECT} name="writeAudioTags" helpTextWarning="Selecting 'All files' will alter existing files when they are imported." - helpLink="https://github.com/Readarr/Readarr/wiki/Write-Tags" + 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 53f5c6ff1..5eef0da3b 100644 --- a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js +++ b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js @@ -39,7 +39,7 @@ function NotificationEventItems(props) {
diff --git a/frontend/src/Settings/Tags/Tags.js b/frontend/src/Settings/Tags/Tags.js index 4a913601d..d7901e443 100644 --- a/frontend/src/Settings/Tags/Tags.js +++ b/frontend/src/Settings/Tags/Tags.js @@ -14,7 +14,7 @@ function Tags(props) { if (!items.length) { return ( -
No tags have been added yet. Add tags to link authors with delay profiles, restrictions, or notifications. Click here to find out more about tags in Readarr.
+
No tags have been added yet. Add tags to link authors with delay profiles, restrictions, or notifications. Click here to find out more about tags in Readarr.
); } diff --git a/frontend/src/login.html b/frontend/src/login.html index 01f58d91a..dc1811f63 100644 --- a/frontend/src/login.html +++ b/frontend/src/login.html @@ -251,7 +251,7 @@ Forgot your password? diff --git a/src/NzbDrone.Core.Test/HealthCheck/Checks/RemotePathMappingCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/Checks/RemotePathMappingCheckFixture.cs index d8f4df611..78752f219 100644 --- a/src/NzbDrone.Core.Test/HealthCheck/Checks/RemotePathMappingCheckFixture.cs +++ b/src/NzbDrone.Core.Test/HealthCheck/Checks/RemotePathMappingCheckFixture.cs @@ -124,7 +124,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks [Test] public void should_return_permissions_error_if_local_client_download_root_missing() { - Subject.Check().ShouldBeError(wikiFragment: "permissions-error"); + Subject.Check().ShouldBeError(wikiFragment: "permissions_error"); } [Test] @@ -133,7 +133,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _clientStatus.IsLocalhost = false; _clientStatus.OutputRootFolders = new List { new OsPath("An invalid path") }; - Subject.Check().ShouldBeError(wikiFragment: "bad-remote-path-mapping"); + Subject.Check().ShouldBeError(wikiFragment: "bad_remote_path_mapping"); } [Test] @@ -142,7 +142,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _clientStatus.IsLocalhost = true; _clientStatus.OutputRootFolders = new List { new OsPath("An invalid path") }; - Subject.Check().ShouldBeError(wikiFragment: "bad-download-client-settings"); + Subject.Check().ShouldBeError(wikiFragment: "bad_download_client_settings"); } [Test] @@ -150,7 +150,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks { _clientStatus.IsLocalhost = false; - Subject.Check().ShouldBeError(wikiFragment: "bad-remote-path-mapping"); + Subject.Check().ShouldBeError(wikiFragment: "bad_remote_path_mapping"); } [Test] @@ -170,7 +170,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks { GivenDocker(); - Subject.Check().ShouldBeError(wikiFragment: "docker-bad-remote-path-mapping"); + Subject.Check().ShouldBeError(wikiFragment: "docker_bad_remote_path_mapping"); } [Test] @@ -193,7 +193,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks var importEvent = new TrackImportFailedEvent(new Exception(), localTrack, true, new DownloadClientItem { DownloadClientInfo = new DownloadClientItemClientInfo() }); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions-error"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions_error"); } [Test] @@ -203,7 +203,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions-error"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions_error"); } [Test] @@ -211,7 +211,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks { var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions-error"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions_error"); } [Test] @@ -220,7 +220,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _clientStatus.IsLocalhost = false; var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad-remote-path-mapping"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad_remote_path_mapping"); } [Test] @@ -230,7 +230,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _downloadItem.OutputPath = new OsPath("an invalid path"); var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad-remote-path-mapping"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad_remote_path_mapping"); } [Test] @@ -240,7 +240,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _downloadItem.OutputPath = new OsPath("an invalid path"); var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad-download-client-settings"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "bad_download_client_settings"); } [Test] @@ -251,7 +251,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks _clientStatus.IsLocalhost = false; var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); - Subject.Check(importEvent).ShouldBeError(wikiFragment: "docker-bad-remote-path-mapping"); + Subject.Check(importEvent).ShouldBeError(wikiFragment: "docker_bad_remote_path_mapping"); } [Test] diff --git a/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs index 47d48fb85..3225163ee 100644 --- a/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs +++ b/src/NzbDrone.Core.Test/HealthCheck/HealthCheckFixture.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.HealthCheck; using NzbDrone.Core.Test.Framework; @@ -8,11 +8,11 @@ namespace NzbDrone.Core.Test.HealthCheck [TestFixture] public class HealthCheckFixture : CoreTest { - private const string WikiRoot = "https://github.com/Readarr/Readarr/wiki/"; + private const string WikiRoot = "https://wiki.servarr.com/"; - [TestCase("I blew up because of some weird user mistake", null, WikiRoot + "Health-checks#i-blew-up-because-of-some-weird-user-mistake")] - [TestCase("I blew up because of some weird user mistake", "#my-health-check", WikiRoot + "Health-checks#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 + "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 64b967499..d7b908e00 100644 --- a/src/NzbDrone.Core/Datastore/DbFactory.cs +++ b/src/NzbDrone.Core/Datastore/DbFactory.cs @@ -131,10 +131,10 @@ namespace NzbDrone.Core.Datastore if (OsInfo.IsOsx) { - throw new CorruptDatabaseException("Database file: {0} is corrupt, restore from backup if available. See: https://github.com/Sonarr/Sonarr/wiki/FAQ#i-use-sonarr-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://github.com/Readarr/Readarr/wiki/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 609100562..98bd262be 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/CalibreRootFolderCheck.cs @@ -62,15 +62,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"); } } @@ -78,15 +78,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"); } } @@ -94,21 +94,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 dcdb0b8e3..c47407d93 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientCheck.cs @@ -41,7 +41,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/DownloadClientStatusCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs index b813dbdfd..d51afc417 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/DownloadClientStatusCheck.cs @@ -35,10 +35,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 c46e240ab..b8d94ca39 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/FpcalcCheck.cs @@ -28,13 +28,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 e815ce334..0cd0d2888 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/ImportListStatusCheck.cs @@ -35,10 +35,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 c075eb3e7..64504e687 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/IndexerStatusCheck.cs @@ -39,10 +39,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/MonoVersionCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/MonoVersionCheck.cs index cfa07506d..0ce07a9d9 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/MonoVersionCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/MonoVersionCheck.cs @@ -35,7 +35,7 @@ namespace NzbDrone.Core.HealthCheck.Checks return new HealthCheck(GetType(), HealthCheckResult.Error, $"Currently installed Mono version {monoVersion} is old and unsupported. Please upgrade Mono to version {bestVersion}.", - "#currently-installed-mono-version-is-old-and-unsupported"); + "#currently_installed_mono_version_is_old_and_unsupported"); } public override bool CheckOnSchedule => false; diff --git a/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs index 459e08e1b..10017564f 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/MountCheck.cs @@ -27,7 +27,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 4defb2376..9b82560dd 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/RemotePathMappingCheck.cs @@ -66,15 +66,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"); } } @@ -82,15 +82,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 2bb9d3a87..7ea90b178 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/RootFolderCheck.cs @@ -48,11 +48,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 11dab3059..f594376e8 100644 --- a/src/NzbDrone.Core/HealthCheck/HealthCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/HealthCheck.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text.RegularExpressions; using NzbDrone.Common.Http; using NzbDrone.Core.Datastore; @@ -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://github.com/Readarr/Readarr/wiki/Health-checks") + 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 75da53269..0db3b9144 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://github.com/Readarr/Readarr/wiki/Custom-Post-Processing-Scripts"; + 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 14b80017e..5ec819ffd 100644 --- a/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs +++ b/src/NzbDrone.Core/Notifications/Twitter/TwitterSettings.cs @@ -38,7 +38,7 @@ namespace NzbDrone.Core.Notifications.Twitter AuthorizeNotification = "startOAuth"; } - [FieldDefinition(0, Label = "Consumer Key", Privacy = PrivacyLevel.ApiKey, HelpText = "Consumer key from a Twitter application", HelpLink = "https://github.com/Readarr/Readarr/wiki/Twitter-Notifications")] + [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")] diff --git a/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs b/src/NzbDrone.Core/Notifications/Webhook/Webhook.cs index 6750de080..11fd73a8e 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://github.com/Readarr/Readarr/wiki/Webhook"; + 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 6f305c28a..d2c886672 100644 --- a/src/Readarr.Api.V1/ProviderResource.cs +++ b/src/Readarr.Api.V1/ProviderResource.cs @@ -38,8 +38,7 @@ namespace Readarr.Api.V1 Tags = definition.Tags, Fields = SchemaBuilder.ToSchema(definition.Settings), - InfoLink = string.Format("https://github.com/Readarr/Readarr/wiki/Supported-{0}#{1}", - typeof(TProviderResource).Name.Replace("Resource", "s"), + InfoLink = string.Format("https://wiki.servarr.com/Readarr_Supported_{0}", definition.Implementation.ToLower()) }; }