Blame lib/Perl/OSType.pm

Packit Service fe88c8
use strict;
Packit Service fe88c8
use warnings;
Packit Service fe88c8
Packit Service fe88c8
package Perl::OSType;
Packit Service fe88c8
# ABSTRACT: Map Perl operating system names to generic types
Packit Service fe88c8
Packit Service fe88c8
our $VERSION = '1.010';
Packit Service fe88c8
Packit Service fe88c8
require Exporter;
Packit Service fe88c8
our @ISA = qw(Exporter);
Packit Service fe88c8
Packit Service fe88c8
our %EXPORT_TAGS = ( all => [qw( os_type is_os_type )] );
Packit Service fe88c8
Packit Service fe88c8
our @EXPORT_OK = @{ $EXPORT_TAGS{all} };
Packit Service fe88c8
Packit Service fe88c8
# originally taken from Module::Build by Ken Williams et al.
Packit Service fe88c8
my %OSTYPES = qw(
Packit Service fe88c8
  aix         Unix
Packit Service fe88c8
  bsdos       Unix
Packit Service fe88c8
  beos        Unix
Packit Service fe88c8
  bitrig      Unix
Packit Service fe88c8
  dgux        Unix
Packit Service fe88c8
  dragonfly   Unix
Packit Service fe88c8
  dynixptx    Unix
Packit Service fe88c8
  freebsd     Unix
Packit Service fe88c8
  linux       Unix
Packit Service fe88c8
  haiku       Unix
Packit Service fe88c8
  hpux        Unix
Packit Service fe88c8
  iphoneos    Unix
Packit Service fe88c8
  irix        Unix
Packit Service fe88c8
  darwin      Unix
Packit Service fe88c8
  machten     Unix
Packit Service fe88c8
  midnightbsd Unix
Packit Service fe88c8
  minix       Unix
Packit Service fe88c8
  mirbsd      Unix
Packit Service fe88c8
  next        Unix
Packit Service fe88c8
  openbsd     Unix
Packit Service fe88c8
  netbsd      Unix
Packit Service fe88c8
  dec_osf     Unix
Packit Service fe88c8
  nto         Unix
Packit Service fe88c8
  svr4        Unix
Packit Service fe88c8
  svr5        Unix
Packit Service fe88c8
  sco         Unix
Packit Service fe88c8
  sco_sv      Unix
Packit Service fe88c8
  unicos      Unix
Packit Service fe88c8
  unicosmk    Unix
Packit Service fe88c8
  solaris     Unix
Packit Service fe88c8
  sunos       Unix
Packit Service fe88c8
  cygwin      Unix
Packit Service fe88c8
  msys        Unix
Packit Service fe88c8
  os2         Unix
Packit Service fe88c8
  interix     Unix
Packit Service fe88c8
  gnu         Unix
Packit Service fe88c8
  gnukfreebsd Unix
Packit Service fe88c8
  nto         Unix
Packit Service fe88c8
  qnx         Unix
Packit Service fe88c8
  android     Unix
Packit Service fe88c8
Packit Service fe88c8
  dos         Windows
Packit Service fe88c8
  MSWin32     Windows
Packit Service fe88c8
Packit Service fe88c8
  os390       EBCDIC
Packit Service fe88c8
  os400       EBCDIC
Packit Service fe88c8
  posix-bc    EBCDIC
Packit Service fe88c8
  vmesa       EBCDIC
Packit Service fe88c8
Packit Service fe88c8
  MacOS       MacOS
Packit Service fe88c8
  VMS         VMS
Packit Service fe88c8
  vos         VOS
Packit Service fe88c8
  riscos      RiscOS
Packit Service fe88c8
  amigaos     Amiga
Packit Service fe88c8
  mpeix       MPEiX
Packit Service fe88c8
);
Packit Service fe88c8
Packit Service fe88c8
sub os_type {
Packit Service fe88c8
    my ($os) = @_;
Packit Service fe88c8
    $os = $^O unless defined $os;
Packit Service fe88c8
    return $OSTYPES{$os} || q{};
Packit Service fe88c8
}
Packit Service fe88c8
Packit Service fe88c8
sub is_os_type {
Packit Service fe88c8
    my ( $type, $os ) = @_;
Packit Service fe88c8
    return unless $type;
Packit Service fe88c8
    $os = $^O unless defined $os;
Packit Service fe88c8
    return os_type($os) eq $type;
Packit Service fe88c8
}
Packit Service fe88c8
Packit Service fe88c8
1;
Packit Service fe88c8
Packit Service fe88c8
=pod
Packit Service fe88c8
Packit Service fe88c8
=encoding UTF-8
Packit Service fe88c8
Packit Service fe88c8
=head1 NAME
Packit Service fe88c8
Packit Service fe88c8
Perl::OSType - Map Perl operating system names to generic types
Packit Service fe88c8
Packit Service fe88c8
=head1 VERSION
Packit Service fe88c8
Packit Service fe88c8
version 1.010
Packit Service fe88c8
Packit Service fe88c8
=head1 SYNOPSIS
Packit Service fe88c8
Packit Service fe88c8
  use Perl::OSType ':all';
Packit Service fe88c8
Packit Service fe88c8
  $current_type = os_type();
Packit Service fe88c8
  $other_type = os_type('dragonfly'); # gives 'Unix'
Packit Service fe88c8
Packit Service fe88c8
=head1 DESCRIPTION
Packit Service fe88c8
Packit Service c08cc3
=for :stopwords Unix Win32 Windows
Packit Service c08cc3
Packit Service fe88c8
Modules that provide OS-specific behaviors often need to know if
Packit Service fe88c8
the current operating system matches a more generic type of
Packit Service fe88c8
operating systems. For example, 'linux' is a type of 'Unix' operating system
Packit Service fe88c8
and so is 'freebsd'.
Packit Service fe88c8
Packit Service fe88c8
This module provides a mapping between an operating system name as given by
Packit Service fe88c8
C<$^O> and a more generic type.  The initial version is based on the OS type
Packit Service fe88c8
mappings provided in L<Module::Build> and L<ExtUtils::CBuilder>.  (Thus,
Packit Service fe88c8
Microsoft operating systems are given the type 'Windows' rather than 'Win32'.)
Packit Service fe88c8
Packit Service fe88c8
=head1 USAGE
Packit Service fe88c8
Packit Service fe88c8
No functions are exported by default. The export tag ":all" will export
Packit Service fe88c8
all functions listed below.
Packit Service fe88c8
Packit Service fe88c8
=head2 os_type()
Packit Service fe88c8
Packit Service fe88c8
  $os_type = os_type();
Packit Service fe88c8
  $os_type = os_type('MSWin32');
Packit Service fe88c8
Packit Service fe88c8
Returns a single, generic OS type for a given operating system name.  With no
Packit Service fe88c8
arguments, returns the OS type for the current value of C<$^O>.  If the
Packit Service fe88c8
operating system is not recognized, the function will return the empty string.
Packit Service fe88c8
Packit Service fe88c8
=head2 is_os_type()
Packit Service fe88c8
Packit Service fe88c8
  $is_windows = is_os_type('Windows');
Packit Service fe88c8
  $is_unix    = is_os_type('Unix', 'dragonfly');
Packit Service fe88c8
Packit Service fe88c8
Given an OS type and OS name, returns true or false if the OS name is of the
Packit Service fe88c8
given type.  As with C<os_type>, it will use the current operating system as a
Packit Service fe88c8
default if no OS name is provided.
Packit Service fe88c8
Packit Service fe88c8
=head1 SEE ALSO
Packit Service fe88c8
Packit Service fe88c8
=over 4
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
L<Devel::CheckOS>
Packit Service fe88c8
Packit Service fe88c8
=back
Packit Service fe88c8
Packit Service fe88c8
=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
Packit Service fe88c8
Packit Service fe88c8
=head1 SUPPORT
Packit Service fe88c8
Packit Service fe88c8
=head2 Bugs / Feature Requests
Packit Service fe88c8
Packit Service fe88c8
Please report any bugs or feature requests through the issue tracker
Packit Service fe88c8
at L<https://github.com/Perl-Toolchain-Gang/Perl-OSType/issues>.
Packit Service fe88c8
You will be notified automatically of any progress on your issue.
Packit Service fe88c8
Packit Service fe88c8
=head2 Source Code
Packit Service fe88c8
Packit Service fe88c8
This is open source software.  The code repository is available for
Packit Service fe88c8
public review and contribution under the terms of the license.
Packit Service fe88c8
Packit Service fe88c8
L<https://github.com/Perl-Toolchain-Gang/Perl-OSType>
Packit Service fe88c8
Packit Service fe88c8
  git clone https://github.com/Perl-Toolchain-Gang/Perl-OSType.git
Packit Service fe88c8
Packit Service fe88c8
=head1 AUTHOR
Packit Service fe88c8
Packit Service fe88c8
David Golden <dagolden@cpan.org>
Packit Service fe88c8
Packit Service fe88c8
=head1 CONTRIBUTORS
Packit Service fe88c8
Packit Service fe88c8
=for stopwords Chris 'BinGOs' Williams David Golden Graham Ollis Jonas B. Nielsen Owain G. Ainsworth Paul Green Piotr Roszatycki
Packit Service fe88c8
Packit Service fe88c8
=over 4
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
David Golden <xdg@xdg.me>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Graham Ollis <plicease@cpan.org>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Jonas B. Nielsen <jonasbn@hoarfrost.local>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Owain G. Ainsworth <oga@nicotinebsd.org>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Paul Green <Paul.Green@stratus.com>
Packit Service fe88c8
Packit Service fe88c8
=item *
Packit Service fe88c8
Packit Service fe88c8
Piotr Roszatycki <piotr.roszatycki@gmail.com>
Packit Service fe88c8
Packit Service fe88c8
=back
Packit Service fe88c8
Packit Service fe88c8
=head1 COPYRIGHT AND LICENSE
Packit Service fe88c8
Packit Service fe88c8
This software is copyright (c) 2016 by David Golden.
Packit Service fe88c8
Packit Service fe88c8
This is free software; you can redistribute it and/or modify it under
Packit Service fe88c8
the same terms as the Perl 5 programming language system itself.
Packit Service fe88c8
Packit Service fe88c8
=cut
Packit Service fe88c8
Packit Service fe88c8
__END__
Packit Service fe88c8
Packit Service fe88c8
Packit Service fe88c8
# vim: ts=4 sts=4 sw=4 et: