From: Chris W. <la...@us...> - 2005-09-23 03:16:34
|
Update of /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17793 Modified Files: Package.pm Log Message: OIN-172: add README about where configuration is actually stored, and REALLY eliminate confusing by deleting the config files from the package directory Index: Package.pm =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/Package.pm,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** Package.pm 2 Apr 2005 23:42:21 -0000 1.59 --- Package.pm 23 Sep 2005 03:16:24 -0000 1.60 *************** *** 367,371 **** $installed_package->installed_date( scalar( localtime ) ); $installed_package->_install_html_and_widget_files_to_website; ! $installed_package->copy_configuration_to_website(); $log->is_info && $log->info( "Copied package files to website ok" ); --- 367,372 ---- $installed_package->installed_date( scalar( localtime ) ); $installed_package->_install_html_and_widget_files_to_website; ! my @conf_paths = $installed_package->copy_configuration_to_website(); ! $log->is_info && $log->info( "Copied package files to website ok" ); *************** *** 377,383 **** --- 378,393 ---- undef $tmp_package; chdir( $pwd ); + + # OIN-172: remove all files from pkg/foo-x.xx/conf and put + # README there (but only after everything else works ok) + $installed_package->_remove_package_conf_files( @conf_paths ); + return $installed_package; } + # copies $WEBSITE_DIR/pkg/foo-x.xx/conf/* -> $WEBSITE_DIR/conf/foo/* + # --> if dest file already exists and MD5 is different, we copy it + # to $WEBSITE_DIR/conf/foo/updates/* + sub copy_configuration_to_website { my ( $self ) = @_; *************** *** 393,396 **** --- 403,407 ---- my @to_checksum = (); my %checksums = $self->_read_conf_checksums( $dest_conf_dir ); + my @full_src_paths = (); FILE: foreach my $src_base ( @conf_files ) { *************** *** 412,417 **** --- 423,472 ---- push @to_checksum, $filename; } + push @full_src_paths, $src_path; } $self->_write_conf_checksums( $dest_conf_dir, @to_checksum ); + return @full_src_paths; + } + + sub _remove_package_conf_files { + my ( $self, @conf_paths ) = @_; + my $pkg_name = $self->name; + my $website_dir = $self->repository->website_dir; + my $package_dir = rel2abs( $self->directory ); + my $real_conf_dir = catdir( $website_dir, 'conf', $pkg_name ); + my $src_conf_readme = catfile( $package_dir, 'conf', 'README' ); + + # First, remove all conf files + foreach my $conf_file ( @conf_paths ) { + unlink( $conf_file ); + $log->is_debug && + $log->debug( "Cleaned package conf: $conf_file" ); + } + + # Now add a README + my $date = scalar( localtime ); + eval { + open( README, '>', $src_conf_readme ) + || die "write failed - $!\n"; + print README <<WRITEME; + README - Config for $pkg_name Package + (generated when package installed: $date) + + Configuration files for this package (such as SPOPS, + action, etc.) are in the directory: + + $real_conf_dir + + DO NOT put any files in this directory for configuration, + they will be silently ignored. + WRITEME + close( README ); + }; + if ( $@ ) { + $log->error( "Failed to write config README: $@" ); + } + $log->is_debug && + $log->debug( "Wrote README to $src_conf_readme ok" ); + return $src_conf_readme; } |