Alien-Electron
view release on metacpan or search on metacpan
ElectronModuleBuild.pm view on Meta::CPAN
package ElectronModuleBuild;
use strict;
use File::Spec::Functions qw(splitpath);
use IO::File;
use IO::Uncompress::Unzip qw($UnzipError);
use File::Path qw(mkpath);
use parent 'Module::Build';
my $electron_version = '2.0.17';
my $electron_archive = 'electron.zip';
sub ACTION_build {
my $self = shift;
$self->download_zip_file();
$self->extract_zip_file();
$self->SUPER::ACTION_build;
}
sub ACTION_install {
my $self = shift;
if ($^O =~ /darwin/i) {
## ExtUtils::Install appears to break Electron.App - maybe doesn't copy some meta-data or something?
$self->depends_on('build'); ## So that the parent class ACTION_install won't invoke it again
print "WARNING: Due to Mac OS X lameness, we are removing the electron binaries from the blib directory before install. You will have to to re-build if you want to use this local blib.\n";
system("rm -rf blib/lib/auto/share/dist/Alien-Electron/");
$self->SUPER::ACTION_install;
my $share_install_dir = $self->install_map->{'blib/lib'} . "/auto/share/dist/Alien-Electron/";
system('mkdir', '-p', $share_install_dir);
system('unzip', '-oqq', $electron_archive, '-d', $share_install_dir);
} else {
$self->SUPER::ACTION_install;
}
}
sub download_zip_file {
my $self = shift;
my ($os, $arch);
if ($^O =~ /linux/i) {
$os = 'linux';
$arch = length(pack("P", 0)) == 8 ? 'x64' : 'ia32';
} elsif ($^O =~ /darwin/i) {
$os = 'darwin';
$arch = 'x64';
} elsif ($^O =~ /mswin/i) {
$os = 'win32';
$arch = length(pack("P", 0)) == 8 ? 'x64' : 'ia32';
} else {
die "Your platform is currently not supported by Electron";
}
my $electron_zipfile_url = "https://github.com/atom/electron/releases/download/v$electron_version/electron-v$electron_version-$os-$arch.zip";
if (-e $electron_archive) {
print "$electron_archive already exists, skipping download\n";
} else {
print "Downloading $electron_zipfile_url (be patient)\n";
if (system(qw/wget -c -O/, "$electron_archive.partial", $electron_zipfile_url)) {
die "wget download started but failed, aborting" if -e "$electron_archive.partial";
if (system(qw/curl --progress-bar -L -C - -o/, "$electron_archive.partial", $electron_zipfile_url)) {
die "curl download started but failed, aborting" if -e "$electron_archive.partial";
die "unable to find download program, please install wget or curl";
}
}
rename("$electron_archive.partial", $electron_archive) || die "unable to rename $electron_archive.partial to $electron_archive ($!)";
}
}
( run in 1.226 second using v1.01-cache-2.11-cpan-62a16548d74 )