dtas 0.18.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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