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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e243e5ce687818e957241adc639e6a0557d6b4caff54fe423241a30cfbd0368f
4
- data.tar.gz: 54d936c09a7ca62d97ce41f23e9c3db70b92765cea257cc34f7bbd21059ba938
3
+ metadata.gz: a438c78c4e4d0f01c8eb39a7f1b485908aada064999fff95a4a0af5adb6250b8
4
+ data.tar.gz: fc98612cd6e13dcd16d2f7e0cfc46830c182b5812be0c1c4b82d063c1e7d8d2f
5
5
  SHA512:
6
- metadata.gz: 937e5a36a9fcfe06011871c047a6cda9a8d402a3fea84a68a7214315e9228db03d8f7277d29adca0139ccc7358897a4985d606a96c156432ce53cba1a51fd801
7
- data.tar.gz: 9aaed956fd48e6b5c0d45c0ef91a440bd6c4f53def5bfa5390ea5bd2315686dc199e0c0c007e2c1d8c2992bf9c386d3991b7c6fd183577f4e00bda860c09cf36
6
+ metadata.gz: 5346176f2434ec3250a3cd890731cc239cfc1725df45d18c3c1ce3683ab7e512783aa28a94b5158eb0cdab33bb9a7c194c29495e26c8724120de8246211bb512
7
+ data.tar.gz: 8696a91edff35cc7b35f930d59d9d62be4835042ac9be6b7f3737395f719f4715c0f8e6af35ca00815d6efdf2d208fd42536b195f0dc661bf0738e890ed4b224
data/GIT-VERSION-FILE CHANGED
@@ -1 +1 @@
1
- VERSION = 0.18.1
1
+ VERSION = 0.19.0
data/GIT-VERSION-GEN CHANGED
@@ -5,7 +5,7 @@
5
5
  CONSTANT = "DTAS::VERSION"
6
6
  RVF = "lib/dtas/version.rb"
7
7
  GVF = "GIT-VERSION-FILE"
8
- DEF_VER = "v0.18.0"
8
+ DEF_VER = "v0.19.0"
9
9
  vn = DEF_VER
10
10
 
11
11
  # First see if there is a version file (included in release tarballs),
data/GNUmakefile CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2020 all contributors <dtas-all@nongnu.org>
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.18.1.tar.gz
32
+ https://80x24.org/dtas/2021/dtas-0.19.0.tar.gz
33
33
 
34
- $ tar zxvf dtas-0.18.1.tar.gz
35
- $ cd dtas-0.18.1
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: <nntp://news.public-inbox.org/inbox.comp.audio.dtas>
85
- <nntp://ou63pmih66umazou.onion/inbox.comp.audio.dtas>
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@ou63pmih66umazou.onion/inbox.comp.audio.dtas.0>
88
+ <imap://anon:mous@7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.audio.dtas.0>
89
89
  Atom: <https://80x24.org/dtas-all/new.atom>
90
- <http://ou63pmih66umazou.onion/dtas-all/new.atom>
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-2020 all contributors <dtas-all@nongnu.org>
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-2020 all contributors <dtas-all@nongnu.org>
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-2020 all contributors <dtas-all@nongnu.org>
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
- q[:val_id] = v ? v[:id] : vals.insert(val: val)
133
- q[:tag_id] = tid
134
- comments.insert(q)
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)
@@ -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"] = xs(@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"] = xs(@infile)
189
+ e["INFILE"] = @infile
190
190
  e["AMAP"] = amap
191
191
  e["SSPOS"] = sspos
192
192
  e["RGFX"] = rg_state.effect(self) || nil
@@ -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"] = xs(@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"] = xs(infile)
405
+ env["INFILE"] = infile
408
406
  dir, base = File.split(File.expand_path(infile))
409
- env["INDIR"] = xs(dir)
410
- env["INBASE"] = xs(base)
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.18.1'.freeze # :nodoc:
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.18.1
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-02-13 00:00:00.000000000 Z
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.1.0.pre3
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