Armadito-Agent

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

		INSTALLMAN1DIR       => '$(PREFIX)\\share\\man\\man1',
		INSTALLSITEMAN1DIR   => '$(PREFIX)\\share\\man\\man1',
		INSTALLVENDORMAN1DIR => '$(PREFIX)\\share\\man\\man1',
		INSTALLMAN3DIR       => '$(PREFIX)\\share\\man\\man3',
		INSTALLSITEMAN3DIR   => '$(PREFIX)\\share\\man\\man3',
		INSTALLVENDORMAN3DIR => '$(PREFIX)\\share\\man\\man3',
		SYSCONFDIR           => '$(PREFIX)\\etc',
		DATADIR              => '$(PREFIX)\\share',
		LOCALSTATEDIR        => '$(PREFIX)\\var',
	);
}

sub setLinuxVariables {

	%Variables = (
		DESTDIR              => '',
		PREFIX               => '/usr/local',
		INSTALLSCRIPT        => '$(PREFIX)/bin',
		INSTALLSITESCRIPT    => '$(PREFIX)/bin',
		INSTALLVENDORSCRIPT  => '$(PREFIX)/bin',
		INSTALLLIB           => '$(DATADIR)/lib',
		INSTALLSITELIB       => '$(DATADIR)/lib',
		INSTALLVENDORLIB     => '$(DATADIR)/lib',
		INSTALLMAN1DIR       => '$(DESTDIR)$(PREFIX)/share/man/man1',
		INSTALLSITEMAN1DIR   => '$(DESTDIR)$(PREFIX)/share/man/man1',
		INSTALLVENDORMAN1DIR => '$(DESTDIR)$(PREFIX)/share/man/man1',
		INSTALLMAN3DIR       => '$(DESTDIR)$(PREFIX)/share/man/man3',
		INSTALLSITEMAN3DIR   => '$(DESTDIR)$(PREFIX)/share/man/man3',
		INSTALLVENDORMAN3DIR => '$(DESTDIR)$(PREFIX)/share/man/man3',
		SYSCONFDIR           => '$(DESTDIR)$(PREFIX)/etc/armadito-agent',
		DATADIR              => '$(DESTDIR)$(PREFIX)/share/armadito-agent',
		LOCALSTATEDIR        => '$(DESTDIR)$(PREFIX)/var/armadito-agent',
	);
}

sub overrideVariablesWithArgs {
	my ($self) = @_;

	foreach my $name ( keys %Variables ) {
		$Variables{$name} = $self->{ARGS}->{$name} if $self->{ARGS}->{$name};
	}
}

sub parseConstantDefinition {
	my ($constant_definition) = @_;

	if ( $constant_definition =~ /^\s*#/ ) {
		return "";
	}

	if ( $constant_definition !~ /^([A-Z0-9_]+) =/ ) {
		return "";
	}

	return $1;
}

sub updateConstants {
	my ($self) = @_;

	my @constants = split( /\n/, $self->SUPER::constants(@_) );

	foreach my $constant_definition (@constants) {
		my $constant = parseConstantDefinition($constant_definition);

		if ( $constant ne ""
			&& defined( $Variables{$constant} ) )
		{
			$constant_definition = "$constant = $Variables{$constant}";
		}
	}

	foreach my $constant (qw/SYSCONFDIR DATADIR LOCALSTATEDIR/) {
		push @constants, "$constant = $Variables{$constant}";
	}

	return join( "\n", @constants );
}

sub constants {
	my ($self) = @_;

	if ( $OSNAME eq "MSWin32" ) {
		setWin32Variables();
	}
	else {
		setLinuxVariables();
	}

	overrideVariablesWithArgs($self);

	return updateConstants($self);
}

sub install {
	my ($self) = @_;
	my $install = $self->SUPER::install(@_);

	$install =~ s/install :: pure_install doc_install/install :: pure_install config_install data_install/;
	$install =~ s/install :: all pure_install doc_install/install :: all pure_install config_install data_install/;
	$install =~ s/.*\.packlist \\\n//g;

	if ( $OSNAME eq "MSWin32" ) {
		$install .= getWin32Install();
	}
	else {
		$install .= getLinuxInstall();
	}

	$install =~ s/[ ]{4}/\t/msg;

	return $install;
}

sub getLinuxInstall {

	return '
config_install :
    install -d -m 755 $(SYSCONFDIR)
' . installLinuxConfFile("agent.cfg") . '
' . installLinuxConfFile("scheduler-cron.cfg") . '

data_install :
	install -d -m 755 $(DATADIR)
	install -d -m 775 $(LOCALSTATEDIR)';
}

sub getWin32Install {

	return '
config_install :
    if not exist "$(SYSCONFDIR)" mkdir "$(SYSCONFDIR)"
' . installWin32ConfFile("agent.cfg") . '
' . installWin32ConfFile("scheduler-win32native.cfg") . '

data_install :
	if not exist "$(DATADIR)" mkdir "$(DATADIR)"
	if not exist "$(INSTALLSCRIPT)" mkdir "$(INSTALLSCRIPT)"
	if exist "$(INSTALLSCRIPT)\\armadito-agent" @erase "$(INSTALLSCRIPT)\\armadito-agent"
	copy "bin\\armadito-agent" "$(INSTALLSCRIPT)\\armadito-agent"';
}

sub installWin32ConfFile {
	my ($conf_file) = @_;

	return '
	if exist "$(SYSCONFDIR)\\' . $conf_file . '" ( \
	    copy "etc\\' . $conf_file . '" "$(SYSCONFDIR)\\' . $conf_file . '.new"; \
	) else ( \
	    copy "etc\\' . $conf_file . '" "$(SYSCONFDIR)\\' . $conf_file . '"; \
	)';
}

sub installLinuxConfFile {
	my ($conf_file) = @_;

	return '
	if [ -f $(SYSCONFDIR)/' . $conf_file . ' ]; then \
	    install -m 644 etc/' . $conf_file . ' $(SYSCONFDIR)/' . $conf_file . '.new; \
	else \
	    install -m 644 etc/' . $conf_file . ' $(SYSCONFDIR)/' . $conf_file . '; \
	fi';
}

# ensure binaries get modified to use configured directories (on Unix only)
sub installbin {
	my ($self) = @_;
	my $installbin = $self->SUPER::installbin(@_);

	return $installbin if $OSNAME eq 'MSWin32';

	$installbin =~ s|\t\$\(FIXIN\) (.*)\n|\t\$(FIXIN) $1\n\t\$(FINALIZE) $1\n|g;

	$installbin .= <<'EOF';
FINALIZE = $(ABSPERLRUN) -pi \
    -e 's|use lib .*|use lib "$(DATADIR)/lib";|;' \
    -e 's|confdir => .*|confdir => "$(SYSCONFDIR)",|;' \
    -e 's|datadir => .*|datadir => "$(DATADIR)",|;' \
    -e 's|libdir  => .*|libdir  => "$(DATADIR)/lib",|;' \
    -e 's|vardir  => .*|vardir  => "$(LOCALSTATEDIR)",|' \
    --
EOF
	return $installbin;
}



( run in 1.002 second using v1.01-cache-2.11-cpan-ceb78f64989 )