/SoX.el

helper for interacting with SoX, the Swiss Army knife of sound processing programs

Primary LanguageEmacs Lisp

SoX.el

SoX is a command line tool for manipulating audio files, naturally the tool is best used from emacs

Overview

Installation

(load-file "./sox.el")

Usage

Extending

Implementation

Makefile

CASK        ?= cask
EMACS       ?= emacs
DIST        ?= dist
EMACSFLAGS   = --batch -Q
EMACSBATCH   = $(EMACS) $(EMACSFLAGS)

VERSION     := $(shell EMACS=$(EMACS) $(CASK) version)
PKG_DIR     := $(shell EMACS=$(EMACS) $(CASK) package-directory)
PROJ_ROOT   := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))

EMACS_D      = ~/.emacs.d
USER_ELPA_D  = $(EMACS_D)/elpa

SRCS         = $(filter-out %-pkg.el, $(wildcard *.el))
TESTS        = $(wildcard test/*.el)
TAR          = $(DIST)/sox.el-$(VERSION).tar


.PHONY: all check test unit ecukes lint deps install uninstall reinstall clean-all clean clean-elc
all : deps $(TAR)

deps :
	     $(CASK) install

install : $(TAR)
	     $(EMACSBATCH) -l package -f package-initialize \
	     --eval '(package-install-file "$(PROJ_ROOT)/$(TAR)")'

uninstall :
	     rm -rf $(USER_ELPA_D)/sox.el-*

reinstall : clean uninstall install

clean-all : clean
	     rm -rf $(PKG_DIR)

clean-elc :
	     rm -f *.elc

clean : clean-elc
	     rm -rf $(DIST)
	     rm -f *-pkg.el

$(TAR) : $(DIST) $(SRCS)
	     $(CASK) package $(DIST)

$(DIST) :
	     mkdir $(DIST)

check : test lint

test: unit ecukes

unit: $(PKG_DIR)
	     ${CASK} exec ert-runner

ecukes: $(PKG_DIR)
	     ${CASK} exec ecukes

lint : $(SRCS) clean-elc
	     # Byte compile all and stop on any warning or error
	     ${CASK} emacs $(EMACSFLAGS) \
	     --eval "(setq byte-compile-error-on-warn t)" \
	     -L . -f batch-byte-compile ${SRCS} ${TESTS}

	     # Run package-lint to check for packaging mistakes
	     ${CASK} emacs $(EMACSFLAGS) \
	     -l package-lint.el \
	     -f package-lint-batch-and-exit ${SRCS}