this is just for the repo, and not the workspace Co-authored-by: Rares Matei <matei.rar@gmail.com>
67 lines
1.3 KiB
TypeScript
67 lines
1.3 KiB
TypeScript
import {
|
|
apply,
|
|
chain,
|
|
mergeWith,
|
|
Rule,
|
|
template,
|
|
url,
|
|
} from '@angular-devkit/schematics';
|
|
import { addDepsToPackageJson, readJsonInTree } from '@nrwl/workspace';
|
|
import ignore from 'ignore';
|
|
import { bazelVersion, iBazelVersion } from '../utils/versions';
|
|
import { noop } from 'rxjs';
|
|
|
|
function updateGitIgnore(): Rule {
|
|
return (host) => {
|
|
if (!host.exists('.gitignore')) {
|
|
return;
|
|
}
|
|
|
|
const ig = ignore();
|
|
ig.add(host.read('.gitignore').toString());
|
|
|
|
if (!ig.ignores('bazel-out')) {
|
|
const content = `${host
|
|
.read('.gitignore')!
|
|
.toString('utf-8')
|
|
.trimRight()}\nbazel-*\n`;
|
|
host.overwrite('.gitignore', content);
|
|
}
|
|
};
|
|
}
|
|
|
|
const updateDependencies = addDepsToPackageJson(
|
|
{},
|
|
{
|
|
'@bazel/bazel': bazelVersion,
|
|
'@bazel/ibazel': iBazelVersion,
|
|
},
|
|
true
|
|
);
|
|
|
|
function addFiles() {
|
|
return (host) => {
|
|
if (host.exists('/.bazelrc')) {
|
|
return noop;
|
|
}
|
|
return mergeWith(
|
|
apply(url('./files/root'), [
|
|
template({
|
|
tmpl: '',
|
|
}),
|
|
])
|
|
);
|
|
};
|
|
}
|
|
|
|
export default (): Rule => {
|
|
return (host) => {
|
|
const packageJson = readJsonInTree(host, 'package.json');
|
|
return chain([
|
|
updateGitIgnore(),
|
|
!packageJson.devDependencies['@bazel/bazel'] ? updateDependencies : noop,
|
|
addFiles(),
|
|
]);
|
|
};
|
|
};
|