1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-12-23 14:00:55 +01:00
phorge-arcanist/support/lib/rebuild-map.php
epriestley acf0607683 Merge utility/support changes from "wilds" to "master"
Summary:
Ref T13395. Merge a lot of stuff which doesn't break existing workflows:

    - Merge a UTF8 fix for "cmd.exe" on Windows.
    - Merge minor changes to JSON linters.
    - Merge some shell completion stuff.
    - Merge some "arc anoid" fixes.
    - Merge various Windows improvements to unit tests which interact with processes / the filesystem.
    - Merge some other Windows path fixes.
    - Merge a UTF8 character class fix.
    - Merge script initialization.
    - Merge unit test support scripts.
    - Merge some initialization code.
    - Merge Windows stdout/stderr-as-files code.
    - Merge a bunch of code for making exec tests work on Windows.
    - Merge more Windows unit test fixes.
    - Merge "continue on failure" mode when loading symbols.
    - Merge "GPC" order CLI fixes.

Test Plan: Ran `arc unit --everything`; created this change. There's likely some less-than-perfect code here.

Maniphest Tasks: T13395

Differential Revision: https://secure.phabricator.com/D20988
2020-02-13 14:10:09 -08:00

78 lines
1.9 KiB
PHP
Executable file

#!/usr/bin/env php
<?php
$root = dirname(dirname(dirname(__FILE__)));
require_once $root.'/support/init/init-script.php';
$args = new PhutilArgumentParser($argv);
$args->setTagline(pht('rebuild the library map file'));
$args->setSynopsis(<<<EOHELP
**rebuild-map.php** [__options__] __root__
Rebuild the library map file for a libphutil library.
EOHELP
);
$args->parseStandardArguments();
$args->parse(
array(
array(
'name' => 'quiet',
'help' => pht('Do not write status messages to stderr.'),
),
array(
'name' => 'drop-cache',
'help' => pht(
'Drop the symbol cache and rebuild the entire map from scratch.'),
),
array(
'name' => 'limit',
'param' => 'N',
'default' => 8,
'help' => pht(
'Controls the number of symbol mapper subprocesses run at once. '.
'Defaults to 8.'),
),
array(
'name' => 'show',
'help' => pht(
'Print symbol map to stdout instead of writing it to the map file.'),
),
array(
'name' => 'ugly',
'help' => pht(
'Use faster but less readable serialization for "--show".'),
),
array(
'name' => 'root',
'wildcard' => true,
),
));
$root = $args->getArg('root');
if (count($root) !== 1) {
throw new Exception(pht('Provide exactly one library root!'));
}
$root = Filesystem::resolvePath(head($root));
$builder = new PhutilLibraryMapBuilder($root);
$builder->setQuiet($args->getArg('quiet'));
$builder->setSubprocessLimit($args->getArg('limit'));
if ($args->getArg('drop-cache')) {
$builder->dropSymbolCache();
}
if ($args->getArg('show')) {
$library_map = $builder->buildMap();
if ($args->getArg('ugly')) {
echo json_encode($library_map);
} else {
echo id(new PhutilJSON())->encodeFormatted($library_map);
}
} else {
$builder->buildAndWriteMap();
}
exit(0);