dtas 0.0.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 +7 -0
- data/.gemtest +0 -0
- data/.gitignore +9 -0
- data/.rsync_doc +3 -0
- data/COPYING +674 -0
- data/Documentation/.gitignore +3 -0
- data/Documentation/GNUmakefile +46 -0
- data/Documentation/dtas-console.txt +42 -0
- data/Documentation/dtas-ctl.txt +64 -0
- data/Documentation/dtas-cueedit.txt +24 -0
- data/Documentation/dtas-enq.txt +29 -0
- data/Documentation/dtas-msinkctl.txt +45 -0
- data/Documentation/dtas-player.txt +110 -0
- data/Documentation/dtas-player_effects.txt +45 -0
- data/Documentation/dtas-player_protocol.txt +181 -0
- data/Documentation/dtas-sinkedit.txt +41 -0
- data/Documentation/dtas-sourceedit.txt +33 -0
- data/Documentation/dtas-xdelay.txt +57 -0
- data/Documentation/troubleshooting.txt +13 -0
- data/GIT-VERSION-GEN +30 -0
- data/GNUmakefile +9 -0
- data/HACKING +12 -0
- data/INSTALL +53 -0
- data/README +103 -0
- data/Rakefile +97 -0
- data/TODO +4 -0
- data/bin/dtas-console +160 -0
- data/bin/dtas-ctl +10 -0
- data/bin/dtas-cueedit +78 -0
- data/bin/dtas-enq +13 -0
- data/bin/dtas-msinkctl +51 -0
- data/bin/dtas-player +34 -0
- data/bin/dtas-sinkedit +58 -0
- data/bin/dtas-sourceedit +48 -0
- data/bin/dtas-xdelay +85 -0
- data/dtas-linux.gemspec +18 -0
- data/dtas-mpris.gemspec +16 -0
- data/examples/dtas_state.yml +18 -0
- data/lib/dtas.rb +7 -0
- data/lib/dtas/buffer.rb +90 -0
- data/lib/dtas/buffer/read_write.rb +102 -0
- data/lib/dtas/buffer/splice.rb +142 -0
- data/lib/dtas/command.rb +43 -0
- data/lib/dtas/compat_onenine.rb +18 -0
- data/lib/dtas/disclaimer.rb +18 -0
- data/lib/dtas/format.rb +151 -0
- data/lib/dtas/pipe.rb +39 -0
- data/lib/dtas/player.rb +393 -0
- data/lib/dtas/player/client_handler.rb +463 -0
- data/lib/dtas/process.rb +87 -0
- data/lib/dtas/replaygain.rb +41 -0
- data/lib/dtas/rg_state.rb +99 -0
- data/lib/dtas/serialize.rb +9 -0
- data/lib/dtas/sigevent.rb +10 -0
- data/lib/dtas/sigevent/efd.rb +20 -0
- data/lib/dtas/sigevent/pipe.rb +28 -0
- data/lib/dtas/sink.rb +121 -0
- data/lib/dtas/source.rb +147 -0
- data/lib/dtas/source/command.rb +40 -0
- data/lib/dtas/source/common.rb +14 -0
- data/lib/dtas/source/mp3.rb +37 -0
- data/lib/dtas/state_file.rb +33 -0
- data/lib/dtas/unix_accepted.rb +76 -0
- data/lib/dtas/unix_client.rb +51 -0
- data/lib/dtas/unix_server.rb +110 -0
- data/lib/dtas/util.rb +15 -0
- data/lib/dtas/writable_iter.rb +22 -0
- data/perl/dtas-graph +129 -0
- data/pkg.mk +26 -0
- data/setup.rb +1586 -0
- data/test/covshow.rb +30 -0
- data/test/helper.rb +76 -0
- data/test/player_integration.rb +121 -0
- data/test/test_buffer.rb +216 -0
- data/test/test_format.rb +61 -0
- data/test/test_format_change.rb +49 -0
- data/test/test_player.rb +47 -0
- data/test/test_player_client_handler.rb +86 -0
- data/test/test_player_integration.rb +220 -0
- data/test/test_rg_integration.rb +117 -0
- data/test/test_rg_state.rb +32 -0
- data/test/test_sink.rb +32 -0
- data/test/test_sink_tee_integration.rb +34 -0
- data/test/test_source.rb +102 -0
- data/test/test_unixserver.rb +66 -0
- data/test/test_util.rb +15 -0
- metadata +208 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
% dtas-sinkedit(1) dtas user manual
|
2
|
+
%
|
3
|
+
|
4
|
+
# NAME
|
5
|
+
|
6
|
+
dtas-sinkedit - edit the command and environment of a sink
|
7
|
+
|
8
|
+
# SYNOPSYS
|
9
|
+
|
10
|
+
dtas-sinkedit SINKNAME
|
11
|
+
|
12
|
+
# DESCRIPTION
|
13
|
+
|
14
|
+
dtas-sinkedit spawns an editor to allow editing of a sink as a YAML file.
|
15
|
+
See dtas-player_protocol(7) for details on SINKARGS.
|
16
|
+
|
17
|
+
# EXAMPLES
|
18
|
+
|
19
|
+
To get a list of existing sink names
|
20
|
+
|
21
|
+
$ dtas-ctl ls
|
22
|
+
|
23
|
+
Invoking dtas-sinkedit will spawn your favorite text editor on a
|
24
|
+
given SINKNAME:
|
25
|
+
|
26
|
+
$ dtas-sinkedit SINKNAME
|
27
|
+
|
28
|
+
If SINKNAME was not listed, it will be created (in an inactive state).
|
29
|
+
Successfully exiting your text editor will send the changes to the
|
30
|
+
running dtas-player.
|
31
|
+
|
32
|
+
# ENVIRONMENT
|
33
|
+
|
34
|
+
VISUAL / EDITOR - your favorite *nix text editor, defaults to 'vi' if unset.
|
35
|
+
|
36
|
+
DTAS_PLAYER_SOCK - the path to the dtas-player control socket.
|
37
|
+
This defaults to ~/.dtas/player.sock
|
38
|
+
|
39
|
+
# SEE ALSO
|
40
|
+
|
41
|
+
dtas-player(1), dtas-player_protocol(7), dtas-ctl(1)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
% dtas-sourceedit(1) dtas user manual
|
2
|
+
%
|
3
|
+
|
4
|
+
# NAME
|
5
|
+
|
6
|
+
dtas-sourceedit - edit the command and environment of the decoder
|
7
|
+
|
8
|
+
# SYNOPSYS
|
9
|
+
|
10
|
+
dtas-sourceedit
|
11
|
+
|
12
|
+
# DESCRIPTION
|
13
|
+
|
14
|
+
dtas-sourceedit spawns an editor to allow editing of a sink as a YAML file.
|
15
|
+
See dtas-player_protocol(7) for details on SINKARGS.
|
16
|
+
|
17
|
+
# EXAMPLES
|
18
|
+
|
19
|
+
Invoking dtas-sourceedit will spawn your favorite text editor on a
|
20
|
+
given SINKNAME:
|
21
|
+
|
22
|
+
$ dtas-sourceedit
|
23
|
+
|
24
|
+
# ENVIRONMENT
|
25
|
+
|
26
|
+
VISUAL / EDITOR - your favorite *nix text editor, defaults to 'vi' if unset.
|
27
|
+
|
28
|
+
DTAS_PLAYER_SOCK - the path to the dtas-player control socket.
|
29
|
+
This defaults to ~/.dtas/player.sock
|
30
|
+
|
31
|
+
# SEE ALSO
|
32
|
+
|
33
|
+
dtas-player(1), dtas-player_protocol(7), dtas-ctl(1)
|
@@ -0,0 +1,57 @@
|
|
1
|
+
% dtas-xdelay(1) dtas user manual
|
2
|
+
%
|
3
|
+
|
4
|
+
# NAME
|
5
|
+
|
6
|
+
dtas-xdelay - play audio with a crossover delay
|
7
|
+
|
8
|
+
# SYNOPSYS
|
9
|
+
|
10
|
+
dtas-xdelay [OPTIONS] INPUT1 INPUT2 DELAY
|
11
|
+
|
12
|
+
# DESCRIPTION
|
13
|
+
|
14
|
+
dtas-xdelay will delay an audio band by a given delay (in seconds or
|
15
|
+
fractions thereof). This can be useful for tuning a sub/sat speaker
|
16
|
+
system. It is intended for use a dtas-player sink command as displayed
|
17
|
+
in the synopsis.
|
18
|
+
|
19
|
+
The INPUT arguments (/dev/fd/lo and /dev/fd/hi) are automatically
|
20
|
+
changed by dtas-player to match the given file descriptors of the pipes.
|
21
|
+
|
22
|
+
Both descriptors receive the same audio data, but will be split using a
|
23
|
+
Linkwitz-Riley crossover. The high-band (second argument) will be
|
24
|
+
delayed by default.
|
25
|
+
|
26
|
+
# EXAMPLE
|
27
|
+
|
28
|
+
To set this via dtas-player to delay the high frequencies by 20ms.
|
29
|
+
|
30
|
+
dtas-ctl sink ed SINKNAME \
|
31
|
+
command='dtas-xdelay /dev/fd/lo /dev/fd/hi 0.020'
|
32
|
+
|
33
|
+
# OPTIONS
|
34
|
+
|
35
|
+
-x, \--crossover-frequency FREQUENCY
|
36
|
+
: Frequency at which to set the crossover. This defaults to 80 (Hz).
|
37
|
+
|
38
|
+
-l, \--lowpass-delay
|
39
|
+
: Delay the lowpass frequency instead of the highpass one.
|
40
|
+
|
41
|
+
# ENVIRONMENT
|
42
|
+
|
43
|
+
SOXFMT - this environment is automatically set if used as a dtas-player
|
44
|
+
sink
|
45
|
+
|
46
|
+
DTAS_PLAYER_SOCK - the path to the dtas-player control socket.
|
47
|
+
This defaults to ~/.dtas/player.sock
|
48
|
+
|
49
|
+
# NOTES
|
50
|
+
|
51
|
+
The author of this knows little about signal processing and is just
|
52
|
+
parroting things he's learned on the sox documentation and mailing list.
|
53
|
+
Corrections greatly appreciated (email Eric Wong e@80x24.org)
|
54
|
+
|
55
|
+
# SEE ALSO
|
56
|
+
|
57
|
+
dtas-player(1), dtas-player_protocol(7), dtas-ctl(1), sox(1)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
dtas-player troubleshooting guide
|
2
|
+
---------------------------------
|
3
|
+
|
4
|
+
dtas-player is heavily dependent on external commands such as sox(1)/play(1)
|
5
|
+
and ecasound(1).
|
6
|
+
|
7
|
+
* problem: audio playback does not start
|
8
|
+
|
9
|
+
Since dtas-player just runs the play(1) command, the first step is to
|
10
|
+
ensure play(1) works without dtas-player.
|
11
|
+
|
12
|
+
Consult SoX documentation and mailing lists for getting play(1) to work,
|
13
|
+
first.
|
data/GIT-VERSION-GEN
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net>
|
3
|
+
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
|
+
CONSTANT = "DTAS::VERSION"
|
5
|
+
RVF = "lib/dtas/version.rb"
|
6
|
+
DEF_VER = "v0.0.0"
|
7
|
+
vn = DEF_VER
|
8
|
+
|
9
|
+
# First see if there is a version file (included in release tarballs),
|
10
|
+
# then try git-describe, then default.
|
11
|
+
if File.exist?(".git")
|
12
|
+
describe = `git describe --abbrev=4 HEAD 2>/dev/null`.strip
|
13
|
+
case describe
|
14
|
+
when /\Av[0-9]*/
|
15
|
+
vn = describe
|
16
|
+
system(*%w(git update-index -q --refresh))
|
17
|
+
unless `git diff-index --name-only HEAD --`.chomp.empty?
|
18
|
+
vn << "-dirty"
|
19
|
+
end
|
20
|
+
vn.tr!('-', '.')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
vn = vn.sub!(/\Av/, "")
|
25
|
+
new_ruby_version = "#{CONSTANT} = '#{vn}'\n"
|
26
|
+
cur_ruby_version = File.read(RVF) rescue nil
|
27
|
+
if new_ruby_version != cur_ruby_version
|
28
|
+
File.open(RVF, "w") { |fp| fp.write("# :enddoc:\n#{new_ruby_version}") }
|
29
|
+
end
|
30
|
+
puts vn if $0 == __FILE__
|
data/GNUmakefile
ADDED
data/HACKING
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
serialization (dtas-player)
|
2
|
+
---------------------------
|
3
|
+
|
4
|
+
* objects serialize using the "to_hsh" method (like "to_hash", but omits
|
5
|
+
default values) and then to YAML. We avoid exposing the fact we use
|
6
|
+
Ruby (or any programming language) in any formats.
|
7
|
+
|
8
|
+
* every serializable class defines a "load" singleton method which takes the
|
9
|
+
output Hash of "to_hsh"
|
10
|
+
|
11
|
+
* we avoid serializing default values to make the state file shorter and
|
12
|
+
more suitable for human viewing and editing.
|
data/INSTALL
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
Uncommon for audio software, dtas is implemented in Ruby.
|
2
|
+
|
3
|
+
The latest stable release of Ruby is recommended, currently 2.0.0-p247.
|
4
|
+
However, Ruby 1.9.3 should work, too. Older versions of Ruby are not
|
5
|
+
recommended.
|
6
|
+
|
7
|
+
SoX is a dependency of dtas-player. While not _strictly_ required, the
|
8
|
+
dtas-player uses SoX by default and you will need it unless you've
|
9
|
+
reconfigured dtas-player to use something else.
|
10
|
+
|
11
|
+
mp3gain is required if you use ReplayGain with MP3s
|
12
|
+
|
13
|
+
If you only intend to use dtas-cueedit, you will need metaflac(1) from
|
14
|
+
the FLAC package.
|
15
|
+
|
16
|
+
Debian users can install sox, mp3gain, and flac dependencies easily:
|
17
|
+
|
18
|
+
apt-get install sox libsox-fmt-all mp3gain flac
|
19
|
+
|
20
|
+
= installing dtas RubyGem on GNU/Linux (Linux kernel 2.6.32+)
|
21
|
+
|
22
|
+
Be sure to have Ruby development headers and a working C compiler.
|
23
|
+
This will pull in the io_splice and sleepy_penguin RubyGems for minor
|
24
|
+
speedups. If you cannot be bothered to have a development
|
25
|
+
environment, just use "gem install dtas"
|
26
|
+
|
27
|
+
gem install dtas-linux
|
28
|
+
|
29
|
+
This should pull in the "io_splice" and "sleepy_penguin" RubyGems
|
30
|
+
|
31
|
+
For future upgrades of dtas (upgrades to dtas-linux will be infrequent)
|
32
|
+
|
33
|
+
gem update dtas
|
34
|
+
|
35
|
+
= installing the dtas RubyGem on non-GNU/Linux or old GNU/Linux systems
|
36
|
+
|
37
|
+
gem install dtas
|
38
|
+
|
39
|
+
= installing dtas via tarball and setup.rb
|
40
|
+
|
41
|
+
Grab the latest tarball from our HTTP site:
|
42
|
+
|
43
|
+
http://dtas.80x24.org/2013/dtas-0.0.0.tar.gz
|
44
|
+
|
45
|
+
$ tar zxvf dtas-0.0.0.tar.gz
|
46
|
+
$ cd dtas-0.0.0
|
47
|
+
$ ruby setup.rb
|
48
|
+
|
49
|
+
GNU/Linux users may optionally install "io_splice" and
|
50
|
+
"sleepy_penguin" packages:
|
51
|
+
|
52
|
+
io_splice - http://bogomips.org/ruby_io_splice/
|
53
|
+
sleepy_penguin - http://bogomips.org/sleepy_penguin/
|
data/README
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
= dtas - duct tape audio suite for *nix
|
2
|
+
|
3
|
+
Free Software command-line tools for audio playback, mastering, and
|
4
|
+
whatever else related to audio. dtas follows the worse-is-better
|
5
|
+
philosophy and acts as duct tape to combine existing command-line tools
|
6
|
+
for flexibility and ease-of-development. dtas is currently implemented
|
7
|
+
in Ruby (and some embedded shell), but may use other languages in the
|
8
|
+
future.
|
9
|
+
|
10
|
+
Primary executables available are:
|
11
|
+
|
12
|
+
* dtas-player - gapless music player (or pipeline/process manager :P)
|
13
|
+
* dtas-cueedit - embedded cuesheet editor (FLAC-only for now)
|
14
|
+
|
15
|
+
The centerpiece is dtas-player, a gapless music player designed to aid
|
16
|
+
in writing scripts for sox/ecasound use. Unlike monolithic music
|
17
|
+
players, dtas-player is close to a *nix shell in functionality, allowing
|
18
|
+
for the execution of arbitrary commands as sources, filters, and sinks
|
19
|
+
for audio. dtas-player supports:
|
20
|
+
|
21
|
+
* any DSP effects offered by SoX, ecasound, LADSPA, LV2, etc..
|
22
|
+
* multiple outputs for playback (including dumping audio to
|
23
|
+
files or piping to arbitrary commands)
|
24
|
+
* ReplayGain (including fallback gain and peak normalization)
|
25
|
+
|
26
|
+
dtas-player is a *nix pipeline and process manager. It may be used
|
27
|
+
spawn and pipe to abitrary Unix commands, not just audio-related
|
28
|
+
commands. It can interactively restart/replace the source (audio
|
29
|
+
decoder) component of a pipeline while keeping the sink (playback
|
30
|
+
endpoint) running.
|
31
|
+
|
32
|
+
Users of dtas-player will also be interested in the following scripts:
|
33
|
+
|
34
|
+
* dtas-ctl - "raw" command-line scripting interface for dtas-player
|
35
|
+
* dtas-enq - enqueue files/commands for dtas-player
|
36
|
+
* dtas-msinkctl - enable/disable multiple sinks with one command
|
37
|
+
* dtas-console - rudimentary curses interface for dtas-player
|
38
|
+
* dtas-sinkedit - edit sinks (playback targets) for dtas-player
|
39
|
+
* dtas-sourceedit - edit source (decoder process parameters) for dtas-player
|
40
|
+
* dtas-xdelay - alternative sink for dtas-player
|
41
|
+
|
42
|
+
All scripts have some documentation in the Documentation/ directory or
|
43
|
+
manpages distributed with the gem. dtas exposes no public APIs outside
|
44
|
+
of command-line and YAML text. dtas is aimed at users familiar with the
|
45
|
+
*nix command-line and editing text files. Familiarity with the Ruby
|
46
|
+
programming language is absolutely NOT required.
|
47
|
+
|
48
|
+
Coming:
|
49
|
+
|
50
|
+
* MPRIS/MPRIS 2.0 bridge for partial dtas-player control
|
51
|
+
* tracklist support in dtas-player (maybe?)
|
52
|
+
* whatever command-line tools come to mind...
|
53
|
+
* native ffmpeg/avconv/gst support in dtas-player
|
54
|
+
* better error handling, many bugfixes, etc...
|
55
|
+
* better documentation
|
56
|
+
|
57
|
+
== Source code
|
58
|
+
|
59
|
+
git clone git://80x24.org/dtas
|
60
|
+
|
61
|
+
Please use git-format-patch(1) and git-send-email(1) distributed with
|
62
|
+
the git(7) suite for generating and sending patches. Please format
|
63
|
+
pull requests with the git-request-pull(1) script (also distributed
|
64
|
+
with git(7)) and send them via email.
|
65
|
+
|
66
|
+
See http://www.git-scm.com/ for more information on git.
|
67
|
+
|
68
|
+
== Contact
|
69
|
+
|
70
|
+
Feedback (results, bug reports, patches, pull-requests) via plain-text
|
71
|
+
email is very much appreciated.
|
72
|
+
|
73
|
+
Please send plain-text email to Eric Wong <normalperson@yhbt.net>,
|
74
|
+
HTML will not be read. dtas is for GUI-phobes, by GUI-phobes.
|
75
|
+
Public mailing list coming soon.
|
76
|
+
|
77
|
+
== License
|
78
|
+
|
79
|
+
dtas is copyrighted Free Software by all contributors, see logs
|
80
|
+
in revision control for names and email addresses of all of them.
|
81
|
+
|
82
|
+
dtas is free software; you can redistribute it and/or modify it
|
83
|
+
under the terms of the GNU General Public License as published by the
|
84
|
+
Free Software Foundation; either version 3 of the License, or (at your
|
85
|
+
option) any later version.
|
86
|
+
|
87
|
+
dtas is distributed in the hope that it will be useful, but WITHOUT ANY
|
88
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
89
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
90
|
+
for more details.
|
91
|
+
|
92
|
+
You should have received a copy of the GNU General Public License along
|
93
|
+
with this program; if not, see https://www.gnu.org/licenses/gpl-3.0.txt
|
94
|
+
|
95
|
+
dtas is distributed in the hope that it will be useful, but WITHOUT ANY
|
96
|
+
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
97
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
98
|
+
for more details.
|
99
|
+
|
100
|
+
Note: The GPL does not and can not apply to external commands run by
|
101
|
+
dtas scripts, so users _may_ run any non-Free Software you want via dtas
|
102
|
+
(just like one may do so via bash). However, the dtas project does not
|
103
|
+
endorse nor support the use of any non-Free Software.
|
data/Rakefile
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
load "./GIT-VERSION-GEN"
|
2
|
+
manifest = "Manifest.txt"
|
3
|
+
gitidx = File.stat(".git/index") rescue nil
|
4
|
+
if ! File.exist?(manifest) || File.stat(manifest).mtime < gitidx.mtime
|
5
|
+
system("git ls-files > #{manifest}")
|
6
|
+
File.open(manifest, "a") do |fp|
|
7
|
+
fp.puts "NEWS"
|
8
|
+
fp.puts "lib/dtas/version.rb"
|
9
|
+
|
10
|
+
if system("make -C Documentation")
|
11
|
+
require 'fileutils'
|
12
|
+
FileUtils.rm_rf 'man'
|
13
|
+
if system("make -C Documentation gem-man")
|
14
|
+
`git ls-files -o man`.split(/\n/).each do |man|
|
15
|
+
fp.puts man
|
16
|
+
end
|
17
|
+
else
|
18
|
+
warn "failed to install manpages for distribution"
|
19
|
+
end
|
20
|
+
else
|
21
|
+
warn "failed to build manpages for distribution"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
File.open("NEWS", "w") do |fp|
|
25
|
+
`git tag -l`.split(/\n/).each do |tag|
|
26
|
+
%r{\Av([\d\.]+)} =~ tag or next
|
27
|
+
version = $1
|
28
|
+
header, subject, body = `git cat-file tag #{tag}`.split(/\n\n/, 3)
|
29
|
+
header = header.split(/\n/)
|
30
|
+
tagger = header.grep(/\Atagger /)[0]
|
31
|
+
time = Time.at(tagger.split(/ /)[-2].to_i).utc
|
32
|
+
date = time.strftime("%Y-%m-%d")
|
33
|
+
|
34
|
+
fp.write("=== #{version} / #{date}\n\n#{subject}\n\n#{body}")
|
35
|
+
end
|
36
|
+
fp.flush
|
37
|
+
if fp.size <= 5
|
38
|
+
fp.puts "Unreleased"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
require 'hoe'
|
44
|
+
Hoe.plugin :git
|
45
|
+
include Rake::DSL
|
46
|
+
|
47
|
+
h = Hoe.spec('dtas') do |p|
|
48
|
+
developer 'Eric Wong', 'e@80x24.org'
|
49
|
+
|
50
|
+
self.readme_file = 'README'
|
51
|
+
self.history_file = 'NEWS'
|
52
|
+
self.urls = %w(http://dtas.80x24.org/)
|
53
|
+
self.summary = x = File.readlines("README")[0].split(/\s+/)[1].chomp
|
54
|
+
self.description = self.paragraphs_of("README", 1)
|
55
|
+
# no public APIs, no HTML, either
|
56
|
+
self.need_rdoc = false
|
57
|
+
self.extra_rdoc_files = []
|
58
|
+
license "GPLv3+"
|
59
|
+
end
|
60
|
+
|
61
|
+
task :rsync_docs do
|
62
|
+
dest = "80x24.org:/srv/dtas/"
|
63
|
+
system("rsync --chmod=Fugo=r --files-from=.rsync_doc -av ./ #{dest}")
|
64
|
+
system("rsync --chmod=Fugo=r -av ./Documentation/*.txt #{dest}")
|
65
|
+
end
|
66
|
+
|
67
|
+
task :coverage do
|
68
|
+
env = {
|
69
|
+
"COVERAGE" => "1",
|
70
|
+
"RUBYOPT" => "-r./test/helper",
|
71
|
+
}
|
72
|
+
File.open("coverage.dump", "w").close # clear
|
73
|
+
pid = Process.spawn(env, "rake")
|
74
|
+
_, status = Process.waitpid2(pid)
|
75
|
+
require './test/covshow'
|
76
|
+
exit status.exitstatus
|
77
|
+
end
|
78
|
+
|
79
|
+
base = "dtas-#{h.version}"
|
80
|
+
task tarball: "pkg/#{base}" do
|
81
|
+
Dir.chdir("pkg") do
|
82
|
+
tgz = "#{base}.tar.gz"
|
83
|
+
tmp = "#{tmp}.#$$"
|
84
|
+
cmd = "tar cf - #{base} | gzip -9 > #{tmp}"
|
85
|
+
system(cmd) or abort "#{cmd}: #$?"
|
86
|
+
File.rename(tmp, tgz)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
task dist: [ :tarball, :package ] do
|
91
|
+
Dir.chdir("pkg") do
|
92
|
+
%w(dtas-linux dtas-mpris).each do |gem|
|
93
|
+
cmd = "gem build ../#{gem}.gemspec"
|
94
|
+
system(cmd) or abort "#{cmd}: #$?"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|