-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAnyPdfPlugin_installer
executable file
·154 lines (124 loc) · 4.19 KB
/
AnyPdfPlugin_installer
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!perl
#
# Install script for AnyPdfPlugin
#
# Copyright (C) 2004-2007 Foswiki Contributors. All Rights Reserved.
# Foswiki Contributors are listed in the AUTHORS file in the root of
# this distribution. NOTE: Please extend that file, not this notice.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version. For
# more details read LICENSE in the root of this distribution.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# As per the GPL, removal of this notice is prohibited.
#
# Author: Crawford Currie http://c-dot.co.uk
#
# NOTE TO THE DEVELOPER: THIS FILE IS GENERATED AUTOMATICALLY
# BY THE BUILD PROCESS DO NOT EDIT IT - IT WILL BE OVERWRITTEN
#
use strict;
use warnings;
require 5.008;
use File::Spec;
use Cwd;
=pod
---+ AnyPdfPlugin_installer
This is the installer script. The basic function of this script is to
locate an archive and unpack it.
It will also check the dependencies listed in DEPENDENCIES and assist
the user in installing any that are missing. The script also automatically
maintains the revision histories of any files that are being installed by the
package but already have ,v files on disc (indicating that they are
revision controlled).
The script also functions as an *uninstaller* by passing the parameter
=uninstall= on the command-line. Note that uninstallation does *not* revert
the history of any topic changed during the installation.
The script allows the definition of PREINSTALL and POSTINSTALL scripts.
These scripts can be used for example to modify the configuration during
installation, using the functions described below.
Refer to the documentation of =configure=
=cut
# This is all done in package Foswiki so that reading LocalSite.cfg and Foswiki.cfg
# will put the config vars into the right namespace.
package Foswiki;
# The root of package URLs
my $PACKAGES_URL = 'http://foswiki.org/pub/Extensions';
# Extract MANIFEST and DEPENDENCIES from the __DATA__
undef $/;
my @DATA = split( /<<<< (.*?) >>>>\s*\n/, <DATA> );
shift @DATA; # remove empty first element
# Establish where we are
my @path = ( 'tools', 'extender.pl' );
my $wd = Cwd::cwd();
$wd =~ /^(.*)$/; # untaint
unshift( @path, $1 ) if $1;
my $script = File::Spec->catfile(@path);
unless ( my $return = do $script ) {
my $message = <<MESSAGE;
************************************************************
Could not load $script
Change to the root directory of your Foswiki installation
before running this installer.
MESSAGE
if ($@) {
$message .= "There was a compile error: $@\n";
}
elsif ( defined $return ) {
$message .= "There was a file error: $!\n";
}
else {
$message .= "An unspecified error occurred\n";
}
# Try again, using open. This cures some uncooperative platforms.
if ( open( F, '<', $script ) ) {
local $/;
my $data = <F>;
close(F);
$data =~ /^(.*)$/s; # untaint
eval $1;
if ($@) {
$message .= "Error when trying to eval the file content: $@\n";
}
else {
print STDERR
"'do $script failed, but install was able to proceed: $message";
undef $message;
}
}
else {
$message .= "Could not open file using open() either: $!\n";
}
die $message if $message;
}
sub preuninstall {
# # No PREUNINSTALL script;
}
sub postuninstall {
# # No POSTUNINSTALL script;
}
sub preinstall {
# # No PREINSTALL script;
}
sub postinstall {
# # No POSTINSTALL script;
}
Foswiki::Extender::install( $PACKAGES_URL, 'AnyPdfPlugin', 'AnyPdfPlugin',
@DATA );
1;
# MANIFEST and DEPENDENCIES are done this way
# to make it easy to extract them from this script.
__DATA__
<<<< MANIFEST >>>>
data/System/AnyPdfPlugin.txt,0644,
lib/Foswiki/Plugins/AnyPdfPlugin.pm,0644,
lib/Foswiki/Plugins/AnyPdfPlugin/Config.spec,0644,
templates/view.pdf.tmpl,0644,
<<<< DEPENDENCIES >>>>
File::Temp,>0,1,cpan,Required