#!/usr/bin/perl -w use strict; use Getopt::Long; use Config; use File::Spec; # If you have several working directories and they all use a shared DrIFT, # you need to point symlinks to the current one if you want to regenerate # files. We should probably make this arrangement less hacky, but until # we do, this "claims" DrIFT links. # # usage: cd $pugs_wd ; util/claim-drift.pl our ($FS) = ($Config{sitelib} =~ /([\/\\])/) or die "Can't determine file_sep"; GetOptions \our %Conf, qw(--verbose|v --no|n); if (! -d "..${FS}DrIFT") { warn <<"."; *** No DrIFT directory found. Make sure you are in the top level of a pugs working directory, and that you have a copy of DrIFT one level up. Obtain a copy of DrIFT at: And rename the distro to "DrIFT", e.g., tar xzvf DrIFT-2.1.2.tar.gz mv DrIFT-2.1.2 DrIFT . exit 1; } for my $real (glob join $FS, qw) { (my $orig = $real) =~ s,.*$FS,..${FS}DrIFT${FS}src${FS},; clean($orig); clean($real); if (-f $orig) { print "rm $orig\n" if $Conf{verbose}; do { 1 == unlink $orig or die "unlink: $!" } unless $Conf{no}; } print "ln -s $real $orig\n" if $Conf{verbose}; do { 1 == symlink $real, $orig or die "symlink: $!" } unless $Conf{no}; } sub clean { $_[0] = File::Spec->canonpath(File::Spec->rel2abs($_[0])) }