--- /dev/null
+var fs = require('fs');
+var util = require('util');
+var gulp = require('gulp');
+var xsd2json = require('xsd2json2').xsd2json;
+var mkdirp = require('mkdirp');
+var del = require('del');
+
+gulp.task('clean', function() {
+ del.sync(['./dossier-financement.json', './dossier-financement-noAdditionalProperties.json', './ng-schemas.js']);
+});
+
+// Generate the JSON schemas from the XSD definitions
+gulp.task('xsd2json', function(callback) {
+ xsd2json('./dossier-financement.xsd', function(err, jsonSchema) {
+ if (err) return callback(err);
+ // root element should be of type dossier-financement
+ jsonSchema.$ref = '#/definitions/wwwmgdisfrpublicdossier-financementv1:DossierFinancementType';
+ fs.writeFile('./dossier-financement.json', JSON.stringify(jsonSchema, null, 2), callback);
+ });
+});
+
+var recursiveNoAddProp = function(o) {
+ for (var i in o) {
+ if (typeof o[i] === 'object') {
+ if (o[i].properties) {
+ o[i].additionalProperties = false;
+ }
+ recursiveNoAddProp(o[i]);
+ }
+ }
+};
+
+gulp.task('noAddProp', function() {
+ var schema = JSON.parse(fs.readFileSync('./dossier-financement.json', 'utf8'));
+ recursiveNoAddProp(schema);
+ fs.writeFileSync('./dossier-financement-noAdditionalProperties.json', JSON.stringify(schema, null, 2));
+});
+
+// Generate an angular module with a constant that holds the JSON schema
+gulp.task('ngConstant', function(callback) {
+ var angularModule = util.format(
+ 'angular.module("referentiel-dossier-financement.contract", [])\n.constant("AIDE_SCHEMA", %s);',
+ fs.readFileSync('./dossier-financement.json', 'utf8')
+ );
+ fs.writeFile('./ng-schemas.js', angularModule, callback);
+});