Skip to content

Commit

Permalink
move to utils/
Browse files Browse the repository at this point in the history
  • Loading branch information
hinto-janai committed Mar 24, 2023
1 parent c2ac6e1 commit 07e231b
Show file tree
Hide file tree
Showing 13 changed files with 153 additions and 18 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Music player for Windows/macOS/Linux.
* [Comparison](#Comparison)
* [Frontends](#Frontends)
* [Documentation](#Documentation)
* [Install](#Install)
* [Build](#Build)
* [License](#License)

Expand Down Expand Up @@ -56,6 +57,25 @@ In documentation:
- `shukusai` _specifically_ means Festival's internals
- `Festival` means a frontend OR the project as a whole

## Install
Pre-compiled binaries are available [here](https://github.com/hinto-janai/festival/releases), or on [Festival's website](https://festival.pm/downloads).

---

### Cargo
If you have `cargo`, you can install Festival from [`crates.io`](https://crates.io/crates/festival-gui):
```bash
cargo install festival-gui
```

---

### Arch
If you're on Arch Linux, you can install Festival from the [`AUR`](https://aur.archlinux.org/packages/festival-gui-bin):
```bash
paru festival-gui-bin
```

## Build
### General Info
You need [`cargo`](https://www.rust-lang.org/learn/get-started).
Expand Down
22 changes: 4 additions & 18 deletions src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ The code itself is also littered with comments. Some `grep`-able keywords:
| `HACK` | This code is a brittle workaround
| `TODO` | This should be implemented... someday

---

The crate [`festival`](https://crates.io/crates/festival) is being squatted, so instead, Festival's
original name, [`shukusai`](https://crates.io/crates/shukusai), is the name used to represent the internals.

Expand All @@ -23,6 +25,8 @@ In documentation:
- `shukusai` _specifically_ means `Festival`'s internals
- `Festival` means a frontend OR the project as a whole

---

* [Code Structure](#Code-Structure)
- [Data](#Data)
- [Threads](#Threads)
Expand Down Expand Up @@ -104,8 +108,6 @@ These are top-level files for miscellaneous stuff:
| `macros.rs` | General macros
| `lib.rs` | `pub` re-exposing, `doc` comments

---

# Overview
<div align="center">

Expand Down Expand Up @@ -225,8 +227,6 @@ The GUI library currently used is [`egui`](https://github.com/emilk/egui).

The term `GUI` in the documentation can apply to any other frontend (`web`, `daemon`, `cli`).

---

# Collection
The core "database" that holds all the (meta)data about the user's music.

Expand Down Expand Up @@ -546,8 +546,6 @@ Cons:

This is the option I chose.

---

# Modularity
`shukusai` is more or less separated into "entities". Each "entity" in the system is its own thing, and only passes messages to/from `Kernel`. This approach was taken because:

Expand Down Expand Up @@ -616,8 +614,6 @@ Also, it's always a nice feeling to have the type checker behind your back. This
- Cleaner, separated, and more well defined code
- Using the word `Kernel` is cool

---

# Disk
Specification of what and where `shukusai` saves things to disk.

Expand Down Expand Up @@ -690,8 +686,6 @@ They'll immediately get deleted, and `shukusai` will act on the signal.
| macOS | `$HOME/Library/Application Support/Festival/signal/` | `/Users/Alice/Library/Application Support/Festival/signal/` |
| Windows | `{FOLDERID_LocalAppData}\Festival\signal\` | `C:\Users\Alice\AppData\Local\Festival\signal\` |

---

# Personal Libraries
These are libraries I made (because of `Festival`).

Expand Down Expand Up @@ -750,15 +744,11 @@ Even though _I_ am the one writing the code, and could just never call `.write()

And yes, it gets optimized away.

---

# External Libraries
There are forks of external libraries located in `external/` that contain some custom patches.

More details can be found at `external/README.md` on exactly what patches were made.

---

# Audio Codecs
The currently supported audio codecs that `shukusai` will parse, and play:

Expand All @@ -771,8 +761,6 @@ The currently supported audio codecs that `shukusai` will parse, and play:
- Vorbis
- WAV

---

# Image Formats
If the `Album` art is embedded within the `Song` as metadata, it will always be used.

Expand All @@ -787,8 +775,6 @@ If both are not found, a [default question mark](https://github.com/hinto-janai/

This default art is actually just a pointer to a single image in memory (`lazy_static`), so it doesn't take up extra memory even if all your `Album`'s have no art.

---

# Alternative Frontends
Some other frontends I have in mind:

Expand Down
11 changes: 11 additions & 0 deletions utils/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,14 @@ Some utility scripts.
| create_tmp_env.sh | Copy `skel/` to `/tmp` with the packaging scripts
| package.sh | Package the contents of `skel`, sign, etc. Checks if all files exist and have the proper naming schemes
| prepare.sh | Changes version across repo, commits README.md + CHANGELOG.md
| `pgp/` | PGP key used to sign releases

## AUR
The `aur/` directory has `PKGBUILD`'s for the [`AUR`](https://aur.archlinux.org).

| Directory | Link |
|--------------------|------|
| `festival-gui-bin` | https://aur.archlinux.org/packages/festival-gui-bin
| `festival-web-bin` | https://aur.archlinux.org/packages/festival-web-bin
| `festival-cli-bin` | https://aur.archlinux.org/packages/festival-cli-bin
| `festivald-bin` | https://aur.archlinux.org/packages/festivald-bin
12 changes: 12 additions & 0 deletions utils/aur/festival-cli-bin/.SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pkgbase = festival-cli-bin
pkgdesc = Festival music player CLI
pkgver = 0.0.0
pkgrel = 2
url = https://github.com/hinto-janai/festival
arch = x86_64
license = custom
source = https://github.com/hinto-janai/festival/releases/download/v0.0.0/festival-cli-v0.0.0-linux-x64.tar.gz
validpgpkeys = 31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499
sha256sums = 6975dcfba3f62c8c39e3006735cbf2501f537c9840593fc96ef4013dd0f6b4da

pkgname = festival-cli-bin
16 changes: 16 additions & 0 deletions utils/aur/festival-cli-bin/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Maintainer: hinto.janai <[email protected]>
pkgname=festival-cli-bin
pkgver=0.0.0
pkgrel=2
pkgdesc="Festival music player CLI"
arch=('x86_64')
url="https://github.com/hinto-janai/festival"
license=('custom')
source=("${url}/releases/download/v${pkgver}/festival-cli-v${pkgver}-linux-x64.tar.gz")
sha256sums=('6975dcfba3f62c8c39e3006735cbf2501f537c9840593fc96ef4013dd0f6b4da')
validpgpkeys=('31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499')

package() {
# Binary
install -Dm755 "${srcdir}/festival-cli-v${pkgver}-linux-x64/festival-cli" "${pkgdir}/usr/bin/festival-cli"
}
12 changes: 12 additions & 0 deletions utils/aur/festival-gui-bin/.SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pkgbase = festival-gui-bin
pkgdesc = Festival music player GUI
pkgver = 0.0.0
pkgrel = 4
url = https://github.com/hinto-janai/festival
arch = x86_64
license = custom
source = https://github.com/hinto-janai/festival/releases/download/v0.0.0/festival-gui-v0.0.0-linux-x64.tar.gz
validpgpkeys = 31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499
sha256sums = ba36dbf1e2fb3a1e8f8c31cce73a0b41efe3021020250de4f66348050176f450

pkgname = festival-gui-bin
22 changes: 22 additions & 0 deletions utils/aur/festival-gui-bin/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Maintainer: hinto.janai <[email protected]>
pkgname=festival-gui-bin
pkgver=0.0.0
pkgrel=4
pkgdesc="Festival music player GUI"
arch=('x86_64')
url="https://github.com/hinto-janai/festival"
license=('custom')
source=("${url}/releases/download/v${pkgver}/festival-gui-v${pkgver}-linux-x64.tar.gz")
sha256sums=('ba36dbf1e2fb3a1e8f8c31cce73a0b41efe3021020250de4f66348050176f450')
validpgpkeys=('31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499')

package() {
# Binary
install -Dm755 "${srcdir}/festival-gui-v${pkgver}-linux-x64/festival-gui" "${pkgdir}/usr/bin/festival"

# Icon
install -Dm644 "${srcdir}/festival-gui-v${pkgver}-linux-x64/festival.png" "${pkgdir}/usr/share/pixmaps/festival.png"

# `.desktop` file.
install -Dm644 "${srcdir}/festival-gui-v${pkgver}-linux-x64/festival.desktop" "${pkgdir}/usr/share/applications/festival.desktop"
}
12 changes: 12 additions & 0 deletions utils/aur/festival-web-bin/.SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pkgbase = festival-web-bin
pkgdesc = Festival music player (Web)
pkgver = 0.0.0
pkgrel = 2
url = https://github.com/hinto-janai/festival
arch = x86_64
license = custom
source = https://github.com/hinto-janai/festival/releases/download/v0.0.0/festival-web-v0.0.0-linux-x64.tar.gz
validpgpkeys = 31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499
sha256sums = 882a81121f9ebbf4edb7663fa3814c7e37fe73cc504f554832312aab98d363c4

pkgname = festival-web-bin
16 changes: 16 additions & 0 deletions utils/aur/festival-web-bin/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Maintainer: hinto.janai <[email protected]>
pkgname=festival-web-bin
pkgver=0.0.0
pkgrel=2
pkgdesc="Festival music player (Web)"
arch=('x86_64')
url="https://github.com/hinto-janai/festival"
license=('custom')
source=("${url}/releases/download/v${pkgver}/festival-web-v${pkgver}-linux-x64.tar.gz")
sha256sums=('882a81121f9ebbf4edb7663fa3814c7e37fe73cc504f554832312aab98d363c4')
validpgpkeys=('31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499')

package() {
# Binary
install -Dm755 "${srcdir}/festival-web-v${pkgver}-linux-x64/festival-web" "${pkgdir}/usr/bin/festival-web"
}
12 changes: 12 additions & 0 deletions utils/aur/festivald-bin/.SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pkgbase = festivald-bin
pkgdesc = Festival music player daemon
pkgver = 0.0.0
pkgrel = 2
url = https://github.com/hinto-janai/festival
arch = x86_64
license = custom
source = https://github.com/hinto-janai/festival/releases/download/v0.0.0/festivald-v0.0.0-linux-x64.tar.gz
validpgpkeys = 31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499
sha256sums = 458cc24d9f9161948274bfe93eb002d66891310d69d4bebd1716960ea4485aab

pkgname = festivald-bin
16 changes: 16 additions & 0 deletions utils/aur/festivald-bin/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Maintainer: hinto.janai <[email protected]>
pkgname=festivald-bin
pkgver=0.0.0
pkgrel=2
pkgdesc="Festival music player daemon"
arch=('x86_64')
url="https://github.com/hinto-janai/festival"
license=('custom')
source=("${url}/releases/download/v${pkgver}/festivald-v${pkgver}-linux-x64.tar.gz")
sha256sums=('458cc24d9f9161948274bfe93eb002d66891310d69d4bebd1716960ea4485aab')
validpgpkeys=('31C5145AAFA5A8DF1C1DB2A6D47CE05FA175A499')

package() {
# Binary
install -Dm755 "${srcdir}/festivald-v${pkgver}-linux-x64/festivald" "${pkgdir}/usr/bin/festivald"
}
File renamed without changes.
File renamed without changes.

0 comments on commit 07e231b

Please sign in to comment.