Skip to content

carlashley/loopdown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

This is the last version of the Python implementation of loopdown. Future releases will be Swift implementations and will only support macOS 14+.

Notes

  • This has been tested on Python 3.13, it should work for Python 3.10+ but no testing has been done for older Python releases.
  • The zipapp build should install the two requirements when ./build.sh is run.
    • See Build help below for usage.
  • This is intended to be the last release of a Python version of this tool, future releases will be implemented in Swift.
    • New features will be sparingly added to the Swift release as the intention is to create a very basic tool to handle downloading and installing content packages.
    • There is no guarantee that there will be regular releases of the Swift implementation.
  • This version no longer relies on applications existing in /Applications. Application installation paths are determined from the output of system_profiler data.
  • Downloads do not rely on curl -C - for partial file resumption, in fact there are no attempts made at resuming incomplete downloads.
    • There are no plans to implement any partial download resumption in this release.
  • Please take note of the new argument syntax as noted in the Usage section below.

Building

  1. In your preferred directory: git clone https://github.com/carlashley/loopdown
  2. cd loopdown/loopdown
  3. ./build.sh -h
  4. ./build.sh [your chosen options]

Build help

./build.sh -h
Usage: ./build.sh [options]

Options:
  --build-python=...   Python to use for building (pip + zipapp). If omitted, uses python3 on PATH.
                       Examples:
                         --build-python=/opt/python/bin/python3
                         --build-python=/usr/local/bin/python3

  --interpreter=...    Interpreter string embedded in the zipapp shebang (default: /usr/bin/env python3)
                       Examples:
                         --interpreter=/usr/local/bin/python3
                         --interpreter="/usr/bin/env python3"

  --main=...           Zipapp entrypoint (default: loopdown.__main__:main)

  -h, --help           Show help

Usage

Primary help

python3 -m loopdown -h
usage: loopdown [-h] [-v] [-l [level]] [-q] [deploy,download] ...

Process additional content for installed audio applications, GarageBand, Logic Pro, and/or MainStage.

positional arguments:
  [deploy,download]     use [deploy,download] -h for further help
    deploy              deploy audio content packages locally (requires elevated permission when not performing dry-run)
    download            download audio content packages locally

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -l, --log-level [level]
                        override the log level; default is 'info', choices are 'critical', 'error', 'warning', 'info', 'debug', 'notset'
  -q, --quiet           all console output (stdout/stderr) is suppressed; events logged to file only

loopdown v2.0.20260120. Copyright © 2026 Carl Ashley. All rights reserved. Apache License Version 2.0 - http://www.apache.org/licenses/

Download help

python3 -m loopdown download -h
usage: loopdown download [-h] [-n] [-a [app ...]] [-r] [-o] [-f] [-d [dir]]

Download audio content packages locally

options:
  -h, --help            show this help message and exit
  -n, --dry-run         perform a dry run; no mutating action taken
  -a, --apps [app ...]  override the default 'garageband', 'logicpro', 'mainstage' set of apps that audio content will be processed for;
                        choices are 'garageband', 'logicpro', 'mainstage'
  -r, --req             include the required audio packages
  -o, --opt             include the optional audio packages
  -f, --force           force the specified action
  -d, --dest [dir]      override the download directory path when '--download-only' used; default is '/tmp/loopdown'

Deploy help

python3 -m loopdown deploy -h
usage: loopdown deploy [-h] [-n] [-a [app ...]] [-r] [-o] [-f] [-c [url]] [-m [[url]]]

Deploy audio content packages locally (requires elevated permission when not performing dry-run)

options:
  -h, --help            show this help message and exit
  -n, --dry-run         perform a dry run; no mutating action taken
  -a, --apps [app ...]  override the default 'garageband', 'logicpro', 'mainstage' set of apps that audio content will be processed for;
                        choices are 'garageband', 'logicpro', 'mainstage'
  -r, --req             include the required audio packages
  -o, --opt             include the optional audio packages
  -f, --force           force the specified action
  -c, --cache-server [url]
                        use a caching server; when no server is specified, attempts to auto detect; expected format is 'http://ipaddr:port'
  -m, --mirror-server [[url]]
                        local mirror server to use; expected format is 'https://example.org'

About

Downloads loop packages for GarageBand, Logic Pro, MainStage 3

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published