diff --git a/kdesrc-build-setup b/kdesrc-build-setup index 87475cc..3d71240 100755 --- a/kdesrc-build-setup +++ b/kdesrc-build-setup @@ -3,6 +3,8 @@ use strict; use 5.010; use IO::Pipe; +use File::Copy; +use File::Temp qw/tempfile/; sub runDialogExecutable { @@ -193,7 +195,56 @@ my @chosenModules = getListOptions( my $numCpus = getUserInput( 'How many CPU cores do you wish to use for building?', '2'); -open my $output, '>', '/tmp/kdesrc-buildrc' or die "$!"; +my $outputFileName = "$ENV{HOME}/.kdesrc-buildrc"; +my $output; # Will be output filehandle. + +while (-e $outputFileName) { + (my $printableName = $outputFileName) =~ s/^$ENV{HOME}/~/; + my $outputChoice = getMenuOption( + "$printableName already exists, what do you want to do?", + [ + backup => 'Make a backup, then overwrite with the new configuration', + custom => 'Write the new configuration to a different file', + cancel => 'Cancel setup', + ], + ); + + if ($outputChoice eq 'cancel') { + showInfo('Setup canceled'); + exit 0; + } + + if ($outputChoice eq 'custom') { + $outputFileName = getUserInput('Enter desired configuration file name.'); + $outputFileName =~ s/^~/$ENV{HOME}/; + } + + if ($outputChoice eq 'backup') { + + copy($outputFileName, "$outputFileName~") or do { + my $error = "$!"; + showInfo(<', $outputFileName) or do { + my $error = "$!"; + showInfo (<