| 
									
										
										
										
											2020-11-01 12:49:10 +01:00
										 |  |  | # Musicus
 | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 12:49:10 +01:00
										 |  |  | The classical music player and organizer. | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | https://musicus.org | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Hacking
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 18:04:49 +01:00
										 |  |  | ### Building
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 17:37:04 +01:00
										 |  |  | Musicus uses the [Meson build system](https://mesonbuild.com/). You can build | 
					
						
							|  |  |  | it using the following commands: | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-11-01 17:37:04 +01:00
										 |  |  | $ meson build | 
					
						
							|  |  |  | $ ninja -C build | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 17:37:04 +01:00
										 |  |  | Afterwards the resulting binary executable is under | 
					
						
							|  |  |  | `build/target/debug/musicus`. | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 18:04:49 +01:00
										 |  |  | ### Flatpak
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There is a Flatpak manifest file called `de.johrpan.musicus.json`. To build a | 
					
						
							|  |  |  | Flatpak you need the the latest Gnome SDK and the Freedesktop SDK with the Rust | 
					
						
							|  |  |  | extension. You can install those using the following commands: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | $ flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo | 
					
						
							|  |  |  | $ flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo | 
					
						
							|  |  |  | $ flatpak install --user gnome-nightly org.gnome.Sdk org.gnome.Platform | 
					
						
							|  |  |  | $ flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//19.08 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Afterwards, the following commands will build, install and run the application: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | $ rm -rf flatpak | 
					
						
							|  |  |  | $ flatpak-builder --user --install flatpak de.johrpan.musicus.json | 
					
						
							|  |  |  | $ flatpak run de.johrpan.musicus | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Special requirements
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-28 14:15:59 +02:00
										 |  |  | This program uses [Diesel](https://diesel.rs) as its ORM. After installing | 
					
						
							|  |  |  | the Diesel command line utility, you will be able to create a new schema | 
					
						
							|  |  |  | migration using the following command: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | $ diesel migration generate [change_description] | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To update the `src/database/schema.rs` file, you should use the following | 
					
						
							|  |  |  | command: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | $ diesel migration run --database-url test.sqlite | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This file should never be edited manually. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | ## License
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 12:49:10 +01:00
										 |  |  | Musicus is free and open source software: you can redistribute it and/or modify | 
					
						
							|  |  |  | it under the terms of the GNU Affero General Public License as published by the | 
					
						
							|  |  |  | Free Software Foundation, either version 3 of the License, or (at your option) | 
					
						
							|  |  |  | any later version. | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-01 12:49:10 +01:00
										 |  |  | Musicus is distributed in the hope that it will be useful, but WITHOUT ANY | 
					
						
							|  |  |  | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | 
					
						
							|  |  |  | A PARTICULAR PURPOSE. See the GNU Affero General Public License for more | 
					
						
							| 
									
										
										
										
											2020-09-27 21:58:42 +02:00
										 |  |  | details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You should have received a copy of the GNU Affero General Public License along | 
					
						
							|  |  |  | with this program. If not, see https://www.gnu.org/licenses/. |