PowerShell Script for Copying Libraries

Here is a nice little PowerShell script I have created for copying my FGF libraries to the projects that use them. I also hot-keyed the PowerShell window which makes distributing new FGF builds really easy.

function fgfDist
{
    # An array of platforms that need to be copied
    $platforms = "x86","Xbox 360","Zune"

    if($args.count -ne 0){
        $platforms = $args
    }

    # An array of destinations for copying
    $destinations = "M:\Code\Games\Galactic Defense\trunk\Libraries\",
                    "M:\Code\AIR\trunk\Libraries\"

    $source = "M:\Code\FGF\trunk\Bin\"
    $sourceSuffix = "\Debug"

    # Loop through all the destinations and all the platforms
    # For each platform, copy some files.
    foreach($destination in $destinations)
    {
        write-host "Starting copy to"$destination
        foreach($platform in $platforms)
        {
            $tempSource = $source + $platform + $sourceSuffix
            $tempDestination = $destination + $platform

            # Test if the folder exists
            if( Test-Path $tempSource ){
                if( !(Test-Path $tempDestination) ){
                    write-host "Creating directory."
                    new-item -path $destination -name $platform -type directory
                }
            }
            else{
                write-host "Could not find the source files for"$platform
                continue
            }

            # Get a list of DLL files that contains thrust as well as the FocusedGames.dll file.
            $thrustLibs = get-childItem $tempSource -force | ? {$_.extension -eq ".dll"}|where {$_.name -match "Thrust"}
            $coreLibs = get-childItem $tempSource -force | ? {$_.extension -eq ".dll"}|where {$_.name -match "FocusedGames\.dll"}

            if($thrustLibs){
                foreach($dll in $thrustLibs){
                    if( $dll -ne ""){
                        copy-item $tempSource\$dll $tempDestination
                        write-host "  Copied"$platform\$dll
                    }
                }
            }

            if($coreLibs){
                foreach($dll in $coreLibs){
                    if( $dll -ne ""){
                        copy-item $tempSource\$dll $tempDestination
                        write-host "  Copied"$platform\$dll
                    }
                }
            }
        }
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

*


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>