Skip to content

Commit

Permalink
Add detection for Redhat and its friends and relations
Browse files Browse the repository at this point in the history
  • Loading branch information
DrHyde committed May 19, 2024
1 parent d770c28 commit 9d976e6
Show file tree
Hide file tree
Showing 8 changed files with 169 additions and 14 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/redhat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ jobs:
yes|perl -MCPAN -e 'install Expect'
export PERL5OPT=-Mlocal::lib
/usr/local/bin/cpanm --installdeps .
perl makefile-expect-driver.pl Linux Unix OSFeatures::POSIXShellRedirection HWCapabilities::Int64
perl makefile-expect-driver.pl Linux Unix OSFeatures::POSIXShellRedirection HWCapabilities::Int64 Linux::Redhat Linux::RHEL
make test
5 changes: 5 additions & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,8 @@ lib/Devel/AssertOS/Linux/SUSE.pm
t/etc-os-release/sles
t/suse.t
lib/Devel/AssertOS/Linux/SLES.pm
lib/Devel/AssertOS/Linux/Centos.pm
lib/Devel/AssertOS/Linux/Fedora.pm
lib/Devel/AssertOS/Linux/RHEL.pm
lib/Devel/AssertOS/Linux/Redhat.pm
t/redhat.t
35 changes: 35 additions & 0 deletions lib/Devel/AssertOS/Linux/Centos.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package Devel::AssertOS::Linux::Centos;

use Devel::CheckOS;
use strict;
use warnings;

use Devel::CheckOS::Helpers::LinuxOSrelease 'distributor_id';

no warnings 'redefine';

our $VERSION = '1.0';

sub os_is {
my $id = distributor_id;

Devel::CheckOS::os_is('Linux') &&
defined($id) &&
$id eq 'centos';
}

sub expn { "The operating system is some version of Centos" }

Devel::CheckOS::die_unsupported() unless ( os_is() );

=head1 COPYRIGHT and LICENCE
Copyright 2024 David Cantrell
This software is free-as-in-speech software, and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. It's up to you which one you use. The full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.
=cut

1;


35 changes: 35 additions & 0 deletions lib/Devel/AssertOS/Linux/Fedora.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package Devel::AssertOS::Linux::Fedora;

use Devel::CheckOS;
use strict;
use warnings;

use Devel::CheckOS::Helpers::LinuxOSrelease 'distributor_id';

no warnings 'redefine';

our $VERSION = '1.0';

sub os_is {
my $id = distributor_id;

Devel::CheckOS::os_is('Linux') &&
defined($id) &&
$id eq 'fedora';
}

sub expn { "The operating system is some version of Fedora" }

Devel::CheckOS::die_unsupported() unless ( os_is() );

=head1 COPYRIGHT and LICENCE
Copyright 2024 David Cantrell
This software is free-as-in-speech software, and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. It's up to you which one you use. The full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.
=cut

1;


35 changes: 35 additions & 0 deletions lib/Devel/AssertOS/Linux/RHEL.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package Devel::AssertOS::Linux::RHEL;

use Devel::CheckOS;
use strict;
use warnings;

use Devel::CheckOS::Helpers::LinuxOSrelease 'distributor_id';

no warnings 'redefine';

our $VERSION = '1.0';

sub os_is {
my $id = distributor_id;

Devel::CheckOS::os_is('Linux') &&
defined($id) &&
$id eq 'rhel';
}

sub expn { "The operating system is some version of RHEL" }

Devel::CheckOS::die_unsupported() unless ( os_is() );

=head1 COPYRIGHT and LICENCE
Copyright 2024 David Cantrell
This software is free-as-in-speech software, and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. It's up to you which one you use. The full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.
=cut

1;


31 changes: 31 additions & 0 deletions lib/Devel/AssertOS/Linux/Redhat.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package Devel::AssertOS::Linux::Redhat;

use Devel::CheckOS;
use strict;
use warnings;

use Devel::CheckOS::Helpers::LinuxOSrelease 'distributor_id';

no warnings 'redefine';

our $VERSION = '1.0';

sub matches { map { "Linux::$_" } qw(Centos Fedora RHEL) }

sub os_is { Devel::CheckOS::os_is(matches()) }

sub expn { "The operating system is some derivative of Redhat - which includes RHEL, Centos, and Fedora" }

Devel::CheckOS::die_unsupported() unless ( os_is() );

=head1 COPYRIGHT and LICENCE
Copyright 2024 David Cantrell
This software is free-as-in-speech software, and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. It's up to you which one you use. The full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.
=cut

1;


13 changes: 0 additions & 13 deletions t/etc-os-release/centos-stream

This file was deleted.

27 changes: 27 additions & 0 deletions t/redhat.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
use warnings;
use strict;
use Test::More;
use Devel::CheckOS qw(os_is os_isnt);
use Devel::CheckOS::Helpers::LinuxOSrelease 'distributor_id';

local $^O = 'linux';

Devel::CheckOS::Helpers::LinuxOSrelease::_set_file('t/etc-os-release/rhel');
ok(os_is('Linux::RHEL'), "detected RHEL");
ok(os_is('Linux::Redhat'), "... and also as Redhat");
ok(os_isnt('Linux::Fedora'), "... but not as Fedora");
ok(os_isnt('Linux::Centos'), "... or Centos");

Devel::CheckOS::Helpers::LinuxOSrelease::_set_file('t/etc-os-release/fedora');
ok(os_is('Linux::Fedora'), "detected Fedora");
ok(os_is('Linux::Redhat'), "... and also as Redhat");
ok(os_isnt('Linux::RHEL'), "... but not as RHEL");
ok(os_isnt('Linux::Centos'), "... or Centos");

Devel::CheckOS::Helpers::LinuxOSrelease::_set_file('t/etc-os-release/centos');
ok(os_is('Linux::Centos'), "detected Centos");
ok(os_is('Linux::Redhat'), "... and also as Redhat");
ok(os_isnt('Linux::Fedora'), "... but not as Fedora");
ok(os_isnt('Linux::RHEL'), "... or RHEL");

done_testing;

0 comments on commit 9d976e6

Please sign in to comment.