diff options
author | Igor Drozdov <idrozdov@gitlab.com> | 2019-04-01 17:36:11 +0300 |
---|---|---|
committer | Igor Drozdov <idrozdov@gitlab.com> | 2019-04-01 17:36:11 +0300 |
commit | 04bb35a4b562fd57b14c55645bb1848a50cdef56 (patch) | |
tree | 1bd1ac2af6a5c088ac2529cdbccceeca402d3ebe /scripts/frontend/stylelint/stylelint-utility-map.js | |
parent | ade207e575ab846f6d354aaccc1382a6e512dd0d (diff) | |
parent | b8118a65d595040bfce2d83d5e38dd63ebfedb58 (diff) | |
download | gitlab-ce-id-split-self-approval-restrictions.tar.gz |
Merge branch 'master' into id-split-self-approval-restrictionsid-split-self-approval-restrictions
Diffstat (limited to 'scripts/frontend/stylelint/stylelint-utility-map.js')
-rw-r--r-- | scripts/frontend/stylelint/stylelint-utility-map.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/scripts/frontend/stylelint/stylelint-utility-map.js b/scripts/frontend/stylelint/stylelint-utility-map.js new file mode 100644 index 00000000000..7e012b157b3 --- /dev/null +++ b/scripts/frontend/stylelint/stylelint-utility-map.js @@ -0,0 +1,54 @@ +const sass = require('node-sass'); +const postcss = require('postcss'); +const fs = require('fs'); +const path = require('path'); +const prettier = require('prettier'); + +const utils = require('./stylelint-utils'); +const ROOT_PATH = path.resolve(__dirname, '../../..'); +const hashMapPath = path.resolve(__dirname, './utility-classes-map.js'); + +// +// This creates a JS based hash map (saved in utility-classes-map.js) of the different values in the utility classes +// +sass.render( + { + data: ` + @import './functions'; + @import './variables'; + @import './mixins'; + @import './utilities'; + `, + includePaths: [path.resolve(ROOT_PATH, 'node_modules/bootstrap/scss')], + }, + (err, result) => { + if (err) console.error('Error ', err); + + const cssResult = result.css.toString(); + + // We just use postcss to create a CSS tree + postcss([]) + .process(cssResult, { + // This supresses a postcss warning + from: undefined, + }) + .then(result => { + const selectorGroups = {}; + utils.createPropertiesHashmap(result.root, result, null, null, selectorGroups, true); + + const prettierOptions = prettier.resolveConfig.sync(hashMapPath); + const prettyHashmap = prettier.format( + `module.exports = ${JSON.stringify(selectorGroups)};`, + prettierOptions, + ); + + fs.writeFile(hashMapPath, prettyHashmap, function(err) { + if (err) { + return console.log(err); + } + + console.log('The file was saved!'); + }); + }); + }, +); |