mirror of https://github.com/apache/druid.git
136 lines
4.1 KiB
Plaintext
136 lines
4.1 KiB
Plaintext
|
#!/usr/bin/env node
|
||
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
let fs = require('fs-extra');
|
||
|
|
||
|
if (!(process.argv.length === 3 || process.argv.length === 4)) {
|
||
|
console.log('Usage: mkcomp <what?> <component-name>');
|
||
|
process.exit();
|
||
|
}
|
||
|
|
||
|
let name;
|
||
|
let what;
|
||
|
if (process.argv.length === 4) {
|
||
|
what = process.argv[2];
|
||
|
name = process.argv[3];
|
||
|
if (!(what === 'component' || what === 'dialog' || what === 'singleton')) {
|
||
|
console.log(`Bad what, should be on of: component, dialog, singleton`);
|
||
|
process.exit();
|
||
|
}
|
||
|
} else {
|
||
|
what = 'component';
|
||
|
name = process.argv[2];
|
||
|
}
|
||
|
|
||
|
if (!/^([a-z-])+$/.test(name)) {
|
||
|
console.log('must be a hyphen case name');
|
||
|
process.exit();
|
||
|
}
|
||
|
|
||
|
let path = `./src/${what}s/`;
|
||
|
fs.ensureDirSync(path);
|
||
|
console.log('Making path:', path);
|
||
|
|
||
|
const camelName = name.replace(/(^|-)[a-z]/g, (s) => s.replace('-', '').toUpperCase());
|
||
|
const year = (new Date()).getFullYear();
|
||
|
|
||
|
function writeFile(path, data) {
|
||
|
try {
|
||
|
return fs.writeFileSync(path, data, {
|
||
|
flag: 'wx', // x = fail if file exists
|
||
|
encoding: 'utf8'
|
||
|
});
|
||
|
} catch (error) {
|
||
|
return console.log(`Skipping ${path}`);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Make the TypeScript file
|
||
|
writeFile(path + name + '.tsx',
|
||
|
`/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
import { Button, InputGroup } from '@blueprintjs/core';
|
||
|
import { IconNames } from '@blueprintjs/icons';
|
||
|
import classNames from 'classnames';
|
||
|
import * as React from 'react';
|
||
|
|
||
|
import './${name}.scss';
|
||
|
|
||
|
export interface ${camelName}Props extends React.Props<any> {
|
||
|
}
|
||
|
|
||
|
export interface ${camelName}State {
|
||
|
}
|
||
|
|
||
|
export class ${camelName} extends React.Component<${camelName}Props, ${camelName}State> {
|
||
|
constructor(props: ${camelName}Props, context: any) {
|
||
|
super(props, context);
|
||
|
// this.state = {};
|
||
|
|
||
|
}
|
||
|
|
||
|
render() {
|
||
|
return <div className="${name}">
|
||
|
|
||
|
</div>;
|
||
|
}
|
||
|
}
|
||
|
`);
|
||
|
|
||
|
// Make the SASS file
|
||
|
writeFile(path + name + '.scss',
|
||
|
`/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
.${name} {
|
||
|
|
||
|
}
|
||
|
`);
|