@nx-kz/go
Version:
This is Nx plugin to use Go in a Nx workspace.
71 lines • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const path = require("path");
function normalizeOptions(tree, options) {
const name = (0, devkit_1.names)(options.name).fileName;
const projectDirectory = options.directory
? `${(0, devkit_1.names)(options.directory).fileName}/${name}`
: name;
const projectName = projectDirectory.replace(new RegExp('/', 'g'), '-');
const projectRoot = options.parent
? `${options.parent}/${projectDirectory}`
: `${(0, devkit_1.getWorkspaceLayout)(tree).appsDir}/${projectDirectory}`;
const parsedTags = options.tags
? options.tags.split(',').map((s) => s.trim())
: [];
return Object.assign(Object.assign({}, options), { projectName,
projectRoot,
projectDirectory,
parsedTags });
}
function addFiles(tree, options) {
const templateOptions = Object.assign(Object.assign(Object.assign({}, options), (0, devkit_1.names)(options.name)), { offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot), template: '' });
(0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files'), options.projectRoot, templateOptions);
}
function default_1(tree, options) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
const normalizedOptions = normalizeOptions(tree, options);
(0, devkit_1.addProjectConfiguration)(tree, normalizedOptions.projectName, {
root: normalizedOptions.projectRoot,
projectType: 'application',
sourceRoot: normalizedOptions.projectRoot,
targets: {
lint: {
executor: '@nrwl/workspace:run-commands',
options: {
command: `go vet ./...`,
cwd: normalizedOptions.projectRoot
}
},
test: {
executor: '@nrwl/workspace:run-commands',
options: {
command: `go test -p 1 ./...`,
cwd: normalizedOptions.projectRoot
}
},
build: {
executor: '@nrwl/workspace:run-commands',
options: {
command: `go build -o ${(0, devkit_1.offsetFromRoot)(normalizedOptions.projectRoot)}dist/${normalizedOptions.projectRoot} main.go`,
cwd: normalizedOptions.projectRoot
}
},
serve: {
executor: '@nrwl/workspace:run-commands',
options: {
command: `go run main.go`,
cwd: normalizedOptions.projectRoot
}
}
},
tags: normalizedOptions.parsedTags,
});
addFiles(tree, normalizedOptions);
yield (0, devkit_1.formatFiles)(tree);
});
}
exports.default = default_1;
//# sourceMappingURL=generator.js.map