Merge commit 'origin/master' into HEAD
[urisagit/Stem.git] / BuildStem.pm
CommitLineData
8e25eb98 1package BuildStem;
4536f655 2
3use strict;
8e25eb98 4use warnings;
4536f655 5
4536f655 6use Config;
8e25eb98 7use File::Basename;
8use File::Spec;
9use IO::File;
4536f655 10
8e25eb98 11use Module::Build;
4536f655 12
8e25eb98 13use vars qw(@ISA);
14@ISA = qw(Module::Build);
4536f655 15
4536f655 16
17sub process_script_files {
4536f655 18 my ( $self ) = @_ ;
8e25eb98 19 my $files = $self->find_script_files();
20 return unless keys %$files;
21
22 my $script_dir = File::Spec->catdir($self->blib, 'script');
23 my $demo_dir = File::Spec->catdir($self->blib, 'demo');
24 File::Path::mkpath( $script_dir );
25 File::Path::mkpath( $demo_dir );
6b34fa66 26 $self->add_to_cleanup($demo_dir);
8e25eb98 27
28 foreach my $file (keys %$files) {
29 my $dest_dir = $file =~ /_demo$/ ? $demo_dir : $script_dir ;
30 my $result = $self->copy_if_modified($file, $dest_dir, 'flatten') or next;
31 $self->fix_shebang_line($result) if $self->is_unixish();
32 $self->make_executable($result);
015117d3 33 my $demo_run_dir = File::Spec->catdir($self->base_dir(), 'demo');
8e25eb98 34 if ( $result =~ /(?:run_stem$)|(?:_demo$)/ ) {
015117d3 35 my $result2 = $self->copy_if_modified($result, $demo_run_dir, 'flatten') or next;
8e25eb98 36 $self->add_to_cleanup($result2);
4536f655 37 }
38 }
8e25eb98 39 return 1;
4536f655 40}
41
8e25eb98 42sub process_conf_files {
4536f655 43 my ( $self ) = @_ ;
8e25eb98 44 my $files = $self->_find_file_by_type('stem','conf');
45 return unless keys %$files;
4536f655 46
8e25eb98 47 my $conf_dir = File::Spec->catdir($self->blib, 'conf');
48 File::Path::mkpath( $conf_dir );
4536f655 49
8e25eb98 50 foreach my $file (keys %$files) {
51 my $result = $self->copy_if_modified($file, $conf_dir, 'flatten') or next;
52 $self->fix_shebang_line($result) if $self->is_unixish();
4536f655 53 }
8e25eb98 54 return 1;
4536f655 55}
56
8e25eb98 57sub find_binary {
58 my ( $self, $prog ) = @_ ;
59 if ( $self->do_system( "which $prog >/dev/null" ) ) {
60 return `which $prog` ;
4536f655 61 }
4536f655 62 return;
63}
64
4536f655 65
8e25eb98 661;