diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-20 13:00:54 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-20 13:00:54 +0300 |
commit | 3cccd102ba543e02725d247893729e5c73b38295 (patch) | |
tree | f36a04ec38517f5deaaacb5acc7d949688d1e187 /scripts/frontend/stylelint/stylelint_utility_map.js | |
parent | 205943281328046ef7b4528031b90fbda70c75ac (diff) |
Add latest changes from gitlab-org/gitlab@14-10-stable-eev14.10.0-rc42
Diffstat (limited to 'scripts/frontend/stylelint/stylelint_utility_map.js')
-rw-r--r-- | scripts/frontend/stylelint/stylelint_utility_map.js | 64 |
1 files changed, 64 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..187b2065823 --- /dev/null +++ b/scripts/frontend/stylelint/stylelint_utility_map.js @@ -0,0 +1,64 @@ +const fs = require('fs'); +const path = require('path'); +const postcss = require('postcss'); +const prettier = require('prettier'); +const sass = require('sass'); + +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) { + return console.error('Error ', err); + } + + const cssResult = result.css.toString(); + + // We just use postcss to create a CSS tree + return postcss([]) + .process(cssResult, { + // This suppresses a postcss warning + from: undefined, + }) + .then((processedResult) => { + const selectorGroups = {}; + utils.createPropertiesHashmap( + processedResult.root, + processedResult, + null, + null, + selectorGroups, + true, + ); + + const prettierOptions = prettier.resolveConfig.sync(hashMapPath); + const prettyHashmap = prettier.format( + `module.exports = ${JSON.stringify(selectorGroups)};`, + prettierOptions, + ); + + fs.writeFile(hashMapPath, prettyHashmap, (e) => { + if (e) { + return console.log(e); + } + + return console.log('The file was saved!'); + }); + }); + }, +); |