New: Lidarr to Readarr

pull/6/head
Qstick 4 years ago
parent 7359c2a9fa
commit 3b7eb01918

2
.gitattributes vendored

@ -4,7 +4,7 @@
# Explicitly set bash scripts to have unix endings
*.sh text eol=lf
distribution/debian/* text eol=lf
macOS/Lidarr text eol=lf
macOS/Readarr text eol=lf
# Custom for Visual Studio
*.cs diff=csharp

@ -2,7 +2,7 @@
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: lidarr
open_collective: readarr
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry

@ -18,7 +18,7 @@ Remove if not opening a bug report
### System Information/Logs
**Lidarr Version:**
**Readarr Version:**
**Operating System:**

@ -24,7 +24,7 @@ If applicable, add screenshots to help explain your problem.
Link to debug logs.
**System info (please complete the following information):**
- Lidarr Version: [e.g. 0.3.0.430]
- Readarr Version: [e.g. 0.3.0.430]
- Operating System [e.g. iOS]
- .net Framework (Windows) or mono (macOS/Linux) Version: [e.g. 4.5 or 5.12]

2
.gitignore vendored

@ -104,7 +104,7 @@ App_Data/*.ldf
_NCrunch_*
_TeamCity*
# Lidarr
# Readarr
config.xml
nzbdrone.log*txt
UpdateLogs/

@ -0,0 +1,5 @@
{
"files.associations": {
"*.yaml": "home-assistant"
}
}

@ -1,6 +1,6 @@
# Lidarr Individual Contributor License Agreement #
# Readarr Individual Contributor License Agreement #
Thank you for your interest in contributing to Lidarr ("We" or "Us").
Thank you for your interest in contributing to Readarr ("We" or "Us").
This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please complete the form below. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us.
## 1. Definitions ##

@ -1,6 +1,6 @@
# How to Contribute #
We're always looking for people to help make Lidarr even better, there are a number of ways to contribute.
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 the better.
@ -17,18 +17,18 @@ Setup guides, FAQ, the more information we have on the wiki the better.
### Getting started ###
1. Fork Lidarr
1. Fork Readarr
2. Clone the repository into your development machine. [*info*](https://help.github.com/articles/working-with-repositories)
3. Grab the submodules `git submodule init && git submodule update`
4. Install the required Node Packages `yarn install`
5. Start gulp to monitor your dev environment for any changes that need post processing using `yarn start` command.
6. Build the project in Visual Studio, Setting startup project to `NZBDrone.Console`
7. Debug the project in Visual Studio
8. Open http://localhost:8686
8. Open http://localhost:8787
### Contributing Code ###
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/lidarr/Lidarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Lidarr's develop branch, don't merge
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/readarr/Readarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Readarr's develop branch, don't merge
- Make meaningful commits, or squash them
- Feel free to make a pull request before work is complete, this will let us see where its at and make comments/suggest improvements
- Reach out to us on the discord if you have any questions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

@ -1,12 +1,12 @@
# Lidarr
# Readarr
[![Build Status](https://dev.azure.com/Lidarr/Lidarr/_apis/build/status/lidarr.Lidarr?branchName=develop)](https://dev.azure.com/Lidarr/Lidarr/_build/latest?definitionId=1&branchName=develop)
[![Build Status](https://dev.azure.com/Readarr/Readarr/_apis/build/status/readarr.Readarr?branchName=develop)](https://dev.azure.com/Readarr/Readarr/_build/latest?definitionId=1&branchName=develop)
[![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=Z1I4SVZOMitOdENIMHpkMlN3djJiRVJkTzBpdUJ5Q2ZtWVhnYTFvYS9qcz0tLTM5THJZRkVCZlk0blp5cXFBK1BDYWc9PQ==--67f41b00af03ab78148d3d711f22ca42ab348a52)](https://automate.browserstack.com/public-build/Z1I4SVZOMitOdENIMHpkMlN3djJiRVJkTzBpdUJ5Q2ZtWVhnYTFvYS9qcz0tLTM5THJZRkVCZlk0blp5cXFBK1BDYWc9PQ==--67f41b00af03ab78148d3d711f22ca42ab348a52)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/lidarr.svg)](https://github.com/lidarr/Lidarr/wiki/Docker)
![Github Downloads](https://img.shields.io/github/downloads/lidarr/lidarr/total.svg)
[![Backers on Open Collective](https://opencollective.com/lidarr/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/lidarr/sponsors/badge.svg)](#sponsors)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/readarr.svg)](https://github.com/readarr/Readarr/wiki/Docker)
![Github Downloads](https://img.shields.io/github/downloads/readarr/readarr/total.svg)
[![Backers on Open Collective](https://opencollective.com/readarr/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/readarr/sponsors/badge.svg)](#sponsors)
Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
Readarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
## Major Features Include:
@ -24,42 +24,42 @@ Lidarr is a music collection manager for Usenet and BitTorrent users. It can mon
## Feature Requests
[![Feature Requests](http://feathub.com/lidarr/Lidarr?format=svg)](http://feathub.com/lidarr/Lidarr)
[![Feature Requests](http://feathub.com/readarr/Readarr?format=svg)](http://feathub.com/readarr/Readarr)
## Support
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60)](https://discord.gg/8Y7rDc9)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60)](https://www.reddit.com/r/lidarr)
[![GitHub](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Lidarr/Lidarr/issues)
[![GitHub Wiki](https://img.shields.io/badge/github-wiki-181717.svg?maxAge=60)](https://github.com/Lidarr/Lidarr/wiki)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60)](https://www.reddit.com/r/readarr)
[![GitHub](https://img.shields.io/badge/github-issues-red.svg?maxAge=60)](https://github.com/Readarr/Readarr/issues)
[![GitHub Wiki](https://img.shields.io/badge/github-wiki-181717.svg?maxAge=60)](https://github.com/Readarr/Readarr/wiki)
## Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
<a href="https://github.com/lidarr/Lidarr/graphs/contributors"><img src="https://opencollective.com/lidarr/contributors.svg?width=890&button=false" /></a>
<a href="https://github.com/readarr/Readarr/graphs/contributors"><img src="https://opencollective.com/readarr/contributors.svg?width=890&button=false" /></a>
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/lidarr#backer)]
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/readarr#backer)]
<a href="https://opencollective.com/lidarr#backers" target="_blank"><img src="https://opencollective.com/lidarr/backers.svg?width=890"></a>
<a href="https://opencollective.com/readarr#backers" target="_blank"><img src="https://opencollective.com/readarr/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/lidarr#sponsor)]
<a href="https://opencollective.com/lidarr/sponsor/0/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/1/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/2/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/3/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/4/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/5/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/6/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/7/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/8/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/lidarr/sponsor/9/website" target="_blank"><img src="https://opencollective.com/lidarr/sponsor/9/avatar.svg"></a>
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/readarr#sponsor)]
<a href="https://opencollective.com/readarr/sponsor/0/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/1/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/2/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/3/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/4/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/5/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/6/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/7/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/8/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/readarr/sponsor/9/website" target="_blank"><img src="https://opencollective.com/readarr/sponsor/9/avatar.svg"></a>
### License

@ -1,3 +0,0 @@
skip_commits:
files:
- '**/**'

@ -7,10 +7,10 @@ variables:
outputFolder: './_output'
artifactsFolder: './_artifacts'
testsFolder: './_tests'
majorVersion: '0.7.1'
minorVersion: $[counter('minorVersion', 1076)]
lidarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(lidarrVersion)'
majorVersion: '0.1.0'
minorVersion: $[counter('minorVersion', 1)]
readarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
sentryOrg: 'radarr'
dotnetVersion: '3.1.102'
@ -45,7 +45,7 @@ stages:
vmImage: $(imageName)
steps:
# Set the build name properly. The 'name' property won't recursively expand so hack here:
- powershell: Write-Host "##vso[build.updatebuildnumber]$($env:LIDARRVERSION)"
- powershell: Write-Host "##vso[build.updatebuildnumber]$($env:READARRVERSION)"
displayName: Set Build Name
- checkout: self
submodules: true
@ -55,7 +55,7 @@ stages:
inputs:
version: $(dotnetVersion)
- bash: ./build.sh --backend
displayName: Build Lidarr Backend
displayName: Build Readarr Backend
- bash: |
find ${OUTPUTFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \;
find ${OUTPUTFOLDER} -depth -empty -type d -exec rm -r "{}" \;
@ -112,7 +112,7 @@ stages:
submodules: true
fetchDepth: 1
- bash: ./build.sh --frontend
displayName: Build Lidarr Frontend
displayName: Build Readarr Frontend
env:
FORCE_COLOR: 0
- publish: $(outputFolder)
@ -147,8 +147,8 @@ stages:
- bash: ./build.sh --packages
displayName: Create Packages
- bash: |
setup/inno/ISCC.exe setup/lidarr.iss //DFramework=netcoreapp3.1
cp setup/output/Lidarr.*windows.netcoreapp3.1.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Lidarr.${BUILDNAME}.windows-core-x64-installer.exe
setup/inno/ISCC.exe setup/readarr.iss //DFramework=netcoreapp3.1
cp setup/output/Readarr.*windows.netcoreapp3.1.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Readarr.${BUILDNAME}.windows-core-x64-installer.exe
displayName: Create .NET Core Windows installer
- publish: $(Build.ArtifactStagingDirectory)
artifact: 'WindowsInstaller'
@ -182,27 +182,27 @@ stages:
displayName: Create Packages
- bash: |
find . -name "fpcalc" -exec chmod a+x {} \;
find . -name "Lidarr" -exec chmod a+x {} \;
find . -name "Lidarr.Update" -exec chmod a+x {} \;
find . -name "Readarr" -exec chmod a+x {} \;
find . -name "Readarr.Update" -exec chmod a+x {} \;
displayName: Set executable bits
- task: ArchiveFiles@2
displayName: Create Windows Core zip
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).windows-core-x64.zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).windows-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/windows/netcoreapp3.1
- task: ArchiveFiles@2
displayName: Create MacOS Core app
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-app-core-x64.zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).osx-app-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
rootFolderOrFile: $(artifactsFolder)/macos-app/netcoreapp3.1
- task: ArchiveFiles@2
displayName: Create MacOS Core tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-core-x64.tar.gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).osx-core-x64.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
@ -210,7 +210,7 @@ stages:
- task: ArchiveFiles@2
displayName: Create Linux Mono tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux.tar.gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).linux.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
@ -218,7 +218,7 @@ stages:
- task: ArchiveFiles@2
displayName: Create Linux Core tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-x64.tar.gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).linux-core-x64.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
@ -226,7 +226,7 @@ stages:
- task: ArchiveFiles@2
displayName: Create ARM32 Core tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm.tar.gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).linux-core-arm.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
@ -234,7 +234,7 @@ stages:
- task: ArchiveFiles@2
displayName: Create Linux Core tar
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm64.tar.gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/Readarr.$(buildName).linux-core-arm64.tar.gz'
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
@ -245,9 +245,9 @@ stages:
- bash: |
echo "Uploading source maps to sentry"
curl -sL https://sentry.io/get-cli/ | bash
RELEASENAME="${LIDARRVERSION}-${BUILD_SOURCEBRANCHNAME}"
sentry-cli releases new --finalize -p lidarr -p lidarr-ui -p lidarr-update "${RELEASENAME}"
sentry-cli releases -p lidarr-ui files "${RELEASENAME}" upload-sourcemaps _output/UI/ --rewrite
RELEASENAME="${READARRVERSION}-${BUILD_SOURCEBRANCHNAME}"
sentry-cli releases new --finalize -p readarr -p readarr-ui -p readarr-update "${RELEASENAME}"
sentry-cli releases -p readarr-ui files "${RELEASENAME}" upload-sourcemaps _output/UI/ --rewrite
sentry-cli releases set-commits --auto "${RELEASENAME}"
if [[ ${BUILD_SOURCEBRANCH} == "refs/heads/develop" ]]; then
sentry-cli releases deploys "${RELEASENAME}" new -e nightly
@ -287,7 +287,7 @@ stages:
osName: 'Linux'
testName: 'LinuxCore'
imageName: 'ubuntu-18.04'
pattern: 'Lidarr.**.linux-core-x64.tar.gz'
pattern: 'Readarr.**.linux-core-x64.tar.gz'
pool:
vmImage: $(imageName)
@ -322,7 +322,7 @@ stages:
chmod a+x _tests/fpcalc
displayName: Set Mono Version and make fpcalc Executable
condition: and(succeeded(), eq(variables['osName'], 'Mac'))
- bash: find ${TESTSFOLDER} -name "Lidarr.Test.Dummy" -exec chmod a+x {} \;
- bash: find ${TESTSFOLDER} -name "Readarr.Test.Dummy" -exec chmod a+x {} \;
displayName: Make Test Dummy Executable
condition: and(succeeded(), ne(variables['osName'], 'Windows'))
- task: Bash@3
@ -347,16 +347,16 @@ stages:
matrix:
mono508:
testName: 'Mono 5.8'
containerImage: lidarr/testimages:mono-5.8
containerImage: readarr/testimages:mono-5.8
mono520:
testName: 'Mono 5.20'
containerImage: lidarr/testimages:mono-5.20
containerImage: readarr/testimages:mono-5.20
mono608:
testName: 'Mono 6.8'
containerImage: lidarr/testimages:mono-6.8
containerImage: readarr/testimages:mono-6.8
mono610:
testName: 'Mono 6.10'
containerImage: lidarr/testimages:mono-6.10
containerImage: readarr/testimages:mono-6.10
pool:
vmImage: 'ubuntu-18.04'
@ -406,17 +406,17 @@ stages:
osName: 'Mac'
testName: 'MacCore'
imageName: 'macos-10.14'
pattern: 'Lidarr.**.osx-core-x64.tar.gz'
pattern: 'Readarr.**.osx-core-x64.tar.gz'
WindowsCore:
osName: 'Windows'
testName: 'WindowsCore'
imageName: 'windows-2019'
pattern: 'Lidarr.**.windows-core-x64.zip'
pattern: 'Readarr.**.windows-core-x64.zip'
LinuxCore:
osName: 'Linux'
testName: 'LinuxCore'
imageName: 'ubuntu-18.04'
pattern: 'Lidarr.**.linux-core-x64.tar.gz'
pattern: 'Readarr.**.linux-core-x64.tar.gz'
pool:
vmImage: $(imageName)
@ -455,7 +455,7 @@ stages:
displayName: Extract Package
- bash: |
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Readarr/. ./bin/
displayName: Move Package Contents
- task: Bash@3
displayName: Run Integration Tests
@ -477,19 +477,19 @@ stages:
matrix:
mono508:
testName: 'Mono 5.8'
containerImage: lidarr/testimages:mono-5.8
containerImage: readarr/testimages:mono-5.8
mono520:
testName: 'Mono 5.20'
containerImage: lidarr/testimages:mono-5.20
containerImage: readarr/testimages:mono-5.20
mono608:
testName: 'Mono 6.8'
containerImage: lidarr/testimages:mono-6.8
containerImage: readarr/testimages:mono-6.8
mono610:
testName: 'Mono 6.10'
containerImage: lidarr/testimages:mono-6.10
containerImage: readarr/testimages:mono-6.10
variables:
pattern: 'Lidarr.**.linux.tar.gz'
pattern: 'Readarr.**.linux.tar.gz'
pool:
vmImage: 'ubuntu-18.04'
@ -526,7 +526,7 @@ stages:
displayName: Extract Package
- bash: |
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Readarr/. ./bin/
displayName: Move Package Contents
- task: Bash@3
displayName: Run Integration Tests
@ -553,17 +553,17 @@ stages:
Linux:
osName: 'Linux'
imageName: 'ubuntu-18.04'
pattern: 'Lidarr.**.linux-core-x64.tar.gz'
pattern: 'Readarr.**.linux-core-x64.tar.gz'
failBuild: true
Mac:
osName: 'Mac'
imageName: 'macos-10.14' # Fails due to firefox not being installed on image
pattern: 'Lidarr.**.osx-core-x64.tar.gz'
pattern: 'Readarr.**.osx-core-x64.tar.gz'
failBuild: false
Windows:
osName: 'Windows'
imageName: 'windows-2019'
pattern: 'Lidarr.**.windows-core-x64.zip'
pattern: 'Readarr.**.windows-core-x64.zip'
failBuild: true
pool:
@ -595,7 +595,7 @@ stages:
displayName: Extract Package
- bash: |
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Readarr/. ./bin/
displayName: Move Package Contents
- bash: |
if [[ $OSNAME == "Mac" ]]; then
@ -652,7 +652,7 @@ stages:
submodules: true
fetchDepth: 1
- bash: ./build.sh --lint
displayName: Lint Lidarr Frontend
displayName: Lint Readarr Frontend
env:
FORCE_COLOR: 0
@ -667,12 +667,12 @@ stages:
SONAR_SCANNER_OPTS: ''
inputs:
SonarCloud: 'SonarCloud'
organization: 'lidarr'
organization: 'readarr'
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: 'lidarr_Lidarr.UI'
cliProjectName: 'LidarrUI'
cliProjectVersion: '$(lidarrVersion)'
cliProjectKey: 'readarr_Readarr.UI'
cliProjectName: 'ReadarrUI'
cliProjectVersion: '$(readarrVersion)'
cliSources: './frontend'
- task: SonarCloudAnalyze@1
@ -694,14 +694,14 @@ stages:
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'SonarCloud'
organization: 'lidarr'
organization: 'readarr'
scannerMode: 'MSBuild'
projectKey: 'lidarr_Lidarr'
projectName: 'Lidarr'
projectVersion: '$(lidarrVersion)'
projectKey: 'readarr_Readarr'
projectName: 'Readarr'
projectVersion: '$(readarrVersion)'
extraProperties: |
sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/**
sonar.coverage.exclusions=**/Lidarr.Api.V1/**/*,**/MonoTorrent/**/*,**/Marr.Data/**/*
sonar.coverage.exclusions=**/Readarr.Api.V1/**/*,**/MonoTorrent/**/*,**/Marr.Data/**/*
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
- bash: |

@ -19,11 +19,11 @@ ProgressEnd()
UpdateVersionNumber()
{
if [ "$LIDARRVERSION" != "" ]; then
if [ "$READARRVERSION" != "" ]; then
echo "Updating Version Info"
sed -i'' -e "s/<AssemblyVersion>[0-9.*]\+<\/AssemblyVersion>/<AssemblyVersion>$LIDARRVERSION<\/AssemblyVersion>/g" src/Directory.Build.props
sed -i'' -e "s/<AssemblyVersion>[0-9.*]\+<\/AssemblyVersion>/<AssemblyVersion>$READARRVERSION<\/AssemblyVersion>/g" src/Directory.Build.props
sed -i'' -e "s/<AssemblyConfiguration>[\$()A-Za-z-]\+<\/AssemblyConfiguration>/<AssemblyConfiguration>${BUILD_SOURCEBRANCHNAME}<\/AssemblyConfiguration>/g" src/Directory.Build.props
sed -i'' -e "s/<string>10.0.0.0<\/string>/<string>$LIDARRVERSION<\/string>/g" macOS/Lidarr.app/Contents/Info.plist
sed -i'' -e "s/<string>10.0.0.0<\/string>/<string>$READARRVERSION<\/string>/g" macOS/Readarr.app/Contents/Info.plist
fi
}
@ -49,7 +49,7 @@ Build()
rm -rf $outputFolder
rm -rf $testPackageFolder
slnFile=src/Lidarr.sln
slnFile=src/Readarr.sln
if [ $os = "windows" ]; then
platform=Windows
@ -93,7 +93,7 @@ PackageFiles()
rm -rf $folder
mkdir -p $folder
cp -r $outputFolder/$framework/$runtime/publish/* $folder
cp -r $outputFolder/Lidarr.Update/$framework/$runtime/publish $folder/Lidarr.Update
cp -r $outputFolder/Readarr.Update/$framework/$runtime/publish $folder/Readarr.Update
cp -r $outputFolder/UI $folder
echo "Adding LICENSE"
@ -107,7 +107,7 @@ PackageLinux()
ProgressStart "Creating $runtime Package for $framework"
local folder=$artifactsFolder/$runtime/$framework/Lidarr
local folder=$artifactsFolder/$runtime/$framework/Readarr
PackageFiles "$folder" "$framework" "$runtime"
@ -115,14 +115,14 @@ PackageLinux()
rm -f $folder/ServiceUninstall.*
rm -f $folder/ServiceInstall.*
echo "Removing Lidarr.Windows"
rm $folder/Lidarr.Windows.*
echo "Removing Readarr.Windows"
rm $folder/Readarr.Windows.*
echo "Adding Lidarr.Mono to UpdatePackage"
cp $folder/Lidarr.Mono.* $folder/Lidarr.Update
echo "Adding Readarr.Mono to UpdatePackage"
cp $folder/Readarr.Mono.* $folder/Readarr.Update
if [ "$framework" = "netcoreapp3.1" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Lidarr.Update
cp $folder/libMonoPosixHelper.* $folder/Lidarr.Update
cp $folder/Mono.Posix.NETStandard.* $folder/Readarr.Update
cp $folder/libMonoPosixHelper.* $folder/Readarr.Update
fi
ProgressEnd "Creating $runtime Package for $framework"
@ -134,27 +134,27 @@ PackageMacOS()
ProgressStart "Creating MacOS Package for $framework"
local folder=$artifactsFolder/macos/$framework/Lidarr
local folder=$artifactsFolder/macos/$framework/Readarr
PackageFiles "$folder" "$framework" "osx-x64"
if [ "$framework" = "net462" ]; then
echo "Adding Startup script"
cp macOS/Lidarr $folder
cp macOS/Readarr $folder
fi
echo "Removing Service helpers"
rm -f $folder/ServiceUninstall.*
rm -f $folder/ServiceInstall.*
echo "Removing Lidarr.Windows"
rm $folder/Lidarr.Windows.*
echo "Removing Readarr.Windows"
rm $folder/Readarr.Windows.*
echo "Adding Lidarr.Mono to UpdatePackage"
cp $folder/Lidarr.Mono.* $folder/Lidarr.Update
echo "Adding Readarr.Mono to UpdatePackage"
cp $folder/Readarr.Mono.* $folder/Readarr.Update
if [ "$framework" = "netcoreapp3.1" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Lidarr.Update
cp $folder/libMonoPosixHelper.* $folder/Lidarr.Update
cp $folder/Mono.Posix.NETStandard.* $folder/Readarr.Update
cp $folder/libMonoPosixHelper.* $folder/Readarr.Update
fi
ProgressEnd 'Creating MacOS Package'
@ -170,14 +170,14 @@ PackageMacOSApp()
rm -rf $folder
mkdir -p $folder
cp -r macOS/Lidarr.app $folder
mkdir -p $folder/Lidarr.app/Contents/MacOS
cp -r macOS/Readarr.app $folder
mkdir -p $folder/Readarr.app/Contents/MacOS
echo "Copying Binaries"
cp -r $artifactsFolder/macos/$framework/Lidarr/* $folder/Lidarr.app/Contents/MacOS
cp -r $artifactsFolder/macos/$framework/Readarr/* $folder/Readarr.app/Contents/MacOS
echo "Removing Update Folder"
rm -r $folder/Lidarr.app/Contents/MacOS/Lidarr.Update
rm -r $folder/Readarr.app/Contents/MacOS/Readarr.Update
ProgressEnd 'Creating macOS App Package'
}
@ -188,17 +188,17 @@ PackageWindows()
ProgressStart "Creating Windows Package for $framework"
local folder=$artifactsFolder/windows/$framework/Lidarr
local folder=$artifactsFolder/windows/$framework/Readarr
PackageFiles "$folder" "$framework" "win-x64"
echo "Removing Lidarr.Mono"
rm -f $folder/Lidarr.Mono.*
echo "Removing Readarr.Mono"
rm -f $folder/Readarr.Mono.*
rm -f $folder/Mono.Posix.NETStandard.*
rm -f $folder/libMonoPosixHelper.*
echo "Adding Lidarr.Windows to UpdatePackage"
cp $folder/Lidarr.Windows.* $folder/Lidarr.Update
echo "Adding Readarr.Windows to UpdatePackage"
cp $folder/Readarr.Windows.* $folder/Readarr.Update
ProgressEnd 'Creating Windows Package'
}

8
debian/control vendored

@ -2,11 +2,11 @@ Section: web
Priority: optional
Maintainer: Sonarr <contact@nzbdrone.com>
Source: nzbdrone
Homepage: https://lidarr.audio
Vcs-Git: git@github.com:lidarr/Lidarr.git
Vcs-Browser: https://github.com/lidarr/Lidarr
Homepage: https://readarr.audio
Vcs-Git: git@github.com:readarr/Readarr.git
Vcs-Browser: https://github.com/readarr/Readarr
Package: nzbdrone
Architecture: all
Depends: libmono-cil-dev (>= 3.2), sqlite3 (>= 3.7), mediainfo (>= 0.7.52)
Description: Lidarr is a music collection manager
Description: Readarr is a music collection manager

4
debian/copyright vendored

@ -1,9 +1,9 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: nzbdrone
Source: https://github.com/lidarr/Lidarr
Source: https://github.com/readarr/Readarr
Files: *
Copyright: 2010-2016 Lidarr <hello@lidarr.audio>
Copyright: 2010-2016 Readarr <hello@readarr.audio>
License: GPL-3.0+

@ -217,7 +217,7 @@ function HistoryDetails(props) {
reasonMessage = 'File was deleted by via UI';
break;
case 'MissingFromDisk':
reasonMessage = 'Lidarr was unable to find the file on disk so it was removed';
reasonMessage = 'Readarr was unable to find the file on disk so it was removed';
break;
case 'Upgrade':
reasonMessage = 'File was deleted to import an upgrade';

@ -60,7 +60,7 @@ class QueueOptions extends Component {
type={inputTypes.CHECK}
name="includeUnknownArtistItems"
value={includeUnknownArtistItems}
helpText="Show items without a artist in the queue, this could include removed artists, movies or anything else in Lidarr's category"
helpText="Show items without a artist in the queue, this could include removed artists, movies or anything else in Readarr's category"
onChange={this.onOptionChange}
/>
</FormGroup>

@ -114,7 +114,7 @@ class RemoveQueueItemModal extends Component {
type={inputTypes.CHECK}
name="blacklist"
value={blacklist}
helpText="Prevents Lidarr from automatically grabbing this release again"
helpText="Prevents Readarr from automatically grabbing this release again"
onChange={this.onBlacklistChange}
/>
</FormGroup>
@ -127,7 +127,7 @@ class RemoveQueueItemModal extends Component {
type={inputTypes.CHECK}
name="skipredownload"
value={skipredownload}
helpText="Prevents Lidarr from trying download an alternative release for this item"
helpText="Prevents Readarr from trying download an alternative release for this item"
onChange={this.onSkipReDownloadChange}
/>
</FormGroup>

@ -117,7 +117,7 @@ class RemoveQueueItemsModal extends Component {
type={inputTypes.CHECK}
name="blacklist"
value={blacklist}
helpText="Prevents Lidarr from automatically grabbing these files again"
helpText="Prevents Readarr from automatically grabbing these files again"
onChange={this.onBlacklistChange}
/>
</FormGroup>
@ -130,7 +130,7 @@ class RemoveQueueItemsModal extends Component {
type={inputTypes.CHECK}
name="skipredownload"
value={skipredownload}
helpText="Prevents Lidarr from trying download alternative releases for the removed items"
helpText="Prevents Readarr from trying download alternative releases for the removed items"
onChange={this.onSkipReDownloadChange}
/>
</FormGroup>

@ -97,7 +97,7 @@ class DeleteAlbumModalContent extends Component {
type={inputTypes.CHECK}
name="addImportListExclusion"
value={addImportListExclusion}
helpText="Prevent album from being added to Lidarr by Import Lists or Artist Refresh"
helpText="Prevent album from being added to Readarr by Import Lists or Artist Refresh"
kind={kinds.DANGER}
onChange={this.onAddImportListExclusionChange}
/>

@ -35,7 +35,7 @@ class DeleteAlbumModalContentConnector extends Component {
this.props.onModalClose(true);
this.props.push(`${window.Lidarr.urlBase}/artist/${this.props.foreignArtistId}`);
this.props.push(`${window.Readarr.urlBase}/artist/${this.props.foreignArtistId}`);
}
//

@ -64,7 +64,7 @@ class EditAlbumModalContent extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="monitored"
helpText="Lidarr will search for and download album"
helpText="Readarr will search for and download album"
{...monitored}
onChange={onInputChange}
/>
@ -76,7 +76,7 @@ class EditAlbumModalContent extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="anyReleaseOk"
helpText="Lidarr will automatically switch to the release best matching downloaded tracks"
helpText="Readarr will automatically switch to the release best matching downloaded tracks"
{...anyReleaseOk}
onChange={onInputChange}
/>

@ -8,7 +8,7 @@ import AppRoutes from './AppRoutes';
function App({ store, history }) {
return (
<DocumentTitle title="Lidarr">
<DocumentTitle title="Readarr">
<Provider store={store}>
<ConnectedRouter history={history}>
<PageConnector>

@ -54,7 +54,7 @@ function AppRoutes(props) {
/>
{
window.Lidarr.urlBase &&
window.Readarr.urlBase &&
<Route
exact={true}
path="/"

@ -25,12 +25,12 @@ function AppUpdatedModalContent(props) {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Lidarr Updated
Readarr Updated
</ModalHeader>
<ModalBody>
<div>
Version <span className={styles.version}>{version}</span> of Lidarr has been installed, in order to get the latest changes you'll need to reload Lidarr.
Version <span className={styles.version}>{version}</span> of Readarr has been installed, in order to get the latest changes you'll need to reload Readarr.
</div>
{

@ -33,7 +33,7 @@ function createMapDispatchToProps(dispatch, props) {
},
onSeeChangesPress() {
window.location = `${window.Lidarr.urlBase}/system/updates`;
window.location = `${window.Readarr.urlBase}/system/updates`;
}
};
}

@ -27,11 +27,11 @@ function ConnectionLostModal(props) {
<ModalBody>
<div>
Lidarr has lost its connection to the backend and will need to be reloaded to restore functionality.
Readarr has lost its connection to the backend and will need to be reloaded to restore functionality.
</div>
<div className={styles.automatic}>
Lidarr will try to connect automatically, or you can click reload below.
Readarr will try to connect automatically, or you can click reload below.
</div>
</ModalBody>
<ModalFooter>

@ -112,7 +112,7 @@ class DeleteArtistModalContent extends Component {
type={inputTypes.CHECK}
name="addImportListExclusion"
value={addImportListExclusion}
helpText="Prevent artist from being added to Lidarr by Import lists"
helpText="Prevent artist from being added to Readarr by Import lists"
kind={kinds.DANGER}
onChange={this.onAddImportListExclusionChange}
/>

@ -55,7 +55,7 @@ class ArtistDetailsPageConnector extends Component {
componentDidUpdate(prevProps) {
if (!this.props.foreignArtistId) {
this.props.push(`${window.Lidarr.urlBase}/`);
this.props.push(`${window.Readarr.urlBase}/`);
return;
}
}

@ -290,7 +290,7 @@ class ArtistEditorFooter extends Component {
isDisabled={!selectedCount || isOrganizingArtist || isRetaggingArtist}
onPress={this.onTagsPress}
>
Set Lidarr Tags
Set Readarr Tags
</SpinnerButton>
</div>

@ -22,7 +22,7 @@ function getUrls(state) {
tags
} = state;
let icalUrl = `${window.location.host}${window.Lidarr.urlBase}/feed/v1/calendar/Lidarr.ics?`;
let icalUrl = `${window.location.host}${window.Readarr.urlBase}/feed/v1/calendar/Readarr.ics?`;
if (unmonitored) {
icalUrl += 'unmonitored=true&';
@ -32,7 +32,7 @@ function getUrls(state) {
icalUrl += `tags=${tags.toString()}&`;
}
icalUrl += `pastDays=${pastDays}&futureDays=${futureDays}&apikey=${window.Lidarr.apiKey}`;
icalUrl += `pastDays=${pastDays}&futureDays=${futureDays}&apikey=${window.Readarr.apiKey}`;
const iCalHttpUrl = `${window.location.protocol}//${icalUrl}`;
const iCalWebCalUrl = `webcal://${icalUrl}`;
@ -107,7 +107,7 @@ class CalendarLinkModalContent extends Component {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Lidarr Calendar Feed
Readarr Calendar Feed
</ModalHeader>
<ModalBody>

@ -132,7 +132,7 @@ CircularProgressBar.defaultProps = {
containerClassName: styles.circularProgressBarContainer,
size: 60,
strokeWidth: 5,
strokeColor: colors.lidarrGreen,
strokeColor: colors.readarrGreen,
showProgressText: false
};

@ -21,7 +21,7 @@ function ErrorBoundaryError(props) {
<div className={styles.imageContainer}>
<img
className={styles.image}
src={`${window.Lidarr.urlBase}/Content/Images/error.png`}
src={`${window.Readarr.urlBase}/Content/Images/error.png`}
/>
</div>

@ -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 <Link className={styles.faqLink} to="https://github.com/Lidarr/Lidarr/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://github.com/Readarr/Readarr/wiki/FAQ">FAQ</Link> for more information.
</Alert>
}

@ -47,13 +47,13 @@ class Link extends Component {
el = 'a';
linkProps.href = to;
linkProps.target = target || '_self';
} else if (to.startsWith(`${window.Lidarr.urlBase}/`)) {
} else if (to.startsWith(`${window.Readarr.urlBase}/`)) {
el = RouterLink;
linkProps.to = to;
linkProps.target = target;
} else {
el = RouterLink;
linkProps.to = `${window.Lidarr.urlBase}/${to.replace(/^\//, '')}`;
linkProps.to = `${window.Readarr.urlBase}/${to.replace(/^\//, '')}`;
linkProps.target = target;
}
}

@ -4,7 +4,7 @@ import styles from './LoadingMessage.css';
const messages = [
'Downloading more RAM',
'Now in Technicolor',
'Previously on Lidarr...',
'Previously on Readarr...',
'Bleep Bloop.',
'Locating the required gigapixels to render...',
'Spinning up the hamster wheel...',

@ -13,7 +13,7 @@ function NotFound({ message }) {
<img
className={styles.image}
src={`${window.Lidarr.urlBase}/Content/Images/404.png`}
src={`${window.Readarr.urlBase}/Content/Images/404.png`}
/>
</div>
</PageContent>

@ -16,7 +16,7 @@ function ErrorPage(props) {
systemStatusError
} = props;
let errorMessage = 'Failed to load Lidarr';
let errorMessage = 'Failed to load Readarr';
if (!isLocalStorageSupported) {
errorMessage = 'Local Storage is not supported or disabled. A plugin or private browsing may have disabled it.';

@ -54,11 +54,11 @@ function createMapStateToProps() {
function createMapDispatchToProps(dispatch, props) {
return {
onGoToArtist(foreignArtistId) {
dispatch(push(`${window.Lidarr.urlBase}/artist/${foreignArtistId}`));
dispatch(push(`${window.Readarr.urlBase}/artist/${foreignArtistId}`));
},
onGoToAddNewArtist(query) {
dispatch(push(`${window.Lidarr.urlBase}/add/search?term=${encodeURIComponent(query)}`));
dispatch(push(`${window.Readarr.urlBase}/add/search?term=${encodeURIComponent(query)}`));
}
};
}

@ -53,11 +53,11 @@ class PageHeader extends Component {
<div className={styles.logoContainer}>
<Link
className={styles.logoLink}
to={`${window.Lidarr.urlBase}/`}
to={`${window.Readarr.urlBase}/`}
>
<img
className={styles.logo}
src={`${window.Lidarr.urlBase}/Content/Images/logo.svg`}
src={`${window.Readarr.urlBase}/Content/Images/logo.svg`}
/>
</Link>
</div>
@ -76,7 +76,7 @@ class PageHeader extends Component {
<IconButton
className={styles.donate}
name={icons.HEART}
to="https://opencollective.com/lidarr"
to="https://opencollective.com/readarr"
size={14}
/>
<PageHeaderActionsMenuConnector

@ -62,7 +62,7 @@ function PageHeaderActionsMenu(props) {
{
formsAuth &&
<MenuItem
to={`${window.Lidarr.urlBase}/logout`}
to={`${window.Readarr.urlBase}/logout`}
noRouter={true}
>
<Icon

@ -15,7 +15,7 @@ import LoadingPage from './LoadingPage';
import Page from './Page';
function testLocalStorage() {
const key = 'lidarrTest';
const key = 'readarrTest';
try {
localStorage.setItem(key, key);

@ -14,7 +14,7 @@ function PageContent(props) {
return (
<ErrorBoundary errorComponent={PageContentError}>
<DocumentTitle title={title ? `${title} - Lidarr` : 'Lidarr'}>
<DocumentTitle title={title ? `${title} - Readarr` : 'Readarr'}>
<div className={className}>
{children}
</div>

@ -430,7 +430,7 @@ class PageSidebar extends Component {
transform
} = this.state;
const urlBase = window.Lidarr.urlBase;
const urlBase = window.Readarr.urlBase;
const pathname = urlBase ? location.pathname.substr(urlBase.length) || '/' : location.pathname;
const activeParent = getActiveParent(pathname);

@ -59,7 +59,7 @@ function Logger(minimumLogLevel) {
}
Logger.prototype.cleanse = function(message) {
const apikey = new RegExp(`access_token=${window.Lidarr.apiKey}`, 'g');
const apikey = new RegExp(`access_token=${window.Readarr.apiKey}`, 'g');
return message.replace(apikey, 'access_token=(removed)');
};
@ -99,11 +99,11 @@ class SignalRConnector extends Component {
componentDidMount() {
console.log('[signalR] starting');
const url = `${window.Lidarr.urlBase}/signalr/messages`;
const url = `${window.Readarr.urlBase}/signalr/messages`;
this.connection = new signalR.HubConnectionBuilder()
.configureLogging(new Logger(signalR.LogLevel.Information))
.withUrl(`${url}?access_token=${window.Lidarr.apiKey}`)
.withUrl(`${url}?access_token=${window.Readarr.apiKey}`)
.withAutomaticReconnect({
nextRetryDelayInMilliseconds: (retryContext) => {
if (retryContext.elapsedMilliseconds > 180000) {

@ -214,7 +214,7 @@ class InteractiveSearchRow extends Component {
isOpen={this.state.isConfirmGrabModalOpen}
kind={kinds.WARNING}
title="Grab Release"
message={`Lidarr was unable to determine which artist and album this release was for. Lidarr may be unable to automatically import this release. Do you want to grab '${title}'?`}
message={`Readarr was unable to determine which artist and album this release was for. Readarr may be unable to automatically import this release. Do you want to grab '${title}'?`}
confirmLabel="Grab"
onConfirm={this.onGrabConfirm}
onCancel={this.onGrabCancel}

@ -100,7 +100,7 @@ class AddNewItem extends Component {
className={styles.searchInput}
name="searchBox"
value={term}
placeholder="eg. Breaking Benjamin, lidarr:854a1807-025b-42a8-ba8c-2a39717f1d25"
placeholder="eg. Breaking Benjamin, readarr:854a1807-025b-42a8-ba8c-2a39717f1d25"
autoFocus={true}
onChange={this.onSearchInputChange}
/>
@ -163,7 +163,7 @@ class AddNewItem extends Component {
<div>
You can also search using the
<Link to="https://musicbrainz.org/search"> MusicBrainz ID </Link>
of an artist e.g. lidarr:cc197bad-dc9c-440d-a5b5-d52ba2e14234
of an artist e.g. readarr:cc197bad-dc9c-440d-a5b5-d52ba2e14234
</div>
</div>
}
@ -175,7 +175,7 @@ class AddNewItem extends Component {
<div>
You can also search using the
<Link to="https://musicbrainz.org/search"> MusicBrainz ID </Link>
of an artist e.g. lidarr:cc197bad-dc9c-440d-a5b5-d52ba2e14234
of an artist e.g. readarr:cc197bad-dc9c-440d-a5b5-d52ba2e14234
</div>
</div>
}

@ -50,7 +50,7 @@ class AddDownloadClientModalContent extends Component {
<div>
<Alert kind={kinds.INFO}>
<div>Lidarr supports any downloadClient that uses the Newznab standard, as well as other downloadClients listed below.</div>
<div>Readarr supports any downloadClient that uses the Newznab standard, as well as other downloadClients listed below.</div>
<div>For more information on the individual downloadClients, click on the info buttons.</div>
</Alert>

@ -88,7 +88,7 @@ function EditRemotePathMappingModalContent(props) {
<FormInputGroup
type={inputTypes.PATH}
name="localPath"
helpText="Path that Lidarr should use to access the remote path locally"
helpText="Path that Readarr should use to access the remote path locally"
{...localPath}
onChange={onInputChange}
/>

@ -24,7 +24,7 @@ function AnalyticSettings(props) {
<FormInputGroup
type={inputTypes.CHECK}
name="analyticsEnabled"
helpText="Send anonymous usage and error information to Lidarr's servers. This includes information on your browser, which Lidarr WebUI pages you use, error reporting as well as OS and runtime version. We will use this information to prioritize features and bug fixes."
helpText="Send anonymous usage and error information to Readarr's servers. This includes information on your browser, which Readarr WebUI pages you use, error reporting as well as OS and runtime version. We will use this information to prioritize features and bug fixes."
helpTextWarning="Requires restart to take effect"
onChange={onInputChange}
{...analyticsEnabled}

@ -34,7 +34,7 @@ function BackupSettings(props) {
<FormInputGroup
type={inputTypes.PATH}
name="backupFolder"
helpText="Relative paths will be under Lidarr's AppData directory"
helpText="Relative paths will be under Readarr's AppData directory"
onChange={onInputChange}
{...backupFolder}
/>
@ -50,7 +50,7 @@ function BackupSettings(props) {
type={inputTypes.NUMBER}
name="backupInterval"
unit="days"
helpText="Interval to backup the Lidarr DB and settings"
helpText="Interval to backup the Readarr DB and settings"
onChange={onInputChange}
{...backupInterval}
/>

@ -179,9 +179,9 @@ class GeneralSettings extends Component {
<ConfirmModal
isOpen={this.state.isRestartRequiredModalOpen}
kind={kinds.DANGER}
title="Restart Lidarr"
title="Restart Readarr"
message={
`Lidarr requires a restart to apply changes, do you want to restart now? ${isWindowsService ? 'Depending which user is running the Lidarr service you may need to restart Lidarr as admin once before the service will start automatically.' : ''}`
`Readarr requires a restart to apply changes, do you want to restart now? ${isWindowsService ? 'Depending which user is running the Readarr service you may need to restart Readarr as admin once before the service will start automatically.' : ''}`
}
cancelLabel="I'll restart later"
confirmLabel="Restart Now"

@ -156,7 +156,7 @@ function HostSettings(props) {
<FormInputGroup
type={inputTypes.CHECK}
name="launchBrowser"
helpText=" Open a web browser and navigate to Lidarr homepage on app start."
helpText=" Open a web browser and navigate to Readarr homepage on app start."
onChange={onInputChange}
{...launchBrowser}
/>

@ -84,7 +84,7 @@ class SecuritySettings extends Component {
type={inputTypes.SELECT}
name="authenticationMethod"
values={authenticationMethodOptions}
helpText="Require Username and Password to access Lidarr"
helpText="Require Username and Password to access Readarr"
helpTextWarning="Requires restart to take effect"
onChange={onInputChange}
{...authenticationMethod}

@ -55,8 +55,8 @@ function UpdateSettings(props) {
<FormInputGroup
type={inputTypes.AUTO_COMPLETE}
name="branch"
helpText="Branch to use to update Lidarr"
helpLink="https://github.com/Lidarr/Lidarr/wiki/Release-Branches"
helpText="Branch to use to update Readarr"
helpLink="https://github.com/Readarr/Readarr/wiki/Release-Branches"
{...branch}
values={branchValues}
onChange={onInputChange}
@ -92,8 +92,8 @@ function UpdateSettings(props) {
type={inputTypes.SELECT}
name="updateMechanism"
values={updateOptions}
helpText="Use Lidarr's built-in updater or a script"
helpLink="https://github.com/Lidarr/Lidarr/wiki/Updating"
helpText="Use Readarr's built-in updater or a script"
helpLink="https://github.com/Readarr/Readarr/wiki/Updating"
onChange={onInputChange}
{...updateMechanism}
/>

@ -50,7 +50,7 @@ class AddImportListModalContent extends Component {
<div>
<Alert kind={kinds.INFO}>
<div>Lidarr supports multiple lists for importing Albums and Artists into the database.</div>
<div>Readarr supports multiple lists for importing Albums and Artists into the database.</div>
<div>For more information on the individual lists, click on the info buttons.</div>
</Alert>
{

@ -115,7 +115,7 @@ function EditImportListModalContent(props) {
<FormInputGroup
type={inputTypes.CHECK}
name="enableAutomaticAdd"
helpText={'Add artist/albums to Lidarr when syncs are performed via the UI or by Lidarr'}
helpText={'Add artist/albums to Readarr when syncs are performed via the UI or by Readarr'}
{...enableAutomaticAdd}
onChange={onInputChange}
/>
@ -186,7 +186,7 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Lidarr Tags</FormLabel>
<FormLabel>Readarr Tags</FormLabel>
<FormInputGroup
type={inputTypes.TAG}

@ -50,7 +50,7 @@ class AddIndexerModalContent extends Component {
<div>
<Alert kind={kinds.INFO}>
<div>Lidarr supports any indexer that uses the Newznab standard, as well as other indexers listed below.</div>
<div>Readarr supports any indexer that uses the Newznab standard, as well as other indexers listed below.</div>
<div>For more information on the individual indexers, click on the info buttons.</div>
</Alert>

@ -95,7 +95,7 @@ function EditIndexerModalContent(props) {
<FormInputGroup
type={inputTypes.CHECK}
name="enableAutomaticSearch"
helpText={supportsSearch.value ? 'Will be used when automatic searches are performed via the UI or by Lidarr' : undefined}
helpText={supportsSearch.value ? 'Will be used when automatic searches are performed via the UI or by Readarr' : undefined}
helpTextWarning={supportsSearch.value ? undefined : 'Search is not supported with this indexer'}
isDisabled={!supportsSearch.value}
{...enableAutomaticSearch}

@ -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/Lidarr/Lidarr/wiki/RSS-Sync"
helpLink="https://github.com/Readarr/Readarr/wiki/RSS-Sync"
onChange={onInputChange}
{...settings.rssSyncInterval}
/>

@ -140,7 +140,7 @@ class MediaManagement extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="skipFreeSpaceCheckWhenImporting"
helpText="Use when Lidarr is unable to detect free space from your artist root folder"
helpText="Use when Readarr is unable to detect free space from your artist root folder"
onChange={onInputChange}
{...settings.skipFreeSpaceCheckWhenImporting}
/>
@ -175,7 +175,7 @@ class MediaManagement extends Component {
type={inputTypes.CHECK}
name="copyUsingHardlinks"
helpText="Use Hardlinks when trying to copy files from torrents that are still being seeded"
helpTextWarning="Occasionally, file locks may prevent renaming files that are being seeded. You may temporarily disable seeding and use Lidarr's rename function as a work around."
helpTextWarning="Occasionally, file locks may prevent renaming files that are being seeded. You may temporarily disable seeding and use Readarr's rename function as a work around."
onChange={onInputChange}
{...settings.copyUsingHardlinks}
/>
@ -225,7 +225,7 @@ class MediaManagement extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="autoUnmonitorPreviouslyDownloadedTracks"
helpText="Tracks deleted from disk are automatically unmonitored in Lidarr"
helpText="Tracks deleted from disk are automatically unmonitored in Readarr"
onChange={onInputChange}
{...settings.autoUnmonitorPreviouslyDownloadedTracks}
/>
@ -282,7 +282,7 @@ class MediaManagement extends Component {
type={inputTypes.SELECT}
name="rescanAfterRefresh"
helpText="Rescan the artist folder after refreshing the artist"
helpTextWarning="Lidarr will not automatically detect changes to files when not set to 'Always'"
helpTextWarning="Readarr will not automatically detect changes to files when not set to 'Always'"
values={rescanAfterRefreshOptions}
onChange={onInputChange}
{...settings.rescanAfterRefresh}
@ -299,7 +299,7 @@ class MediaManagement extends Component {
type={inputTypes.SELECT}
name="allowFingerprinting"
helpText="Use fingerprinting to improve accuracy of track matching"
helpTextWarning="This requires Lidarr to read parts of the file which will slow down scans and may cause high disk or network activity."
helpTextWarning="This requires Readarr to read parts of the file which will slow down scans and may cause high disk or network activity."
values={allowFingerprintingOptions}
onChange={onInputChange}
{...settings.allowFingerprinting}
@ -386,7 +386,7 @@ class MediaManagement extends Component {
<FormInputGroup
type={inputTypes.TEXT}
name="fileChmod"
helpText="Octal, applied to media files when imported/renamed by Lidarr"
helpText="Octal, applied to media files when imported/renamed by Readarr"
onChange={onInputChange}
{...settings.fileChmod}
/>
@ -401,7 +401,7 @@ class MediaManagement extends Component {
<FormInputGroup
type={inputTypes.TEXT}
name="folderChmod"
helpText="Octal, applied to artist/album folders created by Lidarr"
helpText="Octal, applied to artist/album folders created by Readarr"
values={fileDateOptions}
onChange={onInputChange}
{...settings.folderChmod}

@ -153,7 +153,7 @@ class Naming extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="renameTracks"
helpText="Lidarr will use the existing file name if renaming is disabled"
helpText="Readarr will use the existing file name if renaming is disabled"
onChange={onInputChange}
{...settings.renameTracks}
/>

@ -156,12 +156,12 @@ function EditRootFolderModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Default Lidarr Tags</FormLabel>
<FormLabel>Default Readarr Tags</FormLabel>
<FormInputGroup
type={inputTypes.TAG}
name="defaultTags"
helpText="Default Lidarr Tags for artists detected in this folder"
helpText="Default Readarr Tags for artists detected in this folder"
{...defaultTags}
onChange={onInputChange}
/>

@ -54,7 +54,7 @@ function MetadataProvider(props) {
type={inputTypes.TEXT}
name="metadataSource"
helpText="Alternative Metadata Source (Leave blank for default)"
helpLink="https://github.com/Lidarr/Lidarr/wiki/Metadata-Source"
helpLink="https://github.com/Readarr/Readarr/wiki/Metadata-Source"
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/Lidarr/Lidarr/wiki/Write-Tags"
helpLink="https://github.com/Readarr/Readarr/wiki/Write-Tags"
values={writeAudioTagOptions}
onChange={onInputChange}
{...settings.writeAudioTags}
@ -83,7 +83,7 @@ function MetadataProvider(props) {
<FormInputGroup
type={inputTypes.CHECK}
name="scrubAudioTags"
helpText="Remove existing tags from files, leaving only those added by Lidarr."
helpText="Remove existing tags from files, leaving only those added by Readarr."
onChange={onInputChange}
{...settings.scrubAudioTags}
/>

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

@ -182,7 +182,7 @@ class EditQualityProfileModalContent extends Component {
name="cutoff"
{...cutoff}
values={qualities}
helpText="Once this quality is reached Lidarr will no longer download albums"
helpText="Once this quality is reached Readarr will no longer download albums"
onChange={onCutoffChange}
/>
</FormGroup>

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

@ -1,4 +1,4 @@
if (window.Lidarr.analytics) {
if (window.Readarr.analytics) {
const d = document;
const g = d.createElement('script');
const s = d.getElementsByTagName('script')[0];

@ -31,7 +31,7 @@ export const defaultState = {
messages: {
items: []
},
version: window.Lidarr.version,
version: window.Readarr.version,
isUpdated: false,
isConnected: true,
isReconnecting: false,

@ -13,7 +13,7 @@ import createHandleActions from './Creators/createHandleActions';
// Variables
export const section = 'oAuth';
const callbackUrl = `${window.location.origin}${window.Lidarr.urlBase}/oauth.html`;
const callbackUrl = `${window.location.origin}${window.Readarr.urlBase}/oauth.html`;
//
// State

@ -88,7 +88,7 @@ const config = {
slicer,
serialize,
merge,
key: 'lidarr'
key: 'readarr'
};
export default function createPersistState() {

@ -37,7 +37,7 @@ function identity(stuff) {
function stripUrlBase(frame) {
if (frame.filename && window.Radarr.urlBase) {
frame.filename = frame.filename.replace(window.Lidarr.urlBase, '');
frame.filename = frame.filename.replace(window.Readarr.urlBase, '');
}
return frame;
}
@ -74,14 +74,14 @@ export default function createSentryMiddleware() {
release,
userHash,
isProduction
} = window.Lidarr;
} = window.Readarr;
if (!analytics) {
return;
}
const dsn = isProduction ? 'https://3639f9e2e2ae4872846b1c30d3122106@sentry.radarr.video/12' :
'https://099b1f21a5794acebd3160859035bda7@sentry.radarr.video/14';
const dsn = isProduction ? 'https://c2c8e08845994dbfb7eddb158b408172@sentry.radarr.video/18' :
'https://c2c8e08845994dbfb7eddb158b408172@sentry.radarr.video/18';
sentry.init({
dsn,

@ -1,4 +1,4 @@
const lidarrGreen = '#00A65B';
const readarrGreen = '#00A65B';
module.exports = {
textColor: '#515253',
@ -15,10 +15,10 @@ module.exports = {
successColor: '#27c24c',
dangerColor: '#f05050',
warningColor: '#ffa500',
infoColor: lidarrGreen,
infoColor: readarrGreen,
purple: '#7a43b6',
pink: '#ff69b4',
lidarrGreen,
readarrGreen,
helpTextColor: '#909293',
darkGray: '#888',
gray: '#adadad',
@ -27,7 +27,7 @@ module.exports = {
// Theme Colors
themeBlue: lidarrGreen,
themeBlue: readarrGreen,
themeAlternateBlue: '#00a65b',
themeRed: '#c4273c',
themeDarkColor: '#353535',

@ -96,7 +96,7 @@ class BackupRow extends Component {
<TableRowCell>
<Link
to={`${window.Lidarr.urlBase}${path}`}
to={`${window.Readarr.urlBase}${path}`}
noRouter={true}
>
{name}

@ -196,7 +196,7 @@ class RestoreBackupModalContent extends Component {
<ModalFooter>
<div className={styles.additionalInfo}>
Note: Lidarr will automatically restart and reload the UI during the restore process.
Note: Readarr will automatically restart and reload the UI during the restore process.
</div>
<Button onPress={onModalClose}>

@ -16,27 +16,27 @@ class MoreInfo extends Component {
<DescriptionList>
<DescriptionListItemTitle>Home page</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://lidarr.audio/">lidarr.audio</Link>
<Link to="https://readarr.audio/">readarr.audio</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Wiki</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://github.com/lidarr/Lidarr/wiki">wiki.lidarr.audio</Link>
<Link to="https://github.com/readarr/Readarr/wiki">wiki.readarr.audio</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Reddit</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://www.reddit.com/r/Lidarr/">Lidarr</Link>
<Link to="https://www.reddit.com/r/Readarr/">Readarr</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Discord</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://discord.gg/8Y7rDc9">#lidarr on Discord</Link>
<Link to="https://discord.gg/8Y7rDc9">#readarr on Discord</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Donations</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://opencollective.com/lidarr">Donate to Lidarr</Link>
<Link to="https://opencollective.com/readarr">Donate to Readarr</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Sonarr Donations</DescriptionListItemTitle>
@ -46,12 +46,12 @@ class MoreInfo extends Component {
<DescriptionListItemTitle>Source</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://github.com/lidarr/Lidarr/">github.com/Lidarr/Lidarr</Link>
<Link to="https://github.com/readarr/Readarr/">github.com/Readarr/Readarr</Link>
</DescriptionListItemDescription>
<DescriptionListItemTitle>Feature Requests</DescriptionListItemTitle>
<DescriptionListItemDescription>
<Link to="https://github.com/lidarr/Lidarr/issues">github.com/Lidarr/Lidarr/issues</Link>
<Link to="https://github.com/readarr/Readarr/issues">github.com/Readarr/Readarr/issues</Link>
</DescriptionListItemDescription>
</DescriptionList>

@ -89,7 +89,7 @@ class Updates extends Component {
size={30}
/>
<div className={styles.upToDateMessage}>
The latest version of Lidarr is already installed
The latest version of Readarr is already installed
</div>
{

@ -1,7 +1,7 @@
import $ from 'jquery';
const absUrlRegex = /^(https?:)?\/\//i;
const apiRoot = window.Lidarr.apiRoot;
const apiRoot = window.Readarr.apiRoot;
function isRelative(ajaxOptions) {
return !absUrlRegex.test(ajaxOptions.url);
@ -25,7 +25,7 @@ function addRootUrl(ajaxOptions) {
function addApiKey(ajaxOptions) {
ajaxOptions.headers = ajaxOptions.headers || {};
ajaxOptions.headers['X-Api-Key'] = window.Lidarr.apiKey;
ajaxOptions.headers['X-Api-Key'] = window.Readarr.apiKey;
}
export default function createAjaxRequest(originalAjaxOptions) {

@ -1,3 +1,3 @@
export default function getPathWithUrlBase(path) {
return `${window.Lidarr.urlBase}${path}`;
return `${window.Readarr.urlBase}${path}`;
}

@ -240,7 +240,7 @@ class CutoffUnmet extends Component {
Are you sure you want to search for all {totalRecords} Cutoff Unmet albums?
</div>
<div>
This cannot be cancelled once started without restarting Lidarr.
This cannot be cancelled once started without restarting Readarr.
</div>
</div>
}

@ -257,7 +257,7 @@ class Missing extends Component {
Are you sure you want to search for all {totalRecords} missing albums?
</div>
<div>
This cannot be cancelled once started without restarting Lidarr.
This cannot be cancelled once started without restarting Readarr.
</div>
</div>
}

@ -11,7 +11,7 @@
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="#3a3f51" />
<meta name="description" content="Lidarr">
<meta name="description" content="Readarr">
<link
rel="apple-touch-icon"
@ -50,7 +50,7 @@
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css">
<!-- webpack bundles head -->
<title>Lidarr</title>
<title>Readarr</title>
<!--
The super basic styling for .root will live here,

@ -11,7 +11,7 @@
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="#3a3f51" />
<meta name="description" content="Lidarr" />
<meta name="description" content="Readarr" />
<link
rel="apple-touch-icon"
@ -50,7 +50,7 @@
<link rel="stylesheet" type="text/css" href="/Content/styles.css" />
<link rel="stylesheet" type="text/css" href="/Content/Fonts/fonts.css" />
<title>Login - Lidarr</title>
<title>Login - Readarr</title>
<style>
body {
@ -251,7 +251,7 @@
</span>
<a
href="https://github.com/lidarr/Lidarr/wiki/Forgot-my-Password"
href="https://github.com/readarr/Readarr/wiki/Forgot-my-Password"
class="forgot-password"
>Forgot your password?</a
>
@ -269,7 +269,7 @@
<span>&copy;</span>
<span id="year"></span>
<span>-</span>
<span>Lidarr</span>
<span>Readarr</span>
</div>
</div>
</div>

@ -1,2 +1,2 @@
/* eslint no-undef: 0 */
__webpack_public_path__ = `${window.Lidarr.urlBase}/`;
__webpack_public_path__ = `${window.Readarr.urlBase}/`;

@ -4,8 +4,8 @@
DIR=$(cd "$(dirname "$0")"; pwd)
#change these values to match your app
EXE_PATH="$DIR/Lidarr.exe"
APPNAME="Lidarr"
EXE_PATH="$DIR/Readarr.exe"
APPNAME="Readarr"
#set up environment
if [[ -x '/opt/local/bin/mono' ]]; then

@ -11,15 +11,15 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>Lidarr</string>
<string>Readarr</string>
<key>CFBundleIconFile</key>
<string>lidarr.icns</string>
<string>readarr.icns</string>
<key>CFBundleIdentifier</key>
<string>com.osx.lidarr.audio</string>
<string>com.osx.readarr.audio</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Lidarr</string>
<string>Readarr</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>

@ -1,7 +1,7 @@
{
"name": "lidarr",
"name": "readarr",
"version": "1.0.0",
"description": "Lidarr",
"description": "Readarr",
"scripts": {
"build": "gulp build",
"start": "gulp watch",
@ -14,9 +14,9 @@
},
"repository": {
"type": "git",
"url": "git://github.com/Lidarr/Lidarr.git"
"url": "git://github.com/Readarr/Readarr.git"
},
"author": "Team Lidarr",
"author": "Team Readarr",
"license": "GPL-3.0",
"readmeFilename": "readme.md",
"dependencies": {

@ -1,3 +1,3 @@
REM SET BUILD_NUMBER=1
REM SET branch=develop
inno\ISCC.exe lidarr.iss
inno\ISCC.exe readarr.iss

@ -1,14 +1,14 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define AppName "Lidarr"
#define AppPublisher "Team Lidarr"
#define AppURL "https://lidarr.audio/"
#define ForumsURL "https://forums.lidarr.audio/"
#define AppExeName "Lidarr.exe"
#define AppName "Readarr"
#define AppPublisher "Team Readarr"
#define AppURL "https://readarr.audio/"
#define ForumsURL "https://forums.readarr.audio/"
#define AppExeName "Readarr.exe"
#define BaseVersion GetEnv('MAJORVERSION')
#define BuildNumber GetEnv('MINORVERSION')
#define BuildVersion GetEnv('LIDARRVERSION')
#define BuildVersion GetEnv('READARRVERSION')
#define BranchName GetEnv('BUILD_SOURCEBRANCHNAME')
[Setup]
@ -22,15 +22,15 @@ AppPublisher={#AppPublisher}
AppPublisherURL={#AppURL}
AppSupportURL={#ForumsURL}
AppUpdatesURL={#AppURL}
DefaultDirName={commonappdata}\Lidarr\bin
DefaultDirName={commonappdata}\Readarr\bin
DisableDirPage=yes
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
OutputBaseFilename=Lidarr.{#BranchName}.{#BuildVersion}.windows.{#Framework}
OutputBaseFilename=Readarr.{#BranchName}.{#BuildVersion}.windows.{#Framework}
SolidCompression=yes
AppCopyright=Creative Commons 3.0 License
AllowUNCPath=False
UninstallDisplayIcon={app}\Lidarr.exe
UninstallDisplayIcon={app}\Readarr.exe
DisableReadyPage=True
CompressionThreads=2
Compression=lzma2/normal
@ -48,29 +48,29 @@ Name: "startupShortcut"; Description: "Create shortcut in Startup folder (Starts
Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked
[Files]
Source: "..\_artifacts\windows\{#Framework}\Lidarr\Lidarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\_artifacts\windows\{#Framework}\Lidarr\*"; Excludes: "Lidarr.Update"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "..\_artifacts\windows\{#Framework}\Readarr\Readarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\_artifacts\windows\{#Framework}\Readarr\*"; Excludes: "Readarr.Update"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"
Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"
Name: "{userstartup}\{#AppName}"; Filename: "{app}\Lidarr.exe"; WorkingDir: "{app}"; Tasks: startupShortcut
Name: "{userstartup}\{#AppName}"; Filename: "{app}\Readarr.exe"; WorkingDir: "{app}"; Tasks: startupShortcut
[Run]
Filename: "{app}\Lidarr.Console.exe"; StatusMsg: "Removing previous Windows Service"; Parameters: "/u"; Flags: runhidden waituntilterminated;
Filename: "{app}\Lidarr.Console.exe"; Description: "Enable Access from Other Devices"; StatusMsg: "Enabling Remote access"; Parameters: "/registerurl"; Flags: postinstall runascurrentuser runhidden waituntilterminated; Tasks: startupShortcut none;
Filename: "{app}\Lidarr.Console.exe"; StatusMsg: "Installing Windows Service"; Parameters: "/i"; Flags: runhidden waituntilterminated; Tasks: windowsService
Filename: "{app}\Lidarr.exe"; Description: "Open Lidarr Web UI"; Flags: postinstall skipifsilent nowait; Tasks: windowsService;
Filename: "{app}\Lidarr.exe"; Description: "Start Lidarr"; Flags: postinstall skipifsilent nowait; Tasks: startupShortcut none;
Filename: "{app}\Readarr.Console.exe"; StatusMsg: "Removing previous Windows Service"; Parameters: "/u"; Flags: runhidden waituntilterminated;
Filename: "{app}\Readarr.Console.exe"; Description: "Enable Access from Other Devices"; StatusMsg: "Enabling Remote access"; Parameters: "/registerurl"; Flags: postinstall runascurrentuser runhidden waituntilterminated; Tasks: startupShortcut none;
Filename: "{app}\Readarr.Console.exe"; StatusMsg: "Installing Windows Service"; Parameters: "/i"; Flags: runhidden waituntilterminated; Tasks: windowsService
Filename: "{app}\Readarr.exe"; Description: "Open Readarr Web UI"; Flags: postinstall skipifsilent nowait; Tasks: windowsService;
Filename: "{app}\Readarr.exe"; Description: "Start Readarr"; Flags: postinstall skipifsilent nowait; Tasks: startupShortcut none;
[UninstallRun]
Filename: "{app}\lidarr.console.exe"; Parameters: "/u"; Flags: waituntilterminated skipifdoesntexist
Filename: "{app}\readarr.console.exe"; Parameters: "/u"; Flags: waituntilterminated skipifdoesntexist
[Code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{commonappdata}\Lidarr\bin\Lidarr.Console.exe'), '/u', '', 0, ewWaitUntilTerminated, ResultCode)
Exec(ExpandConstant('{commonappdata}\Readarr\bin\Readarr.Console.exe'), '/u', '', 0, ewWaitUntilTerminated, ResultCode)
end;

@ -1,5 +1,5 @@
<Project>
<!-- Common to all Lidarr Projects -->
<!-- Common to all Readarr Projects -->
<PropertyGroup>
<CodeAnalysisRuleSet>$(SolutionDir)Stylecop.ruleset</CodeAnalysisRuleSet>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@ -9,35 +9,35 @@
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64;linux-arm;linux-arm64</RuntimeIdentifiers>
<ExcludedRuntimeFrameworkPairs>win-x64:net462;osx-x64:net462;linux-arm:net462;linux-arm64:net462</ExcludedRuntimeFrameworkPairs>
<LidarrRootDir>$(MSBuildThisFileDirectory)..\</LidarrRootDir>
<ReadarrRootDir>$(MSBuildThisFileDirectory)..\</ReadarrRootDir>
<!-- Specifies the type of output -->
<LidarrOutputType>Library</LidarrOutputType>
<LidarrOutputType Condition="$(MSBuildProjectName.Contains('.Test'))">Test</LidarrOutputType>
<LidarrOutputType Condition="'$(MSBuildProjectName)'=='ServiceInstall'">Exe</LidarrOutputType>
<LidarrOutputType Condition="'$(MSBuildProjectName)'=='ServiceUninstall'">Exe</LidarrOutputType>
<LidarrOutputType Condition="'$(MSBuildProjectName)'=='Lidarr'">Exe</LidarrOutputType>
<LidarrOutputType Condition="'$(MSBuildProjectName)'=='Lidarr.Console'">Exe</LidarrOutputType>
<LidarrOutputType Condition="'$(MSBuildProjectName)'=='Lidarr.Update'">Update</LidarrOutputType>
<ReadarrOutputType>Library</ReadarrOutputType>
<ReadarrOutputType Condition="$(MSBuildProjectName.Contains('.Test'))">Test</ReadarrOutputType>
<ReadarrOutputType Condition="'$(MSBuildProjectName)'=='ServiceInstall'">Exe</ReadarrOutputType>
<ReadarrOutputType Condition="'$(MSBuildProjectName)'=='ServiceUninstall'">Exe</ReadarrOutputType>
<ReadarrOutputType Condition="'$(MSBuildProjectName)'=='Readarr'">Exe</ReadarrOutputType>
<ReadarrOutputType Condition="'$(MSBuildProjectName)'=='Readarr.Console'">Exe</ReadarrOutputType>
<ReadarrOutputType Condition="'$(MSBuildProjectName)'=='Readarr.Update'">Update</ReadarrOutputType>
<!-- Specifies whether it's one of our own libraries -->
<LidarrProject>false</LidarrProject>
<LidarrProject Condition="$(MSBuildProjectName.StartsWith('Lidarr'))">true</LidarrProject>
<LidarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceInstall'))">true</LidarrProject>
<LidarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceUninstall'))">true</LidarrProject>
<ReadarrProject>false</ReadarrProject>
<ReadarrProject Condition="$(MSBuildProjectName.StartsWith('Readarr'))">true</ReadarrProject>
<ReadarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceInstall'))">true</ReadarrProject>
<ReadarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceUninstall'))">true</ReadarrProject>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition="'$(Configuration)'==''">Release</Configuration>
<!-- Centralize intermediate and default outputs -->
<BaseIntermediateOutputPath>$(LidarrRootDir)_temp\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(LidarrRootDir)_temp\obj\$(MSBuildProjectName)\$(Configuration)\</IntermediateOutputPath>
<OutputPath>$(LidarrRootDir)_temp\bin\$(Configuration)\$(MSBuildProjectName)\</OutputPath>
<BaseIntermediateOutputPath>$(ReadarrRootDir)_temp\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(ReadarrRootDir)_temp\obj\$(MSBuildProjectName)\$(Configuration)\</IntermediateOutputPath>
<OutputPath>$(ReadarrRootDir)_temp\bin\$(Configuration)\$(MSBuildProjectName)\</OutputPath>
<!-- Output to _output and _tests respectively -->
<OutputPath Condition="'$(LidarrProject)'=='true'">$(LidarrRootDir)_output\</OutputPath>
<OutputPath Condition="'$(LidarrOutputType)'=='Test'">$(LidarrRootDir)_tests\</OutputPath>
<OutputPath Condition="'$(LidarrOutputType)'=='Update'">$(LidarrRootDir)_output\Lidarr.Update\</OutputPath>
<OutputPath Condition="'$(ReadarrProject)'=='true'">$(ReadarrRootDir)_output\</OutputPath>
<OutputPath Condition="'$(ReadarrOutputType)'=='Test'">$(ReadarrRootDir)_tests\</OutputPath>
<OutputPath Condition="'$(ReadarrOutputType)'=='Update'">$(ReadarrRootDir)_output\Readarr.Update\</OutputPath>
<!-- Paths relative to project file for better readability -->
<BaseIntermediateOutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(BaseIntermediateOutputPath)'))</BaseIntermediateOutputPath>
@ -48,17 +48,17 @@
</PropertyGroup>
<!-- Test projects need bindingRedirects -->
<PropertyGroup Condition="'$(LidarrOutputType)'=='Test'">
<PropertyGroup Condition="'$(ReadarrOutputType)'=='Test'">
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<SelfContained>false</SelfContained>
</PropertyGroup>
<!-- Set the Product and Version info for our own projects -->
<PropertyGroup Condition="'$(LidarrProject)'=='true'">
<Product>Lidarr</Product>
<Company>lidarr.audio</Company>
<Copyright>Copyright 2017-$([System.DateTime]::Now.ToString('yyyy')) lidarr.audio (GNU General Public v3)</Copyright>
<PropertyGroup Condition="'$(ReadarrProject)'=='true'">
<Product>Readarr</Product>
<Company>readarr.audio</Company>
<Copyright>Copyright 2017-$([System.DateTime]::Now.ToString('yyyy')) readarr.audio (GNU General Public v3)</Copyright>
<!-- Should be replaced by CI -->
<AssemblyVersion>10.0.0.*</AssemblyVersion>
@ -72,7 +72,7 @@
</PropertyGroup>
<!-- Set the AssemblyConfiguration attribute for projects -->
<ItemGroup Condition="'$(LidarrProject)'=='true'">
<ItemGroup Condition="'$(ReadarrProject)'=='true'">
<AssemblyAttribute Include="System.Reflection.AssemblyConfigurationAttribute">
<_Parameter1>$(AssemblyConfiguration)</_Parameter1>
</AssemblyAttribute>
@ -80,7 +80,7 @@
<PropertyGroup>
<!-- For now keep the NzbDrone namespace -->
<RootNamespace Condition="'$(LidarrProject)'=='true'">$(MSBuildProjectName.Replace('Lidarr','NzbDrone'))</RootNamespace>
<RootNamespace Condition="'$(ReadarrProject)'=='true'">$(MSBuildProjectName.Replace('Readarr','NzbDrone'))</RootNamespace>
</PropertyGroup>
<!-- Allow building net framework using mono -->
@ -92,7 +92,7 @@
</ItemGroup>
<!-- Set up stylecop -->
<ItemGroup Condition="'$(LidarrProject)'=='true'">
<ItemGroup Condition="'$(ReadarrProject)'=='true'">
<!-- StyleCop analysis -->
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>

@ -1,12 +0,0 @@
using Lidarr.Http;
namespace Lidarr.Api.V1
{
public abstract class LidarrV1FeedModule : LidarrModule
{
protected LidarrV1FeedModule(string resource)
: base("/feed/v1/" + resource.Trim('/'))
{
}
}
}

@ -1,12 +0,0 @@
using Lidarr.Http;
namespace Lidarr.Api.V1
{
public abstract class LidarrV1Module : LidarrModule
{
protected LidarrV1Module(string resource)
: base("/api/v1/" + resource.Trim('/'))
{
}
}
}

@ -1,8 +1,8 @@
using FluentAssertions;
using Lidarr.Http.ClientSchema;
using NUnit.Framework;
using NzbDrone.Core.Annotations;
using NzbDrone.Test.Common;
using Readarr.Http.ClientSchema;
namespace NzbDrone.Api.Test.ClientSchemaTests
{

@ -13,8 +13,8 @@
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Core\Lidarr.Core.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Lidarr.Test.Common.csproj" />
<ProjectReference Include="..\Lidarr.Http\Lidarr.Http.csproj" />
<ProjectReference Include="..\NzbDrone.Core\Readarr.Core.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Readarr.Test.Common.csproj" />
<ProjectReference Include="..\Readarr.Http\Readarr.Http.csproj" />
</ItemGroup>
</Project>

@ -42,12 +42,12 @@ namespace NzbDrone.Automation.Test
_runner.KillAll();
_runner.Start();
driver.Url = "http://localhost:8686";
driver.Url = "http://localhost:8787";
var page = new PageBase(driver);
page.WaitForNoSpinner();
driver.ExecuteScript("window.Lidarr.NameViews = true;");
driver.ExecuteScript("window.Readarr.NameViews = true;");
GetPageErrors().Should().BeEmpty();
}

@ -11,6 +11,6 @@
<PackageReference Include="Selenium.Support" Version="3.141.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Lidarr.Test.Common.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Readarr.Test.Common.csproj" />
</ItemGroup>
</Project>

@ -49,7 +49,7 @@ namespace NzbDrone.Common.Test
public void GetValue_Success()
{
const string key = "Port";
const string value = "8686";
const string value = "8787";
var result = Subject.GetValue(key, value);
@ -60,7 +60,7 @@ namespace NzbDrone.Common.Test
public void GetInt_Success()
{
const string key = "Port";
const int value = 8686;
const int value = 8787;
var result = Subject.GetValueInt(key, value);
@ -89,7 +89,7 @@ namespace NzbDrone.Common.Test
[Test]
public void GetPort_Success()
{
const int value = 8686;
const int value = 8787;
var result = Subject.Port;

@ -169,14 +169,14 @@ namespace NzbDrone.Common.Test.Http
}
var request = new HttpRequestBuilder($"https://{_httpBinHost}/redirect-to")
.AddQueryParam("url", $"https://lidarr.audio/")
.AddQueryParam("url", $"https://readarr.audio/")
.Build();
request.AllowAutoRedirect = true;
var response = Subject.Get(request);
response.StatusCode.Should().Be(HttpStatusCode.OK);
response.Content.Should().Contain("Lidarr");
response.Content.Should().Contain("Readarr");
ExceptionVerification.ExpectedErrors(0);
}
@ -203,7 +203,7 @@ namespace NzbDrone.Common.Test.Http
var userAgent = response.Resource.Headers["User-Agent"].ToString();
userAgent.Should().Contain("Lidarr");
userAgent.Should().Contain("Readarr");
}
[TestCase("Accept", "text/xml, text/rss+xml, application/rss+xml")]
@ -222,7 +222,7 @@ namespace NzbDrone.Common.Test.Http
{
var file = GetTempFilePath();
Assert.Throws<WebException>(() => Subject.DownloadFile("https://download.lidarr.audio/wrongpath", file));
Assert.Throws<WebException>(() => Subject.DownloadFile("https://download.readarr.audio/wrongpath", file));
File.Exists(file).Should().BeFalse();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save