* refactor: use ProcessHandler instead of subprocess.run
* fix(logger): consistency, versatility and formatting
Before:
[2026-02-06 18:40:20] DEBUG ARM: Class.method <message>
After:
2026-02-08 10:18:08 ARM: DEBUG: Class.method: <message>
- stdout now uses short formatting (eg. for journald, which timestamps stdout)
- Handling of debug level formatting is more consistent now
- Removed `clean_loggers()`:
- This function wasn't really doing what it said it was, since it was only removing at most one handler. Instead, I opted to only remove FileHandlers, such that if a more specific log file is created, the messages are not also logged to arm.log, but they are still logged to stdout and syslog.
* fix(logger): crash because of empty label
* feat(ripper.main): --no-syslog argument
Some containers don't have or need a syslog
* fix(ripper.main): log level of critical errors
* fix(ripper.main): handle errors during setup
* fix(ripper.main): handle SIGTERM
* refactor(ripper.utils.arm_setup): simplify log setup
* fix(ripper.utils.arm_setup): create logs/progress folder
* refactor(ripper.utils): always use RipperException to bail
Replaces all bare Exceptions and all sys.exit() calls with
RipperExceptions.
- more consistent error handling
- simplified make_dir helper function
- removed try-catch where we were calling sys.exit() anyways
* fix: remove UNIDENTIFIED_EJECT
Closesautomatic-ripping-machine/automatic-ripping-machine#1360
UNIDENTIFIED_EJECT is not necessary anymore, since the ripper will now
always eject at the end (if AUTO_EJECT is set), even if an error is
thrown, so we can do away with the unreliable pre-check entirely and
rest assured that the ripper itself is much more capable of correctly
identifying whether a disc is rippable or not.
* fix: joblength should be 0 if it didn't start
* refactor(logger): deduplicated timestamp-filename logic
* fix(ripper): allow ripping of discs with no label
* fix(ripper.makemkv): missing attribute
* feat(ProcessHandler): capture stderr
* chore(ripper): remove unused imports and variables
* fix(ProcessHandler): type issues
* Bump version from 2.21.5 to 2.22.1
---------
Co-authored-by: Mtech <62650032+microtechno9000@users.noreply.github.com>
fix(installer): correctly detect contrib for bookworm-updates/security across deb822 + mirror lists
- Replace `apt-cache policy` grep checks with APT index target parsing to avoid false negatives
- Accept Debian suite aliases (stable, stable-updates, stable-security) in addition to codename suites
- Add fallbacks for deb822 `*.sources` and classic `sources.list`/`*.list` formats
- Prevent repeated “Missing bookworm-updates/contrib” warnings when contrib is already configured
fix: replace hard-coded paths with configurable ones
- Location of arm.yaml can now optionally be set via the ARM_CONFIG_FILE environment variable
- The default location stays the same (/etc/arm/config/arm.yaml)
- All settings concerning paths in arm.yaml should now work as expected,
the following have had their behavior fixed:
- INSTALLPATH
- APPRISE
- ABCDE_CONFIG_FILE
- LOGPATH
- Mountpoints for discs are not hardcoded any more, instead:
- If the disc is already mounted anywhere and the mountpoint is
readable, it is used
- Otherwise, the disc is mounted via `mount --all <devpath>` (aka. auto-mount) to wherever specified in `fstab`
- That is the reason why the default `fstab` has changed, to allow for auto-mount
Co-authored-by: Mtech <62650032+microtechno9000@users.noreply.github.com>
* Update DebianInstaller.sh
Bugfix copy-paste error: checking SHA256 hash of 'makemkv-bin' twice and none of 'makemkv-oss'
* Update VERSION
bump version number
* Update VERSION
align to current version
---------
Co-authored-by: Mtech <62650032+microtechno9000@users.noreply.github.com>
* Update DebianInstaller.sh
Fix $PaswordConfirmed uninitialized/undefined in line 557
* Update VERSION
Bump version number
* Update VERSION
Bump version number
* Update VERSION
align with current main branch version
* BugFix: prep_mkv not working
The prep_mkv function is internally calling the update_key.sh script.
Due to shell=True, the command is never executing. This also fixes the
command output to stdout, adds proper Error handling in the bash script
and increases the verbosity level of the script on errors so that users
on info level know what is happening. It also defines Known Errors both
in the bash script and in makemkv.py.
* Version Increment
* bugfix for issue #1377
* bugfix for ui issue#1403
bugfix ui colour
bugfix json api calls to reduce processing time
bugfix unknown status reports as 0% and undefined
* bugfix for timezones missing #1379
Addition of timezone info into ARM
* Bare metal Ubuntu 22
apt installs updated to account for ubuntu 22.04
Minor wiki reference fixes
* Update Ubuntu-20.04-Automatic-Installation.md
* Update armui.service
fixing which was discovered when executing bare metal.
DebianInstaller.sh uses armui.service to set up the service. Without referring the venv python, none of the packages are detected, and the ui won't run.
* Update nvidia.md
basic notes on how to set up driver.
distro drivers are often slow to be released.
* Script tidy and Removal
Ubuntu Script is not required as testing on 20.04 and 24.02 has been successful.
docker-setup.sh and ubuntu-quicksync.sh moved into the installers folder for clarity when browsing folders.
* Wiki Update for Ubuntu 24.02
Debian script tested successfully on bare metal install of 24.02 Ubuntu.
Wiki pages updated to reflect file changes and script replacements.
* [Automated] Release: patch - Version from 2.12.1 to 2.12.2
* Further Documentation updates
* removed reference to wrong branch in documentation
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* added timezone env variable to start_arm_container.sh
Timezone defaults to UTC when TZ isn't set. Users may forget or not know to set their timezone when using this script if an option doesn't appear for it. This makes users aware they can set their timezone if desired.
* Update Docker.md
---------
Co-authored-by: Mtech <62650032+microtechno9000@users.noreply.github.com>
* Created new Branch for new feature: "Create a Bash Installation Script to install on Bare Metal in a Debian 12 Installation."
Issue #1070
Create Script and function "Has_Sudo_Privileges()"
* Added Descriptive Error message and exit command to shell script if the user does not have Sudo privileges.
* Correct an error where I failed to understand that BASH does not preserve Global Variable values outside of functions.
Added function to create arm Group.
* Logic for creating User and group completed.
Need to seperate it into more readable functions.
* Refactor code for User and group deletion.
Comment Code for legibility.
* [Automated] Increment Version
* Refactored the code, added more comments.
Added Building and Installing of MakeMKV.
Fixed a bug where the script would not complete if run as sudo.
* [Automated] Increment Version
* Create function to install ARM Deb Package Dependencies.
Create function to test for the availability of the contrib package, if that test fails, exit the script.
* [Automated] Increment Version
* Added a function to clone the repository at the latest Arm Release or to checkout the repository, if existing, at the latest ARM Release.
* [Automated] Increment Version
* Correct Code Editor Warnings
* [Automated] Increment Version
* Added User Disclaimer, Informing the user that
1. This installation method is unsupported.
2. MakeMKV is in Beta and free to use while in Beta, and provide a link to MakeMKV purchase page.
3. Provide a link to the ARM MIT licence
* [Automated] Increment Version
* Return Version Number to what it should be.
GitHub Worklow was updating the version number automatically. Returned the Version Number to what it should be after disabling the GitHub Workflow.
* Create Function to create the Python Virtual Environment for ARM and install the Python Requirements.
* To not break previous installs, create the following files.
A new Udev Rules file.
A new Amr.service file.
A new arm_venv_wrapper.sh file
Updated Debian12Installer.sh file to use the newly created files. Also added a testing flag to pull from testing repo and not production repo.
* Change the location of the created SystemD Service from /etc/systemd/system to /lib/systemd/system
* Added an early check to confirm the sudo package is installed. (By default sudo is not installed in the Proxmox LXC Debian 12 container image...)
Added a stub function for running the post-install setup UI
* Comment out SUDO_FLAG and all attached code, this was a unnecessary duplication of code that could lead to hard to find errors and bugs.
Added verification for the installation of the sudo package.
Added verification for the installation of the lsb-release package and the ability for the script to install it if missing.
Succesfully tested in a Proxmox LXC container enviroment.
* Deleted the commented-out code that enabled the abadonned optional SUDO script call. (The ability to call the script with or without SUDO... Now the script needs to be called with SUDO or as root)
* Add numerous TODO messages to keep track of changes and modifications yet to be made...
* Remove and IF statement dealing with the deprecated SudoFlag variable.
* Completed the Launch Setup Function.
Added script options instead of the hardcoded Test Flag of earlier versions.
* Fixed an issue where we create a new user but fail to add a password due to user error (fail to enter match the password 3 times). The user and group arm would be created but no password would be set on the account. Now if the user fails to enter a password, the newly crated account is deleted.
if the arm user account is pre-existing, give the user the opportunity to change it's password.
* Added some checks for the existence of the repo and / or tag options passed to the script. Now the script exits with and error if the fork or tag was not found.
* To keep it simpler. Changed the script from trying to update the github repo of a prior installation to deleting any existing /opt/arm directory and clonning a fresh repository from the chosen fork and tag. Give the user the option to decline to proceed. Copy any existing config files to backups.
* add lsb-release package to the initial apt install call therefore keeping the apt update call to just one.
* Tested script with Debian 11 and Debian 12.
More testing is required to attempt to test more variables.
* Update TODOs
* Complete rewrite to reflect the new installation script for Debian and OMV.
This wiki entry is still a draft.
* Fix a glaring omission regarding the Officially supported installation method.
* Fix a typo
* Remove Completed TODOs
* Added test for Amrui.service, if active, exit install script.
If innactive, warn the user that proceeding is not recommended but allow for the user to continue the process.
Moved test for presence of /opt/amr directory ealier, before any installation is completed, to allow the user to abandon installation earlier and only make minimal changes to the system.
Added link to MakeMKV-Info wiki page.
* Fixed a typo in ErrorCode 214.
* Update Setting-up-ARM-script-(Debian-OMV).md
- Added Pre-Installation Steps
- Added 2 new error codes
- Modified the formatting of the Note at the top of the page regarding the deprecated nature of this installation method.
* Create Virtualization-Proxmox.md
A brief pros and cons evaluation of which Proxmox method to use.
* Fixed the wiki updates, after the long pause in development of this feature.
The original Debian Install file was renamed for only OMV, and a new file, was created for Debian. Restored the OMV file to be identical to main, and moved my changes to the Debian file.
* Add a TODO to fix the problem presented when installing ARM using Proxmox LXC containers.
* Allow ARM to bind protected ports (ei: 1~1024) This only applies to the Debian Install Script and not the Docker setup.
* Fix armUI Service Found when it did not exist error.
Update the Wiki Entry page, add a note about the length (in time) of the installation, remove mentioned support for OMV.
Update User Disclaimer in script, to reflect current date and to remove OMV support mention.
Update Version Number
* Fix Wiki entry regarding the valid part number, now arm can be installed using any port number even the lower levels from 1 to 1024. Remove Error code 210 about port number being in the restricted range.
* Update cautionary disclaimer at the top of the wiki page.
Add Intended Use section to the wiki page.
* Remove a file that was never intended to be part of this feature update.
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: wolfy <wolfy@shitwolfymakes.com>
Co-authored-by: Mtech <62650032+microtechno9000@users.noreply.github.com>
Without this change, every time a user runs the container it will reset the permissions of the folders. Otherwise this could break ownership of arm folders mounted from SMB/NFS shares every time the container is run.
Added rudimentary handling for checking if "start_arm_container.sh" already exists, and changing the name to "start_arm_container_OLD.sh" if it does, so the new "start_arm_container.sh" can be written
Fixes crash on HandBrake fail - now logs correctly
Fixes HB trying to rip more tracks than available
Fixes no failure/error logged in job log
Added more debug msg to makemkv output