Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[build] Add build that verifies that the code generator was run
Browse files Browse the repository at this point in the history
  • Loading branch information
kkaefer committed Jan 18, 2018
1 parent d2a112f commit ef5357a
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
22 changes: 22 additions & 0 deletions circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,22 @@ jobs:
name: Verify submodule pin
command: scripts/nitpick/submodule-pin.js
when: always
- run:
name: CMake file list generation
command: scripts/nitpick/generated-code.js cmake
when: always
- run:
name: Shader code generation
command: scripts/nitpick/generated-code.js shader
when: always
- run:
name: Style code generation
command: scripts/nitpick/generated-code.js style
when: always
- run:
name: Android code generation
command: scripts/nitpick/generated-code.js android
when: always


# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -706,6 +722,9 @@ jobs:
- run:
name: Lint plist files
command: make ios-lint
- run:
name: Nitpick Darwin code generation
command: scripts/nitpick/generated-code.js darwin
- *show-ccache-stats
- *save-cache

Expand Down Expand Up @@ -765,6 +784,9 @@ jobs:
- run:
name: Lint plist files
command: make macos-lint
- run:
name: Nitpick Darwin code generation
command: scripts/nitpick/generated-code.js darwin
- *show-ccache-stats
- *save-cache
- store_artifacts:
Expand Down
50 changes: 50 additions & 0 deletions scripts/nitpick/generated-code.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env node
const nitpick = require('.');
const child_process = require('child_process');
const path = require('path');
const fs = require('fs');
const os = require('os');

function checkGeneratedFiles(name, scripts) {
var files = [];

scripts.forEach(function(script) {
child_process.execSync(script);
const list = path.join(path.dirname(script), path.basename(script, path.extname(script)) + '.list');
files.push(list);
files = files.concat(fs.readFileSync(list, 'utf8').split('\n'));
});

// List missing files
var missing = child_process.execFileSync('git', ['ls-files', '--others', '--exclude-standard', '--'].concat(files)).toString().trim();
if (!missing.length) {
nitpick.ok(`All generated ${name} files are checked in`);
} else {
nitpick.fail(`These generated ${name} files are not checked in:`, missing);
}

// Diff existing files
var diff = child_process.execFileSync('git', ['-c', 'color.ui=always', 'diff', 'HEAD', '--'].concat(files)).toString().trim();
if (!diff.length) {
nitpick.ok(`All generated ${name} files are up-to-date`);
} else {
nitpick.fail(`These generated ${name} files have modifications:`, diff);
}
}

const mode = (process.argv[2] || '').toLowerCase();
if (!mode || mode == 'cmake') {
checkGeneratedFiles('CMake list', ['scripts/generate-cmake-files.js']);
}
if (!mode || mode == 'shader') {
checkGeneratedFiles('shader', ['scripts/generate-shaders.js']);
}
if (!mode || mode == 'style') {
checkGeneratedFiles('style', ['scripts/generate-style-code.js']);
}
if (!mode || mode == 'android') {
checkGeneratedFiles('Android', ['platform/android/scripts/generate-style-code.js']);
}
if ((!mode || mode == 'darwin') && os.platform() == 'darwin') {
checkGeneratedFiles('Darwin', ['platform/darwin/scripts/generate-style-code.js', 'platform/darwin/scripts/update-examples.js']);
}

0 comments on commit ef5357a

Please sign in to comment.