source: trunk/LATMOS-Accounts/bin/la-query @ 2241

Last change on this file since 2241 was 2241, checked in by nanardon, 5 years ago

Add --fmt option to list

  • Property svn:executable set to *
  • Property svn:keywords set to Id Rev
File size: 3.0 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use LATMOS::Accounts;
6use Getopt::Long;
7use Pod::Usage;
8use LATMOS::Accounts::I18N;
9use LATMOS::Accounts::Cli;
10use LATMOS::Accounts::Cli::Context;
11
12=head1 NAME
13
14    la-query - Tools to query base in LATMOS::Accounts system
15
16=head1 SYNOPSIS
17
18    la-query [options] [obj_id]
19
20=head1 DESCRIPTION
21
22[obj_id] : If present, all set attributes (rw) will be displayed for that obj_id.
23        If none is given, all obj_ids will be printed.
24
25For the default object_type (user), obj_id = login.
26
27Example : la-query lambda
28
29=cut
30
31Getopt::Long::Configure("pass_through");
32GetOptions(
33    'c|config=s'        => \my $config,
34    'b|base=s'          => \my $base,
35    'o|object=s'        => \my $otype,
36    'no-unexp|wo-unexp' => \my $nounexp,
37    'with-unexp'        => \my $unexp,
38    'help'              => sub { pod2usage(0) },
39) or pod2usage();
40
41$otype ||= 'user';
42
43=head1 OPTIONS
44
45=over 4
46
47=item -c|--config configdir
48
49Use this configuration directory instead of the default one.
50
51=item -b|--base basename
52
53Query this specific base instead of the default one.
54
55=item -o|object object_type
56
57Query will be performed on this object. Default is the 'User' object.
58
59=item --with-unexp
60
61Take into account all objects (even non propagated ones, with attribute
62'exported'=0) (default)
63
64=item --wo-unexp
65
66Take into account only propagated objects (attribute 'exported'=1)
67
68=item -e|--empty
69
70(Only if obj_id is specified) Include also unset attributes.
71
72=item --ro
73
74(Only if obj_id is specified) Include also read-only attributes as comments.
75
76=item --fmt format
77
78Specify a format of output.
79
80If NOT present and "obj_id" is specified, all non-empty writable attributes will be printed (modified by -e and -ro).
81If NOT present and "obj_id" is NOT specified, only the list of "obj_id" will be printed.
82
83The "format" string may query tags in form:
84
85    %{ATTRIBUTE:printflike}
86
87Where ATTRIBUTE is the name of an attribute and the optional
88C<:printflike> is a printf like string to print the attribute content (without
89the C<%>).
90
91Examples for users:
92
93    --fmt "Name %{sn}, First Name %{givenName}\n"
94
95    --fmt "Name %{sn:20s}, First Name %{givenName}\n"
96
97=item --filefmt format-file
98
99"format-file" is a text file with the same strings as "--fmt" option, WITHOUT quotes (").
100
101It can be on more than one line, but all lines will be concatenated as one.
102Don't forget the "\n" if you really want seperate lines.
103
104Example of format-file:
105
106Name: %{sn}, First Name: %{givenName}\n
107     Department : %{department}\n
108
109Note : --fmt and --filefmt can be used together, and will be concatenated (the "fmt" string first, then what is in the "format-file").
110
111=back
112
113=cut
114
115my $LA = LATMOS::Accounts->new($config, noacl => 1);
116my $labase = $LA->base($base);
117$labase && $labase->load or die l("Cannot load base %s\n", $base);
118
119$labase->unexported($nounexp ? 0 : 1);
120
121my $Env = LATMOS::Accounts::Cli->new(
122    Context => LATMOS::Accounts::Cli::Context->new(
123        base => $labase,
124    ),
125);
126
127if (@ARGV) {
128    $Env->run('query', '-o', $otype, @ARGV);
129} else {
130    $Env->run('ls', $otype);
131}
Note: See TracBrowser for help on using the repository browser.