#!/usr/bin/perl
#
# yaml_to_db.pm
# Copyright (C) 2011-2018 by John Heidemann <johnh@isi.edu>
#
# This program is distributed under terms of the GNU general
# public license, version 2. See the file COPYING
# in $dblib for details.
#
=head1 NAME
yaml_to_db - convert a subset of YAML into fsdb
=head1 SYNOPSIS
yaml_to_db <source.yaml
=head1 DESCRIPTION
Converts a I<very limited> subset of YAML into Fsdb format.
The input is YAML-format (I<not> fsdb).
The input is parsed as YAML,
assuming the file is an array of dictionary entries.
We extract the dictionary names and output this as an fsdb table.
We also flatten one level of lists into comma-separated values.
The output is tab-separated fsdb.
(Someday more general field separators should be supported.)
=head1 OPTIONS
=for comment
begin_standard_fsdb_options
This module also supports the standard fsdb options:
=over 4
=item B<-d>
Enable debugging output.
=item B<-i> or B<--input> InputSource
Read from InputSource, typically a file name, or C<-> for standard input,
or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects.
=item B<-o> or B<--output> OutputDestination
Write to OutputDestination, typically a file name, or C<-> for standard output,
or (if in Perl) a IO::Handle, Fsdb::IO or Fsdb::BoundedQueue objects.
=item B<--autorun> or B<--noautorun>
By default, programs process automatically,
but Fsdb::Filter objects in Perl do not run until you invoke
the run() method.
The C<--(no)autorun> option controls that behavior within Perl.
=item B<--help>
Show help.
=item B<--man>
Show full manual.
=back
=for comment
end_standard_fsdb_options
=head1 SAMPLE USAGE
=head2 Input:
- name: ACM
role: sponsor
alttext: ACM, the Association for Computing Machinery
image: logos/acm-small.jpg
link: https://www.acm.org/
date: 2016-01-01
- name: SIGCOMM
role: sponsor
alttext: SIGCOMM, ACM'S Special Interest Group on Communication
image: logos/sigcommlogo.png
link: http://sigcomm.org
date: 2016-01-02
- name: SIGMETRICS
role: sponsor
alttext: SIGMETRICS, ACM'S Special Interest Group on Performance Evaluation
image: logos/sigmetrics-small.png
link: http://www.sigmetrics.org
date: 2016-01-03
=head2 Command:
yaml_to_db <gnupod.yaml
=head2 Output:
#fsdb -F t alttext date image link name role
ACM, the Association for Computing Machinery 2016-01-01 logos/acm-small.jpg https://www.acm.org/ ACM sponsor
SIGCOMM, ACM'S Special Interest Group on Communication 2016-01-02 logos/sigcommlogo.png http://sigcomm.org SIGCOMM sponsor
SIGMETRICS, ACM'S Special Interest Group on Performance Evaluation 2016-01-03 logos/sigmetrics-small.png http://www.sigmetrics.org SIGMETRICS sponsor
# | yaml_to_db
=head1 SEE ALSO
L<Fsdb>.
=cut
# WARNING: This code is derived from yaml_to_db.pm; that is the master copy.
use Fsdb::Filter::yaml_to_db;
my $f = new Fsdb::Filter::yaml_to_db(@ARGV);
$f->setup_run_finish; # or could just --autorun
exit 0;
=head1 AUTHOR and COPYRIGHT
Copyright (C) 2011-2018 by John Heidemann <johnh@isi.edu>
This program is distributed under terms of the GNU general
public license, version 2. See the file COPYING
with the distribution for details.
=cut
1;