Compare commits

..

73 Commits

Author SHA1 Message Date
Dima Kogan
7d7511e62e changelog update 2017-06-19 13:14:20 -07:00
Dima Kogan
1744aeb6d2 tab completion for --image 2017-06-19 13:11:42 -07:00
Dima Kogan
53f6cdae5b added --image as a convenience wrapper for --equation 2017-06-19 13:08:33 -07:00
Dima Kogan
ed9512924d version bump 2017-03-31 15:40:39 -07:00
Dima Kogan
2ee401fcb4 changelog update 2017-03-31 15:39:48 -07:00
Dima Kogan
7c1f02ec7f reworded manpage of --exit 2017-03-19 19:50:45 -07:00
Dima Kogan
5740e55a6f Data can now come from STDIN or files on the cmdline
This emulates the while(<>) syntax in perl, and makes self-plotting data files
work again. These have been broken since that syntax was taken away in
4cfcf0fc35
2017-03-19 19:50:34 -07:00
Dima Kogan
a0c9e6e8bc version bump 2017-02-24 23:44:20 -08:00
Dima Kogan
64b12e4738 When plotting histograms, --xlen can coexist with --xmin/--xmax 2017-02-09 19:12:18 -08:00
Dima Kogan
402fa32bda histograms work as expected with --xlen and --monotonic 2017-02-09 16:07:12 -08:00
Dima Kogan
7da37a0015 better sanity checking for histogram options 2017-02-09 14:16:58 -08:00
Dima Kogan
a48b834512 getRangeSize() function added to ocnsolidate that logic 2017-02-09 14:16:58 -08:00
Dima Kogan
888583abe9 version bump 2016-11-25 14:45:47 -08:00
Dima Kogan
e17f110269 changelog bump 2016-11-25 14:45:35 -08:00
Dima Kogan
89a185f8a6 the sleep-forever delay at end is now > 1000 days 2016-11-25 14:42:49 -08:00
Dima Kogan
35ed74eaf1 'any' is from List::MoreUtils, not List::Util 2016-11-25 14:41:39 -08:00
Dima Kogan
07f574a929 added a new recipe 2016-11-25 14:39:22 -08:00
Dima Kogan
5dce1d8cda --style and --rangesize can now take a comma-separated list of IDs 2016-11-25 14:39:15 -08:00
Dima Kogan
048b0db65c Slightly better docs 2016-11-25 13:54:22 -08:00
Dima Kogan
b0877a8926 If the options couldn't be parsed I don't dump the whole manpage 2016-11-25 13:33:48 -08:00
Dima Kogan
4958bda912 version bump 2016-10-15 20:50:58 -07:00
Dima Kogan
3860d8281b version bump 2016-10-15 20:42:27 -07:00
Dima Kogan
4f9adb6e11 histograms have the correct default style 2016-10-15 20:35:48 -07:00
Dima Kogan
167e85d2a7 minor simplification
I delete the with option after I use it. This is defensive and clarifies the
intent
2016-10-15 20:17:08 -07:00
Dima Kogan
5123ca73d3 minor simplification
I delete the style and styleall options after I use them. This is defensive and
clarifies the intent
2016-10-15 20:14:33 -07:00
Dima Kogan
d4ca90e1bd minor simplification
curvestyle_hash doesn't really exist anymore
2016-10-15 20:08:24 -07:00
Dima Kogan
9e669044c7 can now ask for fnormal histograms 2016-09-08 23:02:31 -07:00
Dima Kogan
cacbedb336 added sample rpm spec file 2016-07-27 23:08:22 -07:00
Dima Kogan
18994e68e1 version bump 2016-07-27 22:16:34 -07:00
Dima Kogan
f8ed461571 No enhanced text mode in hardcopies, slightly larger font size 2016-07-11 10:11:06 -07:00
Dima Kogan
f01431dd1e removed unneeded old code 2016-01-22 00:48:59 -08:00
Dima Kogan
80b6030996 version bump 2016-01-01 08:11:45 -08:00
Dima Kogan
232b68b819 At the end of a streaming plot, include the last chunk of data 2016-01-01 08:08:51 -08:00
Dima Kogan
12eb829f16 whitespace 2015-12-15 13:18:29 -08:00
Dima Kogan
80b5d0ab61 improved documentation of --histstyle 2015-12-15 13:18:23 -08:00
Dima Kogan
960c43e758 added --equation to the completions 2015-11-13 11:23:15 -08:00
Dima Kogan
2ecdfb9aef minor POD fix 2015-11-13 11:19:25 -08:00
Dima Kogan
fa7082b242 version bump 2015-11-13 11:08:30 -08:00
Dima Kogan
c61e58da0a added --equation 2015-11-13 11:07:18 -08:00
Dima Kogan
c19dc4aa2a slighly fancier histogram recipe 2015-11-01 13:03:52 -08:00
Dima Kogan
238a0c1943 version bump 2015-11-01 12:55:09 -08:00
Dima Kogan
42a8218fbe removed unneeded if()
This looks like a large patch, but it's 99% re-indentation
2015-11-01 12:46:30 -08:00
Dima Kogan
4cfcf0fc35 removed threading stuff
It's now all in one thread with a select() loop. Much nicer
2015-11-01 12:44:55 -08:00
Dima Kogan
0e7f51f3f7 comment 2015-11-01 01:05:32 -08:00
Dima Kogan
01971c2434 whitespace 2015-11-01 01:02:51 -08:00
Dima Kogan
104accdd0d More sophisticated handling of termination conditions
no --stream and no --exit:
  When input exhausted, keep interactive plot up, keep shell busy until user ^C

no --stream and --exit:
  When input exhausted, keep non-interactive plot up, make shell available
  immediately

--stream and no --exit:
  When input exhausted, keep interactive plot up, keep shell busy until user ^C.
  A user ^C before the input is exhausted is blocked from killing
  C<feedgnuplot>, but allows the data input process to be killed, so it looks
  like an input exhaustion condition.

--stream and --exit:
  When input exhausted or user ^C, shut down all plots, make shell available
  immediately. A user ^C is respected immediately, and C<feedgnuplot> is killed
2015-11-01 01:02:51 -08:00
Dima Kogan
605158b391 replaced a 'say' with 'print' 2015-11-01 01:45:55 -07:00
Dima Kogan
0c32afacfd fixed typo 2014-08-22 17:17:18 -07:00
Dima Kogan
1688496f34 an "exit" command now has effect even with triggered-only replotting 2014-05-28 02:34:39 -07:00
Dima Kogan
498047e785 version bump 2014-05-14 00:45:49 -07:00
Dima Kogan
72adba82f7 Declaring feedgnuplot as a package to pacify the MetaCPAN indexer
Hopefully this is sufficient. We'll see

https://github.com/dkogan/feedgnuplot/pull/16
https://github.com/CPAN-API/metacpan-web/issues/1148
https://github.com/CPAN-API/metacpan-web/issues/1170
https://github.com/CPAN-API/metacpan-web/issues/994
2014-05-14 00:43:13 -07:00
Corey Putkunz
539b2035d8 Fix for "Use of implicit split to @_ is deprecated at /d/home/coreyp/bin/feedgnuplot line 377" 2014-04-07 10:20:57 +08:00
Dima Kogan
9b3cbc13be version bump 2014-02-06 23:17:29 -08:00
Dima Kogan
a65abc6095 fixed incorrect plotting of --timefmt --rangesize plots 2014-02-06 23:16:48 -08:00
Dima Kogan
5db86810b5 the rangesizes are now precomputed and easily assessed 2014-02-06 23:16:44 -08:00
Dima Kogan
d75b572875 version bump 2014-02-05 13:58:01 -08:00
Dima Kogan
6cb1574e2b tests use some of the nicer new syntax 2014-02-05 13:53:34 -08:00
Dima Kogan
4fd1c390ff added --rangesize and --rangesizeall
--rangesizeall is a different way to express --extraValuesPerPoint. --rangesize
is per-curve however
2014-02-05 13:53:16 -08:00
Dima Kogan
4163e24956 Simplified data parsing.
Instead of complicated regexes, I now simply do splits and joins. This paves the
way for per-curve extraValuesPerPoint
2014-02-05 02:54:00 -08:00
Dima Kogan
13268a1fa8 fixed typo 2014-01-26 12:13:38 -08:00
Dima Kogan
08fa97fdb5 version bump 2014-01-25 20:51:45 -08:00
Dima Kogan
e19bdf51c4 changelog bump 2014-01-25 20:51:45 -08:00
Dima Kogan
a9af1925e2 test suite now requires gawk
Previously I assumed that some 'awk' existed, but machines with just mawk were
producing test error complaining about strftime()
2014-01-25 20:51:45 -08:00
Dima Kogan
9387a85fe6 changelog bump 2014-01-24 15:48:06 -08:00
Dima Kogan
f38a00bfd1 docs now escape cmdline options with C<> 2014-01-24 15:47:34 -08:00
Dima Kogan
c21c4d7e70 added --style, --styleall 2014-01-24 15:31:37 -08:00
Dima Kogan
35901fe6d1 added --with 2014-01-24 15:19:03 -08:00
Dima Kogan
1e3d01edd2 comment 2014-01-24 14:41:49 -08:00
Dima Kogan
20e9adbae4 added "set" and "unset" options 2014-01-24 14:39:34 -08:00
Dima Kogan
2b2bba9ff3 Cleaned up some option-parsing logic
$options{y2} and $options{extracmds} now default to [], so I never need to check
for defined $options{y2}.

This patch also changes some

 foreach()
 {
   dosomething();
 }

blocks into

 dosomething() foreach();
2014-01-24 14:31:54 -08:00
Dima Kogan
caea1285a9 minor version bump 2013-12-04 21:34:07 -08:00
Dima Kogan
64bce2a425 added CPAN meta-data to require IPC::Run at build time 2013-12-04 20:44:54 -08:00
Dima Kogan
adbc8393f5 fixed spelling error in POD 2013-12-04 02:34:01 -08:00
18 changed files with 1149 additions and 494 deletions

112
Changes
View File

@@ -1,3 +1,115 @@
feedgnuplot (1.43)
* Added --image
-- Dima Kogan <dima@secretsauce.net> Mon, 19 Jun 2017 13:12:38 -0700
feedgnuplot (1.42)
* Data can now come from STDIN or files on the cmdline.
This fixes a regression. Self-plotting data files work again
-- Dima Kogan <dima@secretsauce.net> Fri, 31 Mar 2017 15:38:47 -0700
feedgnuplot (1.41)
* Histograms: --xlen can coexist with --xmin/--xmax
* Histograms: work as expected with --xlen and --monotonic
* Histograms: better sanity checking of options
-- Dima Kogan <dima@secretsauce.net> Fri, 24 Feb 2017 23:42:28 -0800
feedgnuplot (1.40)
* If the options couldn't be parsed I don't dump the whole manpage
* --style and --rangesize can now take a comma-separated list of IDs
* 'any' is from List::MoreUtils, not List::Util
* the sleep-forever delay at end is now > 1000 days
-- Dima Kogan <dima@secretsauce.net> Fri, 25 Nov 2016 14:45:06 -0800
feedgnuplot (1.39)
* by default, histograms are plotted in expected ways
-- Dima Kogan <dima@secretsauce.net> Sat, 15 Oct 2016 20:45:15 -0700
feedgnuplot (1.38)
* hardcopy defaults:
- no enhanced text mode
- larger font size
-- Dima Kogan <dima@secretsauce.net> Wed, 27 Jul 2016 22:15:11 -0700
feedgnuplot (1.37)
* At the end of a streaming plot, include the last chunk of data
* Added --equation to the completions
-- Dima Kogan <dima@secretsauce.net> Fri, 01 Jan 2016 08:09:43 -0800
feedgnuplot (1.36)
* Added --equation to plot symbolic equations
-- Dima Kogan <dima@secretsauce.net> Fri, 13 Nov 2015 11:08:26 -0800
feedgnuplot (1.35)
* replaced a 'say' with 'print'. Should work better with ancient perls
* an "exit" command now has effect even with triggered-only replotting
* More sophisticated handling of termination conditions:
- Without --exit, we always end up with an interactive plot when the
input data is exhausted or when the user sends a ^C to the pipeline
- When streaming, the first ^C does not kill feedgnuplot
* Removed threading
-- Dima Kogan <dima@secretsauce.net> Sun, 01 Nov 2015 12:50:33 -0800
feedgnuplot (1.34)
* Fix for "Use of implicit split to @_ is deprecated". Thanks to Corey
Putkunz
* Declaring feedgnuplot as a package to let MetaCPAN index this
distribution
-- Dima Kogan <dima@secretsauce.net> Wed, 14 May 2014 00:45:24 -0700
feedgnuplot (1.33)
* fixed incorrect plotting of --timefmt --rangesize plots
-- Dima Kogan <dima@secretsauce.net> Thu, 06 Feb 2014 23:17:21 -0800
feedgnuplot (1.32)
* Added --rangesize and --rangesizeall. Different curves can now plot
different-size tuples
-- Dima Kogan <dima@secretsauce.net> Wed, 05 Feb 2014 13:57:58 -0800
feedgnuplot (1.31)
* Test suite requires gawk to get strftime()
-- Dima Kogan <dima@secretsauce.net> Sat, 25 Jan 2014 20:49:38 -0800
feedgnuplot (1.30)
* Added --with, --set, --unset, --style, --styleall
-- Dima Kogan <dima@secretsauce.net> Fri, 24 Jan 2014 15:38:07 -0800
feedgnuplot (1.29)
* added CPAN meta-data to require IPC::Run at build time
-- Dima Kogan <dima@secretsauce.net> Wed, 04 Dec 2013 21:12:40 -0800
feedgnuplot (1.28) feedgnuplot (1.28)
* Minor POD update * Minor POD update

View File

@@ -63,7 +63,9 @@ WriteMakefile
: ()), : ()),
PL_FILES => {}, PL_FILES => {},
EXE_FILES => [ 'bin/feedgnuplot' ], EXE_FILES => [ 'bin/feedgnuplot' ],
BUILD_REQUIRES => { 'String::ShellQuote' => 0}, BUILD_REQUIRES => { 'String::ShellQuote' => 0,
'List::MoreUtils' => 0,
'IPC::Run' => 0},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', }, dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'feedgnuplot-*' }, clean => { FILES => 'feedgnuplot-*' },
); );

File diff suppressed because it is too large Load Diff

View File

@@ -7,12 +7,21 @@ complete -W \
--colormap \ --colormap \
--curvestyle \ --curvestyle \
--curvestyleall \ --curvestyleall \
--style \
--styleall \
--with \
--dataid \ --dataid \
--domain \ --domain \
--dump \ --dump \
--exit \ --exit \
--extraValuesPerPoint \ --extraValuesPerPoint \
--rangesizeall \
--rangesize \
--extracmds \ --extracmds \
--set \
--unset \
--equation \
--image \
--geometry \ --geometry \
--hardcopy \ --hardcopy \
--help \ --help \

View File

@@ -26,17 +26,26 @@ _arguments -S
'--zmin:min Z:' \ '--zmin:min Z:' \
'--zmax:max Z:' \ '--zmax:max Z:' \
'*--y2:plot to place on the Y2 axis:' \ '*--y2:plot to place on the Y2 axis:' \
'--curvestyleall[Additional styles for ALL curves]:style' \ '(--with)--curvestyleall[Additional styles for ALL curves]:style' \
'(--with)--styleall[Additional styles for ALL curves]:style' \
'(--curvestyleall)--with[Additional styles for ALL curves]:style' \
'*--extracmds[Additional gnuplot commands]:command' \ '*--extracmds[Additional gnuplot commands]:command' \
'*--set[Additional 'set' gnuplot commands]:set-option' \
'*--unset[Additional 'unset' gnuplot commands]:unset-option' \
'*--equation[Raw symbolic equation]:equation' \
'--image[Image file to render beneath the data]:image' \
'--square[Plot data with square aspect ratio]' \ '--square[Plot data with square aspect ratio]' \
'--square_xy[For 3D plots, set square aspect ratio for ONLY the x,y axes]' \ '--square_xy[For 3D plots, set square aspect ratio for ONLY the x,y axes]' \
'--hardcopy[Plot to a file]:filename' \ '--hardcopy[Plot to a file]:filename' \
'--maxcurves[The maximum allowed number of curves]:number of curves' \ '--maxcurves[The maximum allowed number of curves]:number of curves' \
'(--3d)--monotonic[Resets plot if an X in the past is seen]' \ '(--3d)--monotonic[Resets plot if an X in the past is seen]' \
'--extraValuesPerPoint[How many extra values are given for each data point]:N'\ '(--rangesizeall)--extraValuesPerPoint[How many extra values are given for each data range]:N'\
'(--extraValuesPerPoint)--rangesizeall[How many values are given for each data range]:N'\
'*--rangesize[How many values comprise a data range in this curve]:curve id: :N:' \
'--dump[Instead of printing to gnuplot, print to STDOUT]' \ '--dump[Instead of printing to gnuplot, print to STDOUT]' \
'--geometry[The X11 geometry string]:geometry string:' \ '--geometry[The X11 geometry string]:geometry string:' \
'*--curvestyle[Additional styles for a curve]:curve id: :style:' \ '*--curvestyle[Additional styles for a curve]:curve id: :style:' \
'*--style[Additional styles for a curve]:curve id: :style:' \
'(--3d)*--histogram:plot to treat as a histogram:' \ '(--3d)*--histogram:plot to treat as a histogram:' \
'--binwidth:Histogram bin width:' \ '--binwidth:Histogram bin width:' \
'--histstyle:Style of histogram:(frequency unique cumulative cnormal)' \ '--histstyle:Style of histogram:(frequency unique cumulative cnormal)' \

51
debian/changelog vendored
View File

@@ -1,51 +0,0 @@
feedgnuplot (1.28-1) unstable; urgency=low
* Upstream update:
- Removed example debianization
- Removed unreliable unit tests from automated testing (Closes: #731080)
* gnuplot dependency now favors graphical gnuplot packages
* Removed Anton Gladky from the Uploaders
-- Dima Kogan <dima@secretsauce.net> Wed, 04 Dec 2013 02:05:08 -0800
feedgnuplot (1.26-1) unstable; urgency=low
[ Dima Kogan ]
* Minor POD update
* Added test suite
* Added initial support for --timefmt. Currently time/date data is
supported only at the x-axis domain
* Added --exit option for force feedgnuplot to return even if gnuplot
may not yet be done rendering (patch by Eric Schulte)
* Reformatted the documentation
* y2-axis curves no longer have a thicker line by default
* --hardcopy now handles piped output (gnuplot 'set output |process'
syntax)
[ Anton Gladky ]
* Add libipc-run-perl to Build-Depends to execute tests
-- Dima Kogan <dima@secretsauce.net> Sun, 20 Oct 2013 01:19:51 -0700
feedgnuplot (1.24-2) unstable; urgency=low
* Now building the html documentation from the correct POD source
-- Dima Kogan <dima@secretsauce.net> Sun, 28 Apr 2013 17:42:52 -0700
feedgnuplot (1.24-1) unstable; urgency=low
* Fixed regression in --monotonic. This works again now
* moved POD back into the main source file. This fixes the broken usage
messages
* added --version
* fixed watchfile to work with newer github pages
* priority now optional
-- Dima Kogan <dima@secretsauce.net> Fri, 08 Feb 2013 02:01:32 -0800
feedgnuplot (1.23-2) unstable; urgency=low
* Initial Debian release (Closes: #686413)
-- Dima Kogan <dima@secretsauce.net> Tue, 30 Oct 2012 11:14:01 -0700

1
debian/compat vendored
View File

@@ -1 +0,0 @@
9

19
debian/control vendored
View File

@@ -1,19 +0,0 @@
Source: feedgnuplot
Section: science
Priority: optional
Build-Depends: debhelper (>= 9), libstring-shellquote-perl, perl, gawk, gnuplot, libipc-run-perl
Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Uploaders: Dima Kogan <dima@secretsauce.net>
Standards-Version: 3.9.4
Homepage: https://github.com/dkogan/feedgnuplot
Vcs-Git: git://git.debian.org/git/debian-science/packages/feedgnuplot.git
Vcs-Browser: http://git.debian.org/?p=debian-science/packages/feedgnuplot.git
Package: feedgnuplot
Architecture: all
Depends: ${misc:Depends}, ${perl:Depends}, gnuplot-qt | gnuplot-x11 | gnuplot
Description: Pipe-oriented frontend to Gnuplot
Flexible, command-line-oriented frontend to Gnuplot. Creates plots from data
coming in on STDIN or given in a filename passed on the commandline. Various
data representations are supported, as is hardcopy output and streaming display
of live data.

24
debian/copyright vendored
View File

@@ -1,24 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/dkogan/feedgnuplot
Upstream-Contact: Dima Kogan, <dima@secretsauce.net>
Upstream-Name: feedgnuplot
Files: *
Copyright: 2011, Dima Kogan <dima@secretsauce.net>
License: Artistic or GPL-1+
License: Artistic
This program is free software; you can redistribute it and/or modify
it under the terms of the Artistic License, which comes with Perl.
.
On Debian GNU/Linux systems, the complete text of the Artistic License
can be found in `/usr/share/common-licenses/Artistic'.
License: GPL-1+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
.
On Debian GNU/Linux systems, the complete text of version 1 of the
General Public License can be found in `/usr/share/common-licenses/GPL-1'.

View File

@@ -1,9 +0,0 @@
Document: feedgnuplot
Title: Feedgnuplot Manual
Author: Dima Kogan
Abstract: Formatted manpage for feedgnuplot
Section: Science/Data Analysis
Format: HTML
Index: /usr/share/doc/feedgnuplot/feedgnuplot.html
Files: /usr/share/doc/feedgnuplot/feedgnuplot.html

View File

@@ -1 +0,0 @@
feedgnuplot.html

View File

@@ -1,2 +0,0 @@
completions/bash/feedgnuplot /etc/bash_completion.d/
completions/zsh/_feedgnuplot /usr/share/zsh/vendor-completions

4
debian/gbp.conf vendored
View File

@@ -1,4 +0,0 @@
[DEFAULT]
debian-branch = debian
upstream-tag = v%(version)s
pristine-tar = True

12
debian/rules vendored
View File

@@ -1,12 +0,0 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_build:
dh_auto_build
pod2html --title=feedgnuplot bin/feedgnuplot > feedgnuplot.html
override_dh_auto_clean:
rm -rf feedgnuplot.html pod2htm*
dh_auto_clean

View File

@@ -1 +0,0 @@
3.0 (quilt)

4
debian/watch vendored
View File

@@ -1,4 +0,0 @@
version=3
opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)\d*)$/$1~$2/,dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$// \
https://github.com/dkogan/feedgnuplot/tags .*/v?(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
# Bart Martens <bartm@debian.org> Sat, 22 Dec 2012 12:54:18 +0000

58
feedgnuplot.spec Normal file
View File

@@ -0,0 +1,58 @@
# Sample spec file for rpm-based systems. Debian-based systems already have this
# packaged, so we do not ship those here
Name: feedgnuplot
Version: 1.38
Release: 1%{?dist}
Summary: Pipe-oriented frontend to Gnuplot
BuildArch: noarch
License: Artistic or GPL-1+
URL: https://www.github.com/dkogan/feedgnuplot/
Source0: https://www.github.com/dkogan/feedgnuplot/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: /usr/bin/pod2html
BuildRequires: perl-String-ShellQuote
BuildRequires: perl-ExtUtils-MakeMaker
BuildRequires: perl
BuildRequires: gawk
BuildRequires: gnuplot
BuildRequires: perl-IPC-Run
Requires: gnuplot
%description
Flexible, command-line-oriented frontend to Gnuplot. Creates plots from data
coming in on STDIN or given in a filename passed on the commandline. Various
data representations are supported, as is hardcopy output and streaming display
of live data.
%prep
%setup -q
%build
perl Makefile.PL INSTALLDIRS=vendor
make
pod2html --title=feedgnuplot bin/feedgnuplot > feedgnuplot.html
%install
make install DESTDIR=%{buildroot} PREFIX=/usr
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}
cp Changes LICENSE feedgnuplot.html %{buildroot}%{_defaultdocdir}/%{name}
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions
cp completions/zsh/* %{buildroot}%{_datadir}/zsh/site-functions
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
cp completions/bash/* %{buildroot}%{_datadir}/bash-completion/completions
rm -rf %{buildroot}/usr/lib64
%files
%{_bindir}/*
%{_datadir}/zsh/*
%{_datadir}/bash-completion/*
%doc %{_defaultdocdir}/%{name}/*
%doc %{_mandir}

202
t/plots.t
View File

@@ -17,14 +17,20 @@ BEGIN {
exit(0); exit(0);
} }
open(my $pipe, 'gnuplot --version |'); my $gawkversion = `gawk -V`;
if( !$pipe ) if( !$gawkversion || $@ )
{
print("1..0 # Skip: gawk is required for strftime() in the test suite. Skipping tests.\n");
exit(0);
}
my $gnuplotVersion = `gnuplot --version`;
if( !$gnuplotVersion || $@)
{ {
print("1..0 # Skip: gnuplot not installed. Tests require ver. 4.6.4; feedgnuplot works with any.\n"); print("1..0 # Skip: gnuplot not installed. Tests require ver. 4.6.4; feedgnuplot works with any.\n");
exit(0); exit(0);
} }
my $gnuplotVersion = <$pipe>;
chomp $gnuplotVersion; chomp $gnuplotVersion;
if ($gnuplotVersion ne "gnuplot 4.6 patchlevel 4") if ($gnuplotVersion ne "gnuplot 4.6 patchlevel 4")
{ {
@@ -33,7 +39,7 @@ BEGIN {
} }
} }
use Test::More tests => 52; use Test::More tests => 58;
use File::Temp 'tempfile'; use File::Temp 'tempfile';
use IPC::Run 'run'; use IPC::Run 'run';
use String::ShellQuote; use String::ShellQuote;
@@ -320,7 +326,7 @@ tryplot( testname => 'basic line plot with bounds, square aspect ratio',
EOF EOF
tryplot( testname => 'lines on both axes with labels, legends, titles', tryplot( testname => 'lines on both axes with labels, legends, titles',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'}, cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
'--legend', '0', 'data 0', '--legend', '0', 'data 0',
'--title', "Test plot", '--title', "Test plot",
@@ -369,7 +375,7 @@ tryplot( testname => 'lines on both axes with labels, legends, titles',
EOF EOF
tryplot( testname => 'lines on both axes with labels, legends, titles; different styles', tryplot( testname => 'lines on both axes with labels, legends, titles; different styles',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'}, cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => ['--legend', '0', 'data 0', options => ['--legend', '0', 'data 0',
'--title', "Test plot", '--title', "Test plot",
qw(--y2 1 --y2label y2 --xlabel x --ylabel y --y2max 30), qw(--y2 1 --y2label y2 --xlabel x --ylabel y --y2max 30),
@@ -419,7 +425,7 @@ tryplot( testname => 'lines on both axes with labels, legends, titles; different
EOF EOF
tryplot( testname => 'domain plot', tryplot( testname => 'domain plot',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'}, cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points), '--domain'], options => [qw(--lines --points), '--domain'],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -465,7 +471,7 @@ tryplot( testname => 'domain plot',
EOF EOF
tryplot( testname => 'dataid plot', tryplot( testname => 'dataid plot',
cmd => q{seq 5 | awk '{print 2*$1, $1*$1}'}, cmd => q{seq 5 | gawk '{print 2*$1, $1*$1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
qw(--dataid --autolegend)], qw(--dataid --autolegend)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -512,7 +518,7 @@ tryplot( testname => 'dataid plot',
EOF EOF
tryplot( testname => '3d spiral with bounds, labels', tryplot( testname => '3d spiral with bounds, labels',
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'}, cmd => q{seq 50 | gawk '{print 2*cos($1/5), sin($1/5), $1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z), qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
'--extracmds', 'set view 60,30'], '--extracmds', 'set view 60,30'],
@@ -560,7 +566,7 @@ tryplot( testname => '3d spiral with bounds, labels',
EOF EOF
tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio', tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio',
cmd => q{seq 50 | awk '{print 2*cos($1/5), sin($1/5), $1}'}, cmd => q{seq 50 | gawk '{print 2*cos($1/5), sin($1/5), $1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
qw(--3d --domain --zmin -5 --zmax 45 --zlabel z), qw(--3d --domain --zmin -5 --zmax 45 --zlabel z),
'--extracmds', 'set view 60,30', '--square_xy'], '--extracmds', 'set view 60,30', '--square_xy'],
@@ -608,7 +614,7 @@ tryplot( testname => '3d spiral with bounds, labels, square xy aspect ratio',
EOF EOF
tryplot( testname => 'Monotonicity check', tryplot( testname => 'Monotonicity check',
cmd => q{seq 10 | awk '{print (NR-1)%5,NR}'}, cmd => q{seq 10 | gawk '{print (NR-1)%5,NR}'},
options => [qw(--lines --points --domain --monotonic)], options => [qw(--lines --points --domain --monotonic)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -655,7 +661,7 @@ EOF
tryplot( testname => 'basic --timefmt plot', tryplot( testname => 'basic --timefmt plot',
cmd => q{seq 5 | awk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'}, cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S'], options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S'],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -701,7 +707,7 @@ tryplot( testname => 'basic --timefmt plot',
EOF EOF
tryplot( testname => '--timefmt plot with bounds', tryplot( testname => '--timefmt plot with bounds',
cmd => q{seq 5 | awk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'}, cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S', options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
'--xmin', '20 Oct 2013 06:05:00', '--xmin', '20 Oct 2013 06:05:00',
'--xmax', '20 Oct 2013 06:05:20'], '--xmax', '20 Oct 2013 06:05:20'],
@@ -749,7 +755,7 @@ tryplot( testname => '--timefmt plot with bounds',
EOF EOF
tryplot( testname => '--timefmt plot with --monotonic', tryplot( testname => '--timefmt plot with --monotonic',
cmd => q{seq 10 | awk '{x=(NR-1)%5; print strftime("%d %b %Y %T",1382249107+x,1),$1}'}, cmd => q{seq 10 | gawk '{x=(NR-1)%5; print strftime("%d %b %Y %T",1382249107+x,1),$1}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S', options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
'--monotonic'], '--monotonic'],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -795,10 +801,57 @@ tryplot( testname => '--timefmt plot with --monotonic',
EOF EOF
tryplot( testname => '--timefmt with custom rangesize',
cmd => q{seq 5 | gawk '{print strftime("%d %b %Y %T",1382249107+$1,1),$1,$1/10}'},
options => ['--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--with errorbars --rangesizeall 2)],
refplot => <<'EOF' );
5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
4.5 ++ **
| *** |
| * |
4 ++ A ++
| * |
| * |
| *** |
3.5 ++ ++
| *** |
| * |
3 ++ A ++
| * |
| * |
| *** |
2.5 ++ ++
| |
| *** |
2 ++ A ++
| * |
| *** |
| |
1.5 ++ ++
| |
| |
1 A* ++
** |
| |
+ + + + + + + + +
0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++
05:08 05:08 05:09 05:09 05:10 05:10 05:11 05:11 05:12
EOF
tryplot( testname => 'Error bars (using extraValuesPerPoint)', tryplot( testname => 'Error bars (using extraValuesPerPoint)',
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'}, cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--domain), options => [qw(--domain),
qw(--extraValuesPerPoint 1 --curvestyle 0), 'with errorbars'], qw(--extraValuesPerPoint 1 --with errorbars)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -843,6 +896,103 @@ tryplot( testname => 'Error bars (using extraValuesPerPoint)',
EOF EOF
tryplot( testname => 'Error bars (using rangesizeall)',
cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--domain),
qw(--rangesizeall 2 --with errorbars)],
refplot => <<'EOF' );
5.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
4.5 ++ **
| *** |
| * |
4 ++ A ++
| * |
| * |
| *** |
3.5 ++ ++
| *** |
| * |
3 ++ A ++
| * |
| * |
| *** |
2.5 ++ ++
| |
| *** |
2 ++ A ++
| * |
| *** |
| |
1.5 ++ ++
| |
| |
1 A* ++
** |
| |
+ + + + + + + + +
0.5 ++---------+-----------+----------+----------+----------+-----------+----------+---------++
1 1.5 2 2.5 3 3.5 4 4.5 5
EOF
tryplot( testname => 'Error bars (using rangesize, rangesizeall)',
cmd => q{seq 5 | gawk '{print $1,"vert",$1,$1/10,"horiz",5-$1,$1-$1/5,$1+$1/20}'},
options => [qw(--domain --dataid),
qw(--rangesize vert 2 --rangesizeall 3 --with xerrorbars --style vert), 'with errorbars',
qw(--xmin 1 --xmax 5 --ymin 0.5 --ymax 5.5)],
refplot => <<'EOF' );
+-----------+----------+-----------+----------+-----------+----------+-----------+---------**
+ + + + + + + + *
| *
5 ++ +A
| *
| *
| *
| **
| *** |
## * |
4 B# A ++
## * |
| * |
| *** |
| |
| *** |
| # # * |
3 ++ #########B## A ++
| # # * |
| * |
| *** |
| |
| |
| *** # # |
2 ++ A ##############B### ++
| * # # |
| *** |
| |
| |
| |
| # # |
1 A* ##################B##### ++
** # # |
| |
+ + + + + + + + +
+-----------+----------+-----------+----------+-----------+----------+-----------+----------+
1 1.5 2 2.5 3 3.5 4 4.5 5
EOF
SKIP: SKIP:
{ {
@@ -860,7 +1010,7 @@ skip "Skipping unreliable tests. Set RUN_ALL_TESTS environment variable to run t
tryplot( testname => 'Histogram plot', tryplot( testname => 'Histogram plot',
cmd => q{seq 50 | awk '{print $1*$1}'}, cmd => q{seq 50 | gawk '{print $1*$1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
qw(--histo 0 --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'], qw(--histo 0 --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -907,7 +1057,7 @@ tryplot( testname => 'Histogram plot',
EOF EOF
tryplot( testname => 'Cumulative histogram', tryplot( testname => 'Cumulative histogram',
cmd => q{seq 50 | awk '{print $1*$1}'}, cmd => q{seq 50 | gawk '{print $1*$1}'},
options => [qw(--lines --points), options => [qw(--lines --points),
qw(--histo 0 --histstyle cum --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'], qw(--histo 0 --histstyle cum --binwidth 50 --ymin 0 --curvestyleall), 'with boxes'],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -954,7 +1104,7 @@ tryplot( testname => 'Cumulative histogram',
EOF EOF
tryplot( testname => 'Circles', tryplot( testname => 'Circles',
cmd => q{seq 5 | awk '{print $1,$1,$1/10}'}, cmd => q{seq 5 | gawk '{print $1,$1,$1/10}'},
options => [qw(--circles --domain)], options => [qw(--circles --domain)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -1008,7 +1158,7 @@ note( "Starting to run streaming tests. These will take several seconds each" );
# points, and then "exit", so I should have two frames worth of data plotted. I # points, and then "exit", so I should have two frames worth of data plotted. I
# pre-send a 0 so that the gnuplot autoscaling is always well-defined # pre-send a 0 so that the gnuplot autoscaling is always well-defined
tryplot( testname => 'basic streaming test', tryplot( testname => 'basic streaming test',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 1.2");}'}, cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 1.2");}'},
options => [qw(--lines --points --stream)], options => [qw(--lines --points --stream)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -1094,7 +1244,7 @@ tryplot( testname => 'basic streaming test',
EOF EOF
tryplot( testname => 'basic streaming test, twice as fast', tryplot( testname => 'basic streaming test, twice as fast',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'}, cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4)], options => [qw(--lines --points --stream 0.4)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -1181,7 +1331,7 @@ EOF
tryplot( testname => 'streaming with --xlen', tryplot( testname => 'streaming with --xlen',
cmd => q{seq 500 | awk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'}, cmd => q{seq 500 | gawk 'BEGIN{ print 0; } {print (NR==3)? "exit" : $0; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4 --xlen 1.1)], options => [qw(--lines --points --stream 0.4 --xlen 1.1)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -1267,7 +1417,7 @@ tryplot( testname => 'streaming with --xlen',
EOF EOF
tryplot( testname => 'streaming with --monotonic', tryplot( testname => 'streaming with --monotonic',
cmd => q{seq 500 | awk '{if(NR==11) {print "exit";} else {x=(NR-1)%5; if(x==0) {print -1,-1;} print x,NR;}; fflush(); system("sleep 0.6");}'}, cmd => q{seq 500 | gawk '{if(NR==11) {print "exit";} else {x=(NR-1)%5; if(x==0) {print -1,-1;} print x,NR;}; fflush(); system("sleep 0.6");}'},
options => [qw(--lines --points --stream 0.4 --domain --monotonic)], options => [qw(--lines --points --stream 0.4 --domain --monotonic)],
refplot => <<'EOF' ); refplot => <<'EOF' );
@@ -1673,7 +1823,7 @@ tryplot( testname => 'streaming with --monotonic',
EOF EOF
tryplot( testname => '--timefmt streaming plot with --xlen', tryplot( testname => '--timefmt streaming plot with --xlen',
cmd => q{seq 5 | awk 'BEGIN{ print strftime("%d %b %Y %T",1382249107-1,1),-4;} {if(NR==3) {print "exit";} else{ print strftime("%d %b %Y %T",1382249107+$1,1),$1;} fflush(); system("sleep 0.6")}'}, cmd => q{seq 5 | gawk 'BEGIN{ print strftime("%d %b %Y %T",1382249107-1,1),-4;} {if(NR==3) {print "exit";} else{ print strftime("%d %b %Y %T",1382249107+$1,1),$1;} fflush(); system("sleep 0.6")}'},
options => ['--points', '--lines', options => ['--points', '--lines',
'--domain', '--timefmt', '%d %b %Y %H:%M:%S', '--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--stream 0.4 --xlen 3)], qw(--stream 0.4 --xlen 3)],
@@ -1761,7 +1911,7 @@ tryplot( testname => '--timefmt streaming plot with --xlen',
EOF EOF
tryplot( testname => '--timefmt streaming plot with --monotonic', tryplot( testname => '--timefmt streaming plot with --monotonic',
cmd => q{seq 10 | awk '{x=(NR-1)%5; if(x==0) {print strftime("%d %b %Y %T",1382249107-1,-4),-4;} print strftime("%d %b %Y %T",1382249107+x,1),NR; fflush(); system("sleep 0.6")}'}, cmd => q{seq 10 | gawk '{x=(NR-1)%5; if(x==0) {print strftime("%d %b %Y %T",1382249107-1,-4),-4;} print strftime("%d %b %Y %T",1382249107+x,1),NR; fflush(); system("sleep 0.6")}'},
options => ['--points', '--lines', options => ['--points', '--lines',
'--domain', '--timefmt', '%d %b %Y %H:%M:%S', '--domain', '--timefmt', '%d %b %Y %H:%M:%S',
qw(--stream 0.4 --monotonic)], qw(--stream 0.4 --monotonic)],
@@ -2177,7 +2327,7 @@ sub tryplot
my %args = @_; my %args = @_;
my @options = ('--exit', my @options = ('--exit',
'--extracmds', 'unset grid', qw(--unset grid),
'--terminal', 'dumb 100,40'); '--terminal', 'dumb 100,40');
unshift @options, @{$args{options}}; unshift @options, @{$args{options}};