figma-tokens-transformer
Version:
Tool transforming Ant Design for Figma tokens to less files
56 lines (48 loc) • 2.06 kB
JavaScript
const {transform, configure} = require('./index');
const fs = require('fs');
const CONFIG_FILENAME = 'tokens-transformer.config.json';
const SECRETS_FILENAME = 'tokens-transformer.secret.json';
const CONFIG_FILE = process.cwd() + '/' + CONFIG_FILENAME;
const SECRETS_FILE = process.cwd() + '/' + SECRETS_FILENAME;
const COMMANDS = {
transform: () => {
const {LICENSE_KEY, LICENSE_EMAIL, SOURCE_FILE, TARGET_DIR} = process.env;
const secretsInEnv = LICENSE_KEY && LICENSE_EMAIL;
if (!secretsInEnv && !fs.existsSync(SECRETS_FILE)) {
logMissingConfiguration(SECRETS_FILENAME, 'LICENSE_KEY, LICENSE_EMAIL');
return;
}
const configInEnv = SOURCE_FILE && TARGET_DIR;
if (!configInEnv && !fs.existsSync(CONFIG_FILE)) {
logMissingConfiguration(CONFIG_FILENAME, 'SOURCE_FILE, TARGET_DIR');
return;
}
const config = configInEnv ? {source: {tokensFile: SOURCE_FILE}, target: {lessDir: TARGET_DIR, jsonsDir: TARGET_DIR}}
: JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));
const secrets = secretsInEnv ? {license: {key: LICENSE_KEY, email: LICENSE_EMAIL}}
: JSON.parse(fs.readFileSync(SECRETS_FILE, 'utf-8'));
transform(config, secrets)
.catch(error => console.error('Transformation error! ' + error));
},
configure: () => {
configure(CONFIG_FILE, SECRETS_FILE);
},
};
const AVAILABLE_COMMANDS = Object.keys(COMMANDS).join(', ');
const commandName = process.argv[2];
if (!commandName) {
throw `Command name parameter is required (one of: ${AVAILABLE_COMMANDS})`;
}
const logMissingConfiguration = (filename, envVariables) => console.log(
`Config file: ${filename} needs to be created.\n`
+ `Use this command: npx figma-tokens-transformer configure\n`
+ `or create the file yourself (see the docs).\n`
+ `You can also use environment variables (useful in CI):\n`
+ envVariables,
);
const command = COMMANDS[commandName];
if (!command) {
throw `Unknown command: ${commandName}, available commands: ${AVAILABLE_COMMANDS}`;
}
command();