1 # This module is part of debbugs, and
2 # is released under the terms of the GPL version 2, or any later
3 # version (at your option). See the file README and COPYING for more
5 # Copyright 2018 by Don Armstrong <don@donarmstrong.com>.
7 package Debbugs::Version;
11 Debbugs::Version -- OO interface to Version
16 Debbugs::Version->new(schema => $s,binaries => [qw(foo)],sources => [qw(bar)]);
27 use namespace::autoclean;
29 use Debbugs::Config qw(:config);
30 use Debbugs::Collection::Package;
34 extends 'Debbugs::OOBase';
36 state $strong_severities =
37 {map {($_,1)} @{$config{strong_severities}}};
39 has version => (is => 'ro', isa => 'Str',
41 builder => '_build_version',
42 predicate => '_has_version',
46 confess("Subclass must define type");
49 has package => (is => 'bare',
50 isa => 'Debbugs::Package',
52 builder => '_build_package',
55 around BUILDARGS => sub {
59 if (@_==1 and ref($_[0]) eq 'HASH') {
64 carp("No schema") unless exists $args{schema};
65 if (exists $args{package} and
66 not blessed($args{package})) {
67 # OK, need a package Collection
68 my $pkgc = $args{package_collection} //
69 Debbugs::Collection::Package->
70 new(exists $args{schema}?(schema => $args{schema}):());
72 $pkgc->universe->get_or_create($args{package});
74 return $class->$orig(%args);
80 return Debbugs::Package->new(package => '(unknown)',
83 package_collection => $self->package_collection,
84 $self->has_schema?(schema => $self->schema):(),
89 has valid => (is => 'ro',
95 has 'package_collection' => (is => 'ro',
96 isa => 'Debbugs::Collection::Package',
97 builder => '_build_package_collection',
100 sub _build_package_collection {
102 return Debbugs::Collection::Package->new($self->schema_arg)
106 __PACKAGE__->meta->make_immutable;
113 # indent-tabs-mode: nil
114 # cperl-indent-level: 4