summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_add/pod/OpenBSD::PackingElement.pod
blob: 0324821c721457d45b08a14acfef3041f48796b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
$OpenBSD: OpenBSD::PackingElement.pod,v 1.1 2005/02/28 13:08:41 espie Exp $

=head1 NAME

OpenBSD::PackingElement - C<pkg_add(1)> packing-elements object hierarchy

=head1 SYNOPSIS

    package OpenBSD::PackingElement;
    sub method
    {
    }

    package OpenBSD::PackingElement::Depend;
    sub method
    {
    	my ($self, $args) = @_;
	# do something
    }

    package main;
    use OpenBSD::PackingList;

    $plist = OpenBSD::PackingList->fromfile($filename);
    $plist->visit('method', @args);

=head1 DESCRIPTION

C<OpenBSD::PackingElement> is the base class for all elements in a 
packing-list (see L<OpenBSD::PackingList>).

Manipulation of packing-lists mostly occurs through visitor patterns
such as C<OpenBSD::PackingList::visit>: client code defines a method for
each relevant class in the hierarchy and calls C<$plist-E<gt>visit('method')>
to perform the processing.

=over 4

=item ::Meta

base class for all meta information that can be reordered at will.

=over 4

=item ::Unique

meta information with uniqueness properties.

=over 4

=item ::ExtraInfo

=item ::Name

=back

=item ::Depend

all dependency information.

=over 4

=item ::PkgDep

deprecated

=item ::NewDepend

deprecated

=item ::LibDepend

deprecated

=item ::Wantlib

=item ::Dependency

=back

=item ::Conflict

=over 4

=item ::PkgConflict

deprecated

=item ::Conflict

=back

=back

=item ::Annotation

=item ::Object

somewhat concrete elements in packing-lists.

=over 4

=item ::FileObject

objects with a filename.

=over 4

=item ::FileBase

abstract class for files.

=item ::DirlikeObject

abstract class for directories.

=back

=item ::Action

stuff that performs some action during addition/removal of package.

=item ::State

annotation-like stuff that can't be easily moved around because it influences
surrounding objects.

=back

=back

=head1 CAVEATS

Some aspects of this API are likely to change in the future, although the
basic class hierarchy is now more or less worked out.