dtas 0.18.1 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +13 -1
- data/INSTALL +3 -8
- data/NEWS +22 -0
- data/README +5 -5
- data/dtas.gemspec +2 -2
- data/dtas.sh +7 -0
- data/lib/dtas/mlib.rb +19 -7
- data/lib/dtas/partstats.rb +1 -2
- data/lib/dtas/source/av_ff_common.rb +1 -1
- data/lib/dtas/source/sox.rb +1 -1
- data/lib/dtas/splitfx.rb +3 -5
- data/lib/dtas/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a438c78c4e4d0f01c8eb39a7f1b485908aada064999fff95a4a0af5adb6250b8
|
4
|
+
data.tar.gz: fc98612cd6e13dcd16d2f7e0cfc46830c182b5812be0c1c4b82d063c1e7d8d2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5346176f2434ec3250a3cd890731cc239cfc1725df45d18c3c1ce3683ab7e512783aa28a94b5158eb0cdab33bb9a7c194c29495e26c8724120de8246211bb512
|
7
|
+
data.tar.gz: 8696a91edff35cc7b35f930d59d9d62be4835042ac9be6b7f3737395f719f4715c0f8e6af35ca00815d6efdf2d208fd42536b195f0dc661bf0738e890ed4b224
|
data/GIT-VERSION-FILE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = 0.
|
1
|
+
VERSION = 0.19.0
|
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013-
|
1
|
+
# Copyright (C) 2013-2021 all contributors <dtas-all@nongnu.org>
|
2
2
|
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
3
3
|
all::
|
4
4
|
pkg = dtas
|
@@ -74,5 +74,17 @@ $(pkgtgz): .tgz-manifest
|
|
74
74
|
|
75
75
|
package: $(pkgtgz) $(pkggem)
|
76
76
|
|
77
|
+
# Install symlinks to ~/bin (which is hopefuly in PATH) which point to
|
78
|
+
# this source tree.
|
79
|
+
# prefix + bindir matches git.git Makefile:
|
80
|
+
prefix = $(HOME)
|
81
|
+
bindir = $(prefix)/bin
|
82
|
+
symlink-install :
|
83
|
+
mkdir -p $(bindir)
|
84
|
+
dtas=$(CURDIR)/dtas.sh && cd $(bindir) && \
|
85
|
+
for x in $(CURDIR)/bin/*; do \
|
86
|
+
ln -sf "$$dtas" $$(basename "$$x"); \
|
87
|
+
done
|
88
|
+
|
77
89
|
.PHONY: all .FORCE-GIT-VERSION-FILE test $(test_units) NEWS
|
78
90
|
.PHONY: check-warnings fix-perms
|
data/INSTALL
CHANGED
@@ -29,17 +29,12 @@ For future upgrades of dtas
|
|
29
29
|
|
30
30
|
Grab the latest tarball from our HTTPS site:
|
31
31
|
|
32
|
-
https://80x24.org/dtas/2021/dtas-0.
|
32
|
+
https://80x24.org/dtas/2021/dtas-0.19.0.tar.gz
|
33
33
|
|
34
|
-
$ tar zxvf dtas-0.
|
35
|
-
$ cd dtas-0.
|
34
|
+
$ tar zxvf dtas-0.19.0.tar.gz
|
35
|
+
$ cd dtas-0.19.0
|
36
36
|
$ sudo ruby setup.rb
|
37
37
|
|
38
|
-
GNU/Linux users may optionally install the "sleepy_penguin" RubyGem
|
39
|
-
for a tiny speed improvement over the default "fiddle" RubyGem.
|
40
|
-
|
41
|
-
* sleepy_penguin - https://yhbt.net/sleepy_penguin/
|
42
|
-
|
43
38
|
# CONTACT
|
44
39
|
|
45
40
|
Please do not hesitate to send plain-text mail to <dtas-all@nongnu.org>
|
data/NEWS
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
# 0.19.0 / 2021-09-05
|
2
|
+
|
3
|
+
dtas 0.19.0 - odd pathname fixes
|
4
|
+
|
5
|
+
|
6
|
+
Non-UTF-8-encoded pathnames now handled properly by dtas-mlib.
|
7
|
+
Shell-unfriendly filenames are handled properly if they require
|
8
|
+
ffmpeg (they were always handled properly when using sox).
|
9
|
+
|
10
|
+
Some minor URL and doc updates, too, and there's a new
|
11
|
+
"make symlink-install" target for users who lack permissions
|
12
|
+
to install RubyGems.
|
13
|
+
|
14
|
+
6 changes since v0.18.1 (2021-02-13):
|
15
|
+
|
16
|
+
mlib: pathnames may be blobs
|
17
|
+
README: replace NNTP URL with NNTPS
|
18
|
+
gemspec: allow building gem without setting VERSION
|
19
|
+
build: add "symlink-install" target
|
20
|
+
do not shell-quote filenames for environment
|
21
|
+
doc: use Tor v3 .onion URLs
|
22
|
+
|
1
23
|
# 0.18.1 / 2021-02-13
|
2
24
|
|
3
25
|
dtas 0.18.1
|
data/README
CHANGED
@@ -81,18 +81,18 @@ Mailing list archives available at <https://80x24.org/dtas-all/> or
|
|
81
81
|
|
82
82
|
No subscription is necessary to post to the mailing list.
|
83
83
|
You may also read via:
|
84
|
-
NNTP: <
|
85
|
-
<nntp://
|
84
|
+
NNTP: <nntps://news.public-inbox.org/inbox.comp.audio.dtas>
|
85
|
+
<nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.audio.dtas>
|
86
86
|
<nntp://news.gmane.io/gmane.comp.audio.dtas.general>
|
87
87
|
IMAP: <imaps://anon:mous@public-inbox.org/inbox.comp.audio.dtas.0>
|
88
|
-
<imap://anon:mous@
|
88
|
+
<imap://anon:mous@7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.audio.dtas.0>
|
89
89
|
Atom: <https://80x24.org/dtas-all/new.atom>
|
90
|
-
<http://
|
90
|
+
<http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/dtas-all/new.atom>
|
91
91
|
(.onion URLs require Tor: <https://www.torproject.org/>)
|
92
92
|
|
93
93
|
## Copyright
|
94
94
|
|
95
|
-
Copyright 2013-
|
95
|
+
Copyright 2013-2021 all contributors <dtas-all@nongnu.org>
|
96
96
|
License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
97
97
|
|
98
98
|
dtas is copyrighted Free Software by all contributors, see logs
|
data/dtas.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
# Copyright (C) 2013-
|
1
|
+
# Copyright (C) 2013-2021 all contributors <dtas-all@nongnu.org>
|
2
2
|
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
manifest = File.read('.gem-manifest').split(/\n/)
|
5
5
|
s.name = %q{dtas}
|
6
|
-
s.version = ENV["VERSION"].dup
|
6
|
+
s.version = (ENV["VERSION"] || '0.19.0').dup
|
7
7
|
s.authors = ["dtas hackers"]
|
8
8
|
s.summary = "duct tape audio suite for *nix"
|
9
9
|
s.description = File.read("README").split(/\n\n/)[1].strip
|
data/dtas.sh
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# symlink this file to a directory in PATH to run dtas (or anything in bin/*)
|
3
|
+
# without needing perms to install globally. Used by "make symlink-install"
|
4
|
+
p=$(realpath "$0" || readlink "$0") # neither is POSIX, but common
|
5
|
+
p=$(dirname "$p") c=$(basename "$0") # both are POSIX
|
6
|
+
exec ${RUBY-ruby} -I"$p"/lib "$p"/bin/"${c%.sh}" "$@"
|
7
|
+
: this script is too short to copyright
|
data/lib/dtas/mlib.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# Copyright (C) 2015-
|
2
|
+
# Copyright (C) 2015-2021 all contributors <dtas-all@nongnu.org>
|
3
3
|
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
4
4
|
# frozen_string_literal: true
|
5
5
|
#
|
@@ -129,9 +129,13 @@ class DTAS::Mlib # :nodoc:
|
|
129
129
|
comments.where(q).delete
|
130
130
|
tmp.each do |tid, val|
|
131
131
|
v = vals[val: val]
|
132
|
-
|
133
|
-
|
134
|
-
|
132
|
+
begin
|
133
|
+
q[:val_id] = v ? v[:id] : vals.insert(val: val)
|
134
|
+
q[:tag_id] = tid
|
135
|
+
comments.insert(q)
|
136
|
+
rescue => e
|
137
|
+
warn "E: #{e.message} (#{e.class}) q=#{q.inspect} val=#{val.inspect}"
|
138
|
+
end
|
135
139
|
end
|
136
140
|
end
|
137
141
|
end
|
@@ -214,12 +218,16 @@ class DTAS::Mlib # :nodoc:
|
|
214
218
|
end
|
215
219
|
end
|
216
220
|
|
221
|
+
def maybe_blob(path)
|
222
|
+
path.valid_encoding? ? path : Sequel.blob(path)
|
223
|
+
end
|
224
|
+
|
217
225
|
def scan_file(path, st, parent_id)
|
218
226
|
return if @suffixes !~ path || st.size == 0
|
219
227
|
|
220
228
|
# no-op if no change
|
221
229
|
unless @force
|
222
|
-
if node = @db[:nodes][name: path, parent_id: parent_id]
|
230
|
+
if node = @db[:nodes][name: maybe_blob(path), parent_id: parent_id]
|
223
231
|
return if st.ctime.to_i == node[:ctime] || node[:tlen] == DM_IGN
|
224
232
|
end
|
225
233
|
end
|
@@ -271,14 +279,16 @@ class DTAS::Mlib # :nodoc:
|
|
271
279
|
node_id = node.delete(:id)
|
272
280
|
@db[:nodes].where(id: node_id).update(node.merge(q))
|
273
281
|
node[:id] = node_id
|
282
|
+
rescue => e
|
283
|
+
warn "E: #{e.message} (#{e.class}) node=#{node.inspect}"
|
274
284
|
end
|
275
285
|
|
276
286
|
def node_lookup(parent_id, name)
|
277
|
-
@db[:nodes][name: name, parent_id: parent_id]
|
287
|
+
@db[:nodes][name: maybe_blob(name), parent_id: parent_id]
|
278
288
|
end
|
279
289
|
|
280
290
|
def node_ensure(parent_id, name, tlen, ctime = nil)
|
281
|
-
q = { name: name, parent_id: parent_id }
|
291
|
+
q = { name: maybe_blob(name), parent_id: parent_id }
|
282
292
|
if node = @db[:nodes][q]
|
283
293
|
node_update_maybe(node, tlen, ctime)
|
284
294
|
else
|
@@ -289,6 +299,8 @@ class DTAS::Mlib # :nodoc:
|
|
289
299
|
node[:id] = @db[:nodes].insert(node)
|
290
300
|
end
|
291
301
|
node
|
302
|
+
rescue => e
|
303
|
+
warn "E: #{e.message} (#{e.class}) q=#{q.inspect}"
|
292
304
|
end
|
293
305
|
|
294
306
|
def cd(path)
|
data/lib/dtas/partstats.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
4
4
|
# frozen_string_literal: true
|
5
5
|
require_relative '../dtas'
|
6
|
-
require_relative 'xs'
|
7
6
|
require_relative 'process'
|
8
7
|
require_relative 'sigevent'
|
9
8
|
|
@@ -56,7 +55,7 @@ class DTAS::PartStats # :nodoc:
|
|
56
55
|
rd, wr = IO.pipe
|
57
56
|
env = opts[:env]
|
58
57
|
env = env ? env.dup : {}
|
59
|
-
env["INFILE"] =
|
58
|
+
env["INFILE"] = @infile
|
60
59
|
env["TRIMFX"] = "trim #{trim_part.tbeg}s #{trim_part.tlen}s"
|
61
60
|
opts = { pgroup: true, close_others: true, err: wr }
|
62
61
|
pid = spawn(env, CMD, opts)
|
@@ -186,7 +186,7 @@ module DTAS::Source::AvFfCommon # :nodoc:
|
|
186
186
|
|
187
187
|
e["PROBE"] = @probe_harder ? @probe_harder.join(' ') : nil
|
188
188
|
# make sure these are visible to the source command...
|
189
|
-
e["INFILE"] =
|
189
|
+
e["INFILE"] = @infile
|
190
190
|
e["AMAP"] = amap
|
191
191
|
e["SSPOS"] = sspos
|
192
192
|
e["RGFX"] = rg_state.effect(self) || nil
|
data/lib/dtas/source/sox.rb
CHANGED
@@ -113,7 +113,7 @@ class DTAS::Source::Sox # :nodoc:
|
|
113
113
|
def src_spawn(player_format, rg_state, opts)
|
114
114
|
raise "BUG: #{self.inspect}#src_spawn called twice" if @to_io
|
115
115
|
e = @env.merge!(player_format.to_env)
|
116
|
-
e["INFILE"] =
|
116
|
+
e["INFILE"] = @infile
|
117
117
|
|
118
118
|
# make sure these are visible to the "current" command...
|
119
119
|
e["TRIMFX"] = trimfx
|
data/lib/dtas/splitfx.rb
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
require_relative '../dtas'
|
5
5
|
require_relative 'format'
|
6
6
|
require_relative 'process'
|
7
|
-
require_relative 'xs'
|
8
7
|
require 'tempfile'
|
9
8
|
|
10
9
|
# The backend for dtas-splitfx(1) command, but also supported by dtas-player
|
@@ -13,7 +12,6 @@ require 'tempfile'
|
|
13
12
|
class DTAS::SplitFX # :nodoc:
|
14
13
|
CMD = 'sox "$INFILE" $COMMENTS $OUTFMT $OUTDST $TRIMFX $FX $RATEFX $DITHERFX'
|
15
14
|
include DTAS::Process
|
16
|
-
include DTAS::XS
|
17
15
|
attr_reader :infile, :env, :command
|
18
16
|
|
19
17
|
# for --trim on the command-line
|
@@ -404,10 +402,10 @@ class DTAS::SplitFX # :nodoc:
|
|
404
402
|
end
|
405
403
|
|
406
404
|
def infile_env(env, infile)
|
407
|
-
env["INFILE"] =
|
405
|
+
env["INFILE"] = infile
|
408
406
|
dir, base = File.split(File.expand_path(infile))
|
409
|
-
env["INDIR"] =
|
410
|
-
env["INBASE"] =
|
407
|
+
env["INDIR"] = dir
|
408
|
+
env["INBASE"] = base
|
411
409
|
end
|
412
410
|
|
413
411
|
def expand_cmd(env, command) # for display purposes only
|
data/lib/dtas/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
DTAS::VERSION = '0.
|
1
|
+
DTAS::VERSION = '0.19.0'.freeze # :nodoc:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dtas hackers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |-
|
14
14
|
Free Software command-line tools for audio playback, mastering, and
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- dtas-linux.gemspec
|
87
87
|
- dtas-mpris.gemspec
|
88
88
|
- dtas.gemspec
|
89
|
+
- dtas.sh
|
89
90
|
- examples/README
|
90
91
|
- examples/splitfx.sample.yml
|
91
92
|
- examples/tfx.sample.yml
|
@@ -228,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
229
|
- !ruby/object:Gem::Version
|
229
230
|
version: '0'
|
230
231
|
requirements: []
|
231
|
-
rubygems_version: 3.
|
232
|
+
rubygems_version: 3.3.0.dev
|
232
233
|
signing_key:
|
233
234
|
specification_version: 4
|
234
235
|
summary: duct tape audio suite for *nix
|