bi-ido-flight-log-public/frontend/aurelia_project/generators/component.js
2022-10-02 23:23:03 +02:00

51 lines
1.5 KiB
JavaScript

import { inject } from 'aurelia-dependency-injection';
import { Project, ProjectItem, CLIOptions, UI } from 'aurelia-cli';
var path = require('path');
@inject(Project, CLIOptions, UI)
export default class ElementGenerator {
constructor(project, options, ui) {
this.project = project;
this.options = options;
this.ui = ui;
}
execute() {
let self = this;
return this.ui
.ensureAnswer(this.options.args[0], 'What would you like to call the component?')
.then(name => {
return self.ui.ensureAnswer(this.options.args[1], 'What sub-folder would you like to add it to?\nIf it doesn\'t exist it will be created for you.\n\nDefault folder is the source folder (src).', ".")
.then(subFolders => {
let fileName = this.project.makeFileName(name);
let className = this.project.makeClassName(name);
self.project.root.add(
ProjectItem.text(path.join(subFolders, fileName + ".js"), this.generateJSSource(className)),
ProjectItem.text(path.join(subFolders, fileName + ".html"), this.generateHTMLSource(className))
);
return this.project.commitChanges()
.then(() => this.ui.log(`Created ${name} in the '${path.join(self.project.root.name, subFolders)}' folder`));
});
});
}
generateJSSource(className) {
return `export class ${className} {
constructor() {
this.message = 'Hello world';
}
}`
}
generateHTMLSource(className) {
return `<template>
<h1>\${message}</h1>
</template>`
}
}