array_shift($argv);
//remove program name
$argc--;
if ($argc == 3) {
    list($code, $namespace, $destDir) = $argv;
    $useLocale = false;
} else {
    list($code, $namespace, $destDir, $locale) = $argv;
    $useLocale = true;
}
if (!file_exists($destDir)) {
    echo "Invalid destination directory: {$destDir}\n";
    exit(-2);
}
$code = strtoupper($code);
if ($useLocale) {
    $saveLocale = locale_get_default();
    locale_set_default($locale);
}
try {
    $director = new CurrencyDirector(new StringType($code), new StringType($namespace), new StringType($destDir));
    $director->build();
    echo "Finished. {$code}.php written to {$destDir}\n";
} catch (\InvalidArgumentException $e) {
    echo $e->getMessage() . PHP_EOL;
    exit(-3);
}
if ($useLocale) {
    locale_set_default($saveLocale);
}
exit(0);
 public function testBuildWillSaveCurrencyClassFileAndReturnFileContents()
 {
     $text = $this->sut->build();
     $this->assertFileExists($this->rootDir->url() . '/GBP.php');
     $this->assertEquals($text, file_get_contents($this->rootDir->url() . '/GBP.php'));
 }