1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-12-11 16:16:13 +01:00
phorge-arcanist/scripts/library/library-map.php
epriestley c05bbd7be6 [Wilds] Allow "arc liberate" to liberate itself again
Summary:
Ref T13098. After libphutil/ and arcanist/ merged, some paths need to be adjusted. Try to organize things a little better, too.

Also, make `arc liberate` with no arguments just liberate all the libraries it can find.

Test Plan: Ran `arc liberate` and got a valid map rebuild, although I needed to apply some hacks on top of this to make the workflow reachable.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13098

Differential Revision: https://secure.phabricator.com/D19690
2018-09-21 16:50:58 -07:00

78 lines
1.9 KiB
PHP
Executable file

#!/usr/bin/env php
<?php
require_once dirname(dirname(__FILE__)).'/init/init-script.php';
$args = new PhutilArgumentParser($argv);
$args->setTagline(pht('rebuild the library map file'));
$args->setSynopsis(<<<EOHELP
**phutil_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 %s.',
'--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);