New: Update all wiki links to point to the Servarr Wiki

pull/786/head
bakerboy448 4 years ago committed by Qstick
parent 42262877b0
commit fd81ca86db

@ -128,7 +128,7 @@ class FileBrowserModalContent extends Component {
className={styles.mappedDrivesWarning} className={styles.mappedDrivesWarning}
kind={kinds.WARNING} kind={kinds.WARNING}
> >
Mapped network drives are not available when running as a Windows Service, see the <Link className={styles.faqLink} to="https://github.com/Readarr/Readarr/wiki/FAQ">FAQ</Link> for more information. Mapped network drives are not available when running as a Windows Service, see the <Link className={styles.faqLink} to="https://wiki.servarr.com/Readarr_FAQ">FAQ</Link> for more information.
</Alert> </Alert>
} }

@ -63,7 +63,7 @@ function UpdateSettings(props) {
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="branch" name="branch"
helpText={usingExternalUpdateMechanism ? 'Branch used by external update mechanism' : 'Branch to use to update Readarr'} 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} {...branch}
onChange={onInputChange} onChange={onInputChange}
readOnly={usingExternalUpdateMechanism} readOnly={usingExternalUpdateMechanism}
@ -100,7 +100,7 @@ function UpdateSettings(props) {
name="updateMechanism" name="updateMechanism"
values={updateOptions} values={updateOptions}
helpText="Use Readarr's built-in updater or a script" 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} onChange={onInputChange}
{...updateMechanism} {...updateMechanism}
/> />

@ -88,7 +88,7 @@ function IndexerOptions(props) {
unit="minutes" unit="minutes"
helpText="Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)" 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" 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} onChange={onInputChange}
{...settings.rssSyncInterval} {...settings.rssSyncInterval}
/> />

@ -54,7 +54,7 @@ function MetadataProvider(props) {
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="metadataSource" name="metadataSource"
helpText="Alternative Metadata Source (Leave blank for default)" 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} onChange={onInputChange}
{...settings.metadataSource} {...settings.metadataSource}
/> />
@ -70,7 +70,7 @@ function MetadataProvider(props) {
type={inputTypes.SELECT} type={inputTypes.SELECT}
name="writeAudioTags" name="writeAudioTags"
helpTextWarning="Selecting 'All files' will alter existing files when they are imported." 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} values={writeAudioTagOptions}
onChange={onInputChange} onChange={onInputChange}
{...settings.writeAudioTags} {...settings.writeAudioTags}

@ -39,7 +39,7 @@ function NotificationEventItems(props) {
<div> <div>
<FormInputHelpText <FormInputHelpText
text="Select which events should trigger this notification" text="Select which events should trigger this notification"
link="https://github.com/readarr/Readarr/wiki/Connections" link="https://wiki.servarr.com/Readarr_Settings#Connections"
/> />
<div className={styles.events}> <div className={styles.events}>
<div> <div>

@ -14,7 +14,7 @@ function Tags(props) {
if (!items.length) { if (!items.length) {
return ( return (
<div>No tags have been added yet. Add tags to link authors with delay profiles, restrictions, or notifications. Click <Link to='https://github.com/readarr/Readarr/wiki/Tags'>here</Link> to find out more about tags in Readarr.</div> <div>No tags have been added yet. Add tags to link authors with delay profiles, restrictions, or notifications. Click <Link to='https://wiki.servarr.com/Readarr_Settings#Tags'>here</Link> to find out more about tags in Readarr.</div>
); );
} }

@ -251,7 +251,7 @@
</span> </span>
<a <a
href="https://github.com/readarr/Readarr/wiki/Forgot-my-Password" href="https://wiki.servarr.com/Readarr_FAQ#Help_I_have_locked_my_self_out"
class="forgot-password" class="forgot-password"
>Forgot your password?</a >Forgot your password?</a
> >

@ -124,7 +124,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[Test] [Test]
public void should_return_permissions_error_if_local_client_download_root_missing() 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] [Test]
@ -133,7 +133,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_clientStatus.IsLocalhost = false; _clientStatus.IsLocalhost = false;
_clientStatus.OutputRootFolders = new List<OsPath> { new OsPath("An invalid path") }; _clientStatus.OutputRootFolders = new List<OsPath> { new OsPath("An invalid path") };
Subject.Check().ShouldBeError(wikiFragment: "bad-remote-path-mapping"); Subject.Check().ShouldBeError(wikiFragment: "bad_remote_path_mapping");
} }
[Test] [Test]
@ -142,7 +142,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_clientStatus.IsLocalhost = true; _clientStatus.IsLocalhost = true;
_clientStatus.OutputRootFolders = new List<OsPath> { new OsPath("An invalid path") }; _clientStatus.OutputRootFolders = new List<OsPath> { new OsPath("An invalid path") };
Subject.Check().ShouldBeError(wikiFragment: "bad-download-client-settings"); Subject.Check().ShouldBeError(wikiFragment: "bad_download_client_settings");
} }
[Test] [Test]
@ -150,7 +150,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
{ {
_clientStatus.IsLocalhost = false; _clientStatus.IsLocalhost = false;
Subject.Check().ShouldBeError(wikiFragment: "bad-remote-path-mapping"); Subject.Check().ShouldBeError(wikiFragment: "bad_remote_path_mapping");
} }
[Test] [Test]
@ -170,7 +170,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
{ {
GivenDocker(); GivenDocker();
Subject.Check().ShouldBeError(wikiFragment: "docker-bad-remote-path-mapping"); Subject.Check().ShouldBeError(wikiFragment: "docker_bad_remote_path_mapping");
} }
[Test] [Test]
@ -193,7 +193,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
var importEvent = new TrackImportFailedEvent(new Exception(), localTrack, true, new DownloadClientItem { DownloadClientInfo = new DownloadClientItemClientInfo() }); 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] [Test]
@ -203,7 +203,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem);
Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions-error"); Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions_error");
} }
[Test] [Test]
@ -211,7 +211,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
{ {
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem);
Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions-error"); Subject.Check(importEvent).ShouldBeError(wikiFragment: "permissions_error");
} }
[Test] [Test]
@ -220,7 +220,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_clientStatus.IsLocalhost = false; _clientStatus.IsLocalhost = false;
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); 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] [Test]
@ -230,7 +230,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_downloadItem.OutputPath = new OsPath("an invalid path"); _downloadItem.OutputPath = new OsPath("an invalid path");
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); 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] [Test]
@ -240,7 +240,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_downloadItem.OutputPath = new OsPath("an invalid path"); _downloadItem.OutputPath = new OsPath("an invalid path");
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); 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] [Test]
@ -251,7 +251,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
_clientStatus.IsLocalhost = false; _clientStatus.IsLocalhost = false;
var importEvent = new TrackImportFailedEvent(null, null, true, _downloadItem); 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] [Test]

@ -1,4 +1,4 @@
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Core.HealthCheck; using NzbDrone.Core.HealthCheck;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
@ -8,11 +8,11 @@ namespace NzbDrone.Core.Test.HealthCheck
[TestFixture] [TestFixture]
public class HealthCheckFixture : CoreTest 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", 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 + "Health-checks#my-health-check")] [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", "Custom_Page#my_health_check", WikiRoot + "Custom_Page#my_health_check")]
public void should_format_wiki_url(string message, string wikiFragment, string expectedUrl) 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); var subject = new NzbDrone.Core.HealthCheck.HealthCheck(typeof(HealthCheckBase), HealthCheckResult.Warning, message, wikiFragment);

@ -131,10 +131,10 @@ namespace NzbDrone.Core.Datastore
if (OsInfo.IsOsx) 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) catch (Exception e)
{ {

@ -62,15 +62,15 @@ namespace NzbDrone.Core.HealthCheck.Checks
{ {
if (!calibreIsLocal) 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) 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 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) 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) 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 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) 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) 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 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)) 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");
} }
} }
} }

@ -41,7 +41,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
_logger.Debug(ex, "Unable to communicate with {0}", downloadClient.Definition.Name); _logger.Debug(ex, "Unable to communicate with {0}", downloadClient.Definition.Name);
var message = $"Unable to communicate with {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");
} }
} }

@ -35,10 +35,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (backOffProviders.Count == enabledProviders.Count) 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");
} }
} }
} }

@ -28,13 +28,13 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (!_fingerprintingService.IsSetup()) 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(); var fpcalcVersion = _fingerprintingService.FpcalcVersion();
if (fpcalcVersion == null || fpcalcVersion < new Version("1.4.3")) 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()); return new HealthCheck(GetType());

@ -35,10 +35,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (backOffProviders.Count == enabledProviders.Count) 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");
} }
} }
} }

@ -39,10 +39,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (backOffProviders.Count == enabledProviders.Count) 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");
} }
} }
} }

@ -35,7 +35,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
$"Currently installed Mono version {monoVersion} is old and unsupported. Please upgrade Mono to version {bestVersion}.", $"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; public override bool CheckOnSchedule => false;

@ -27,7 +27,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (mounts.Any()) 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()); return new HealthCheck(GetType());

@ -66,15 +66,15 @@ namespace NzbDrone.Core.HealthCheck.Checks
{ {
if (!status.IsLocalhost) 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) 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 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) 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) 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 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; var trackPath = failureMessage.BookInfo.Path;
if (_diskProvider.FileExists(trackPath)) 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 else
{ {
@ -156,36 +156,36 @@ namespace NzbDrone.Core.HealthCheck.Checks
{ {
if (!status.IsLocalhost) 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) 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 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)) 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 it's a remote client/docker, likely missing path mappings
if (_osInfo.IsDocker) 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) 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 else
{ {
// path mappings shouldn't be needed locally so probably a permissions issue // 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) catch (DownloadClientException ex)

@ -48,11 +48,11 @@ namespace NzbDrone.Core.HealthCheck.Checks
{ {
if (missingRootFolders.Count == 1) 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)); 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()); return new HealthCheck(GetType());

@ -1,4 +1,4 @@
using System; using System;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
@ -34,12 +34,12 @@ namespace NzbDrone.Core.HealthCheck
private static string MakeWikiFragment(string message) 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) 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);
} }
} }

@ -29,7 +29,7 @@ namespace NzbDrone.Core.Notifications.CustomScript
public override string Name => "Custom Script"; 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); 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);

@ -38,7 +38,7 @@ namespace NzbDrone.Core.Notifications.Twitter
AuthorizeNotification = "startOAuth"; 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; } 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://github.com/Readarr/Readarr/wiki/Twitter-Notifications")]

@ -16,7 +16,7 @@ namespace NzbDrone.Core.Notifications.Webhook
_proxy = proxy; _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) public override void OnGrab(GrabMessage message)
{ {

@ -38,8 +38,7 @@ namespace Readarr.Api.V1
Tags = definition.Tags, Tags = definition.Tags,
Fields = SchemaBuilder.ToSchema(definition.Settings), Fields = SchemaBuilder.ToSchema(definition.Settings),
InfoLink = string.Format("https://github.com/Readarr/Readarr/wiki/Supported-{0}#{1}", InfoLink = string.Format("https://wiki.servarr.com/Readarr_Supported_{0}",
typeof(TProviderResource).Name.Replace("Resource", "s"),
definition.Implementation.ToLower()) definition.Implementation.ToLower())
}; };
} }

Loading…
Cancel
Save