@tricoteuses/assemblee 1.0.0-next.2 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/lib/api.js +23 -7
- package/lib/api.mjs +41 -0
- package/lib/bugs/acteur-00010/plugin.test.js +139 -33
- package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
- package/lib/bugs/acteur-00010.js +166 -24
- package/lib/bugs/acteur-00010.mjs +31 -0
- package/lib/bugs/agenda-00002/plugin.test.js +178 -52
- package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
- package/lib/bugs/agenda-00002.js +507 -143
- package/lib/bugs/agenda-00002.mjs +197 -0
- package/lib/bugs/agenda-00008/plugin.test.js +143 -31
- package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
- package/lib/bugs/agenda-00008.js +180 -25
- package/lib/bugs/agenda-00008.mjs +30 -0
- package/lib/bugs/agenda-00011/plugin.test.js +371 -156
- package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
- package/lib/bugs/agenda-00011.js +416 -117
- package/lib/bugs/agenda-00011.mjs +150 -0
- package/lib/bugs.js +591 -54
- package/lib/bugs.mjs +93 -0
- package/lib/cleaners/actes_legislatifs.js +149 -61
- package/lib/cleaners/actes_legislatifs.mjs +311 -0
- package/lib/cleaners/acteurs.js +255 -123
- package/lib/cleaners/acteurs.mjs +211 -0
- package/lib/cleaners/amendements.js +242 -117
- package/lib/cleaners/amendements.mjs +292 -0
- package/lib/cleaners/documents.js +147 -62
- package/lib/cleaners/documents.mjs +162 -0
- package/lib/cleaners/dossiers_legislatifs.js +132 -45
- package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
- package/lib/cleaners/index.js +64 -8
- package/lib/cleaners/index.mjs +8 -0
- package/lib/cleaners/organes.js +54 -21
- package/lib/cleaners/organes.mjs +64 -0
- package/lib/cleaners/reunions.js +237 -127
- package/lib/cleaners/reunions.mjs +318 -0
- package/lib/cleaners/scrutins.js +261 -99
- package/lib/cleaners/scrutins.mjs +254 -0
- package/lib/cleaners/xml.js +81 -16
- package/lib/cleaners/xml.mjs +42 -0
- package/lib/datasets.js +284 -153
- package/lib/datasets.mjs +596 -0
- package/lib/dates.js +93 -34
- package/lib/dates.mjs +98 -0
- package/lib/dossiers_legislatifs.js +107 -33
- package/lib/dossiers_legislatifs.mjs +215 -0
- package/lib/file_systems.js +203 -35
- package/lib/file_systems.mjs +64 -0
- package/lib/git.js +139 -41
- package/lib/git.mjs +114 -0
- package/lib/index.js +310 -16
- package/lib/index.mjs +16 -0
- package/lib/inserters.js +355 -131
- package/lib/inserters.mjs +413 -0
- package/lib/loaders.js +900 -440
- package/lib/loaders.mjs +678 -0
- package/lib/organes.js +15 -5
- package/lib/organes.mjs +18 -0
- package/lib/parsers/documents.js +241 -89
- package/lib/parsers/documents.mjs +433 -0
- package/lib/parsers/index.js +36 -3
- package/lib/parsers/index.mjs +3 -0
- package/lib/parsers/recherche_amendements.js +616 -173
- package/lib/parsers/recherche_amendements.mjs +189 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
- package/lib/raw_types/acteurs_et_organes.js +228 -506
- package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
- package/lib/raw_types/agendas.js +165 -75
- package/lib/raw_types/agendas.mjs +944 -0
- package/lib/raw_types/amendements.js +165 -77
- package/lib/raw_types/amendements.mjs +1040 -0
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
- package/lib/raw_types/dossiers_legislatifs.js +181 -143
- package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
- package/lib/raw_types/scrutins.js +144 -61
- package/lib/raw_types/scrutins.mjs +645 -0
- package/lib/scripts/bugs_helper.js +657 -155
- package/lib/scripts/bugs_helper.mjs +286 -0
- package/lib/scripts/clean_data.js +380 -145
- package/lib/scripts/clean_data.mjs +190 -0
- package/lib/scripts/clean_reorganized_data.js +627 -331
- package/lib/scripts/clean_reorganized_data.mjs +520 -0
- package/lib/scripts/diff_amendements.js +159 -73
- package/lib/scripts/diff_amendements.mjs +234 -0
- package/lib/scripts/document_dossiers_legislatifs.js +570 -288
- package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
- package/lib/scripts/get_today_reunions.js +37 -20
- package/lib/scripts/get_today_reunions.mjs +41 -0
- package/lib/scripts/merge_scrutins.js +121 -39
- package/lib/scripts/merge_scrutins.mjs +69 -0
- package/lib/scripts/parse_textes_lois.js +179 -125
- package/lib/scripts/parse_textes_lois.mjs +215 -0
- package/lib/scripts/raw_types_from_amendements.js +276 -77
- package/lib/scripts/raw_types_from_amendements.mjs +118 -0
- package/lib/scripts/reorganize_data.js +867 -446
- package/lib/scripts/reorganize_data.mjs +712 -0
- package/lib/scripts/retrieve_deputes_photos.js +378 -157
- package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
- package/lib/scripts/retrieve_documents.js +648 -172
- package/lib/scripts/retrieve_documents.mjs +292 -0
- package/lib/scripts/retrieve_open_data.js +286 -85
- package/lib/scripts/retrieve_open_data.mjs +125 -0
- package/lib/scripts/retrieve_pending_amendments.js +302 -69
- package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
- package/lib/scripts/retrieve_senateurs_photos.js +374 -198
- package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
- package/lib/scripts/retrieve_textes_lois.js +343 -89
- package/lib/scripts/retrieve_textes_lois.mjs +168 -0
- package/lib/scripts/test_load.js +30 -11
- package/lib/scripts/test_load.mjs +26 -0
- package/lib/scripts/test_load_big_files.js +30 -11
- package/lib/scripts/test_load_big_files.mjs +26 -0
- package/lib/scripts/validate_json.js +370 -120
- package/lib/scripts/validate_json.mjs +216 -0
- package/lib/shared_types/codes_actes.js +50 -15
- package/lib/shared_types/codes_actes.mjs +228 -0
- package/lib/strings.js +16 -3
- package/lib/strings.mjs +7 -0
- package/lib/types/acteurs_et_organes.js +156 -71
- package/lib/types/acteurs_et_organes.mjs +918 -0
- package/lib/types/agendas.js +154 -67
- package/lib/types/agendas.mjs +623 -0
- package/lib/types/amendements.js +166 -77
- package/lib/types/amendements.mjs +885 -0
- package/lib/types/dossiers_legislatifs.d.ts +1 -42
- package/lib/types/dossiers_legislatifs.js +182 -143
- package/lib/types/dossiers_legislatifs.mjs +1120 -0
- package/lib/types/legislatures.js +12 -3
- package/lib/types/legislatures.mjs +9 -0
- package/lib/types/scrutins.js +144 -61
- package/lib/types/scrutins.mjs +528 -0
- package/lib/urls.js +44 -25
- package/lib/urls.mjs +201 -0
- package/package.json +33 -12
|
@@ -1,30 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.date.to-string.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.object.values.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.array.includes.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.string.includes.js");
|
|
10
|
+
|
|
11
|
+
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
12
|
+
|
|
13
|
+
var _datasets = require("../datasets");
|
|
14
|
+
|
|
15
|
+
var _loaders = require("../loaders");
|
|
16
|
+
|
|
17
|
+
var _agendas = require("../types/agendas");
|
|
18
|
+
|
|
19
|
+
var _legislatures = require("../types/legislatures");
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
22
|
+
|
|
23
|
+
var optionsDefinitions = [{
|
|
7
24
|
defaultOption: true,
|
|
8
25
|
help: "directory containing Assemblée open data files",
|
|
9
26
|
name: "dataDir",
|
|
10
27
|
type: String
|
|
11
28
|
}];
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
for (
|
|
19
|
-
|
|
29
|
+
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
30
|
+
var now = new Date();
|
|
31
|
+
|
|
32
|
+
var _loadAssembleeData = (0, _loaders.loadAssembleeData)(options.dataDir, _datasets.EnabledDatasets.Agendas, _legislatures.Legislature.Seize),
|
|
33
|
+
reunionByUid = _loadAssembleeData.reunionByUid;
|
|
34
|
+
|
|
35
|
+
for (var _i = 0, _Object$values = Object.values(reunionByUid); _i < _Object$values.length; _i++) {
|
|
36
|
+
var reunion = _Object$values[_i];
|
|
37
|
+
|
|
38
|
+
if (![_agendas.EtatCycleDeVie.Confirmé, _agendas.EtatCycleDeVie.Eventuel].includes(reunion.cycleDeVie.etat)) {
|
|
20
39
|
continue;
|
|
21
40
|
}
|
|
22
41
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
uid
|
|
27
|
-
} = reunion;
|
|
42
|
+
var timestampDebut = reunion.timestampDebut,
|
|
43
|
+
typeReunion = reunion.typeReunion,
|
|
44
|
+
uid = reunion.uid;
|
|
28
45
|
|
|
29
46
|
if (typeReunion !== "GP") {
|
|
30
47
|
continue;
|
|
@@ -38,4 +55,4 @@ for (const reunion of Object.values(reunionByUid)) {
|
|
|
38
55
|
}
|
|
39
56
|
|
|
40
57
|
console.log(now);
|
|
41
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZWZhdWx0T3B0aW9uIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsIm5vdyIsIkRhdGUiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJFbmFibGVkRGF0YXNldHMiLCJBZ2VuZGFzIiwiTGVnaXNsYXR1cmUiLCJTZWl6ZSIsInJldW5pb25CeVVpZCIsIk9iamVjdCIsInZhbHVlcyIsInJldW5pb24iLCJFdGF0Q3ljbGVEZVZpZSIsIkNvbmZpcm3DqSIsIkV2ZW50dWVsIiwiaW5jbHVkZXMiLCJjeWNsZURlVmllIiwiZXRhdCIsInRpbWVzdGFtcERlYnV0IiwidHlwZVJldW5pb24iLCJ1aWQiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZ2V0X3RvZGF5X3JldW5pb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRXRhdEN5Y2xlRGVWaWUgfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuY29uc3QgeyByZXVuaW9uQnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICBvcHRpb25zLmRhdGFEaXIsXG4gIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzLFxuICBMZWdpc2xhdHVyZS5TZWl6ZSxcbilcbmZvciAoY29uc3QgcmV1bmlvbiBvZiBPYmplY3QudmFsdWVzKHJldW5pb25CeVVpZCkpIHtcbiAgaWYgKFxuICAgICFbRXRhdEN5Y2xlRGVWaWUuQ29uZmlybcOpLCBFdGF0Q3ljbGVEZVZpZS5FdmVudHVlbF0uaW5jbHVkZXMoXG4gICAgICByZXVuaW9uLmN5Y2xlRGVWaWUuZXRhdCxcbiAgICApXG4gICkge1xuICAgIGNvbnRpbnVlXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXBEZWJ1dCwgdHlwZVJldW5pb24sIHVpZCB9ID0gcmV1bmlvblxuICBpZiAodHlwZVJldW5pb24gIT09IFwiR1BcIikge1xuICAgIGNvbnRpbnVlXG4gIH1cbiAgaWYgKFxuICAgIHRpbWVzdGFtcERlYnV0LmdldEZ1bGxZZWFyKCkgIT09IG5vdy5nZXRGdWxsWWVhcigpIHx8XG4gICAgdGltZXN0YW1wRGVidXQuZ2V0TW9udGgoKSAhPT0gbm93LmdldE1vbnRoKCkgfHxcbiAgICB0aW1lc3RhbXBEZWJ1dC5nZXREYXRlKCkgIT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgY29udGludWVcbiAgfVxuICBjb25zb2xlLmxvZyh1aWQsIHRpbWVzdGFtcERlYnV0LCBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKSlcbn1cbmNvbnNvbGUubG9nKG5vdylcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsYUFBYSxFQUFFLElBRGpCO0VBRUVDLElBQUksRUFBRSxnREFGUjtFQUdFQyxJQUFJLEVBQUUsU0FIUjtFQUlFQyxJQUFJLEVBQUVDO0FBSlIsQ0FEeUIsQ0FBM0I7QUFRQSxJQUFNQyxPQUFPLEdBQUcsSUFBQUMsMkJBQUEsRUFBZ0JQLGtCQUFoQixDQUFoQjtBQUVBLElBQU1RLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7O0FBQ0EseUJBQXlCLElBQUFDLDBCQUFBLEVBQ3ZCSixPQUFPLENBQUNLLE9BRGUsRUFFdkJDLHlCQUFBLENBQWdCQyxPQUZPLEVBR3ZCQyx5QkFBQSxDQUFZQyxLQUhXLENBQXpCO0FBQUEsSUFBUUMsWUFBUixzQkFBUUEsWUFBUjs7QUFLQSxrQ0FBc0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixZQUFkLENBQXRCLG9DQUFtRDtFQUE5QyxJQUFNRyxPQUFPLHFCQUFiOztFQUNILElBQ0UsQ0FBQyxDQUFDQyx1QkFBQSxDQUFlQyxRQUFoQixFQUEwQkQsdUJBQUEsQ0FBZUUsUUFBekMsRUFBbURDLFFBQW5ELENBQ0NKLE9BQU8sQ0FBQ0ssVUFBUixDQUFtQkMsSUFEcEIsQ0FESCxFQUlFO0lBQ0E7RUFDRDs7RUFDRCxJQUFRQyxjQUFSLEdBQTZDUCxPQUE3QyxDQUFRTyxjQUFSO0VBQUEsSUFBd0JDLFdBQXhCLEdBQTZDUixPQUE3QyxDQUF3QlEsV0FBeEI7RUFBQSxJQUFxQ0MsR0FBckMsR0FBNkNULE9BQTdDLENBQXFDUyxHQUFyQzs7RUFDQSxJQUFJRCxXQUFXLEtBQUssSUFBcEIsRUFBMEI7SUFDeEI7RUFDRDs7RUFDRCxJQUNFRCxjQUFjLENBQUNHLFdBQWYsT0FBaUNyQixHQUFHLENBQUNxQixXQUFKLEVBQWpDLElBQ0FILGNBQWMsQ0FBQ0ksUUFBZixPQUE4QnRCLEdBQUcsQ0FBQ3NCLFFBQUosRUFEOUIsSUFFQUosY0FBYyxDQUFDSyxPQUFmLE9BQTZCdkIsR0FBRyxDQUFDdUIsT0FBSixFQUgvQixFQUlFO0lBQ0E7RUFDRDs7RUFDREMsT0FBTyxDQUFDQyxHQUFSLENBQVlMLEdBQVosRUFBaUJGLGNBQWpCLEVBQWlDUSxJQUFJLENBQUNDLFNBQUwsQ0FBZWhCLE9BQWYsRUFBd0IsSUFBeEIsRUFBOEIsQ0FBOUIsQ0FBakM7QUFDRDs7QUFDRGEsT0FBTyxDQUFDQyxHQUFSLENBQVl6QixHQUFaIn0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import commandLineArgs from "command-line-args";
|
|
2
|
+
import { EnabledDatasets } from "../datasets.mjs";
|
|
3
|
+
import { loadAssembleeData } from "../loaders.mjs";
|
|
4
|
+
import { EtatCycleDeVie } from "../types/agendas.mjs";
|
|
5
|
+
import { Legislature } from "../types/legislatures.mjs";
|
|
6
|
+
const optionsDefinitions = [{
|
|
7
|
+
defaultOption: true,
|
|
8
|
+
help: "directory containing Assemblée open data files",
|
|
9
|
+
name: "dataDir",
|
|
10
|
+
type: String
|
|
11
|
+
}];
|
|
12
|
+
const options = commandLineArgs(optionsDefinitions);
|
|
13
|
+
const now = new Date();
|
|
14
|
+
const {
|
|
15
|
+
reunionByUid
|
|
16
|
+
} = loadAssembleeData(options.dataDir, EnabledDatasets.Agendas, Legislature.Seize);
|
|
17
|
+
|
|
18
|
+
for (const reunion of Object.values(reunionByUid)) {
|
|
19
|
+
if (![EtatCycleDeVie.Confirmé, EtatCycleDeVie.Eventuel].includes(reunion.cycleDeVie.etat)) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const {
|
|
24
|
+
timestampDebut,
|
|
25
|
+
typeReunion,
|
|
26
|
+
uid
|
|
27
|
+
} = reunion;
|
|
28
|
+
|
|
29
|
+
if (typeReunion !== "GP") {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (timestampDebut.getFullYear() !== now.getFullYear() || timestampDebut.getMonth() !== now.getMonth() || timestampDebut.getDate() !== now.getDate()) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
console.log(uid, timestampDebut, JSON.stringify(reunion, null, 2));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
console.log(now);
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJFbmFibGVkRGF0YXNldHMiLCJsb2FkQXNzZW1ibGVlRGF0YSIsIkV0YXRDeWNsZURlVmllIiwiTGVnaXNsYXR1cmUiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZWZhdWx0T3B0aW9uIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwib3B0aW9ucyIsIm5vdyIsIkRhdGUiLCJyZXVuaW9uQnlVaWQiLCJkYXRhRGlyIiwiQWdlbmRhcyIsIlNlaXplIiwicmV1bmlvbiIsIk9iamVjdCIsInZhbHVlcyIsIkNvbmZpcm3DqSIsIkV2ZW50dWVsIiwiaW5jbHVkZXMiLCJjeWNsZURlVmllIiwiZXRhdCIsInRpbWVzdGFtcERlYnV0IiwidHlwZVJldW5pb24iLCJ1aWQiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZ2V0X3RvZGF5X3JldW5pb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRXRhdEN5Y2xlRGVWaWUgfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuY29uc3QgeyByZXVuaW9uQnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICBvcHRpb25zLmRhdGFEaXIsXG4gIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzLFxuICBMZWdpc2xhdHVyZS5TZWl6ZSxcbilcbmZvciAoY29uc3QgcmV1bmlvbiBvZiBPYmplY3QudmFsdWVzKHJldW5pb25CeVVpZCkpIHtcbiAgaWYgKFxuICAgICFbRXRhdEN5Y2xlRGVWaWUuQ29uZmlybcOpLCBFdGF0Q3ljbGVEZVZpZS5FdmVudHVlbF0uaW5jbHVkZXMoXG4gICAgICByZXVuaW9uLmN5Y2xlRGVWaWUuZXRhdCxcbiAgICApXG4gICkge1xuICAgIGNvbnRpbnVlXG4gIH1cbiAgY29uc3QgeyB0aW1lc3RhbXBEZWJ1dCwgdHlwZVJldW5pb24sIHVpZCB9ID0gcmV1bmlvblxuICBpZiAodHlwZVJldW5pb24gIT09IFwiR1BcIikge1xuICAgIGNvbnRpbnVlXG4gIH1cbiAgaWYgKFxuICAgIHRpbWVzdGFtcERlYnV0LmdldEZ1bGxZZWFyKCkgIT09IG5vdy5nZXRGdWxsWWVhcigpIHx8XG4gICAgdGltZXN0YW1wRGVidXQuZ2V0TW9udGgoKSAhPT0gbm93LmdldE1vbnRoKCkgfHxcbiAgICB0aW1lc3RhbXBEZWJ1dC5nZXREYXRlKCkgIT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgY29udGludWVcbiAgfVxuICBjb25zb2xlLmxvZyh1aWQsIHRpbWVzdGFtcERlYnV0LCBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKSlcbn1cbmNvbnNvbGUubG9nKG5vdylcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBUCxNQUE0QixtQkFBNUI7U0FFU0MsZTtTQUNBQyxpQjtTQUNBQyxjO1NBQ0FDLFc7QUFFVCxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtFQUNFQyxhQUFhLEVBQUUsSUFEakI7RUFFRUMsSUFBSSxFQUFFLGdEQUZSO0VBR0VDLElBQUksRUFBRSxTQUhSO0VBSUVDLElBQUksRUFBRUM7QUFKUixDQUR5QixDQUEzQjtBQVFBLE1BQU1DLE9BQU8sR0FBR1gsZUFBZSxDQUFDSyxrQkFBRCxDQUEvQjtBQUVBLE1BQU1PLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7QUFDQSxNQUFNO0VBQUVDO0FBQUYsSUFBbUJaLGlCQUFpQixDQUN4Q1MsT0FBTyxDQUFDSSxPQURnQyxFQUV4Q2QsZUFBZSxDQUFDZSxPQUZ3QixFQUd4Q1osV0FBVyxDQUFDYSxLQUg0QixDQUExQzs7QUFLQSxLQUFLLE1BQU1DLE9BQVgsSUFBc0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjTixZQUFkLENBQXRCLEVBQW1EO0VBQ2pELElBQ0UsQ0FBQyxDQUFDWCxjQUFjLENBQUNrQixRQUFoQixFQUEwQmxCLGNBQWMsQ0FBQ21CLFFBQXpDLEVBQW1EQyxRQUFuRCxDQUNDTCxPQUFPLENBQUNNLFVBQVIsQ0FBbUJDLElBRHBCLENBREgsRUFJRTtJQUNBO0VBQ0Q7O0VBQ0QsTUFBTTtJQUFFQyxjQUFGO0lBQWtCQyxXQUFsQjtJQUErQkM7RUFBL0IsSUFBdUNWLE9BQTdDOztFQUNBLElBQUlTLFdBQVcsS0FBSyxJQUFwQixFQUEwQjtJQUN4QjtFQUNEOztFQUNELElBQ0VELGNBQWMsQ0FBQ0csV0FBZixPQUFpQ2pCLEdBQUcsQ0FBQ2lCLFdBQUosRUFBakMsSUFDQUgsY0FBYyxDQUFDSSxRQUFmLE9BQThCbEIsR0FBRyxDQUFDa0IsUUFBSixFQUQ5QixJQUVBSixjQUFjLENBQUNLLE9BQWYsT0FBNkJuQixHQUFHLENBQUNtQixPQUFKLEVBSC9CLEVBSUU7SUFDQTtFQUNEOztFQUNEQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUwsR0FBWixFQUFpQkYsY0FBakIsRUFBaUNRLElBQUksQ0FBQ0MsU0FBTCxDQUFlakIsT0FBZixFQUF3QixJQUF4QixFQUE4QixDQUE5QixDQUFqQztBQUNEOztBQUNEYyxPQUFPLENBQUNDLEdBQVIsQ0FBWXJCLEdBQVoifQ==
|
|
@@ -1,9 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.array.slice.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.object.to-string.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.function.name.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.array.from.js");
|
|
10
|
+
|
|
11
|
+
require("core-js/modules/es.string.iterator.js");
|
|
12
|
+
|
|
13
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
14
|
+
|
|
15
|
+
require("core-js/modules/es.symbol.js");
|
|
16
|
+
|
|
17
|
+
require("core-js/modules/es.symbol.description.js");
|
|
18
|
+
|
|
19
|
+
require("core-js/modules/es.symbol.iterator.js");
|
|
20
|
+
|
|
21
|
+
require("core-js/modules/es.array.iterator.js");
|
|
22
|
+
|
|
23
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
24
|
+
|
|
25
|
+
require("core-js/modules/es.array.is-array.js");
|
|
26
|
+
|
|
27
|
+
require("core-js/modules/es.array.join.js");
|
|
28
|
+
|
|
29
|
+
require("core-js/modules/es.array.sort.js");
|
|
30
|
+
|
|
31
|
+
require("core-js/modules/es.string.ends-with.js");
|
|
32
|
+
|
|
33
|
+
require("core-js/modules/es.array.concat.js");
|
|
34
|
+
|
|
35
|
+
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
36
|
+
|
|
37
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
38
|
+
|
|
39
|
+
var _path = _interopRequireDefault(require("path"));
|
|
40
|
+
|
|
41
|
+
var _datasets = require("../datasets");
|
|
42
|
+
|
|
43
|
+
var _file_systems = require("../file_systems");
|
|
44
|
+
|
|
45
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
46
|
+
|
|
47
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
48
|
+
|
|
49
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
50
|
+
|
|
51
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
52
|
+
|
|
53
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
54
|
+
|
|
55
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
56
|
+
|
|
57
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
58
|
+
|
|
59
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
60
|
+
|
|
61
|
+
var optionsDefinitions = [{
|
|
7
62
|
alias: "s",
|
|
8
63
|
help: "don't log anything",
|
|
9
64
|
name: "silent",
|
|
@@ -19,51 +74,78 @@ const optionsDefinitions = [{
|
|
|
19
74
|
name: "dataDir",
|
|
20
75
|
type: String
|
|
21
76
|
}];
|
|
22
|
-
|
|
77
|
+
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
23
78
|
|
|
24
79
|
function mergeScrutins(dataDir) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
80
|
+
var _iterator = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
81
|
+
_step;
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
85
|
+
var dataset = _step.value;
|
|
86
|
+
|
|
87
|
+
switch (dataset.structure) {
|
|
88
|
+
case _datasets.DatasetStructure.SegmentedFiles:
|
|
89
|
+
{
|
|
90
|
+
var originalJsonDir = _path["default"].join(dataDir, dataset.filename);
|
|
34
91
|
|
|
35
|
-
|
|
36
|
-
|
|
92
|
+
if (!options.silent) {
|
|
93
|
+
console.log("Merging ".concat(originalJsonDir));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var datasetMergedFilePath = _path["default"].join(dataDir, _path["default"].basename(originalJsonDir, ".json") + "_fusionne.json");
|
|
97
|
+
|
|
98
|
+
var scrutins = [];
|
|
99
|
+
|
|
100
|
+
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir)),
|
|
101
|
+
_step2;
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
105
|
+
var scrutinSplitPath = _step2.value;
|
|
106
|
+
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
107
|
+
|
|
108
|
+
if (!scrutinFilename.endsWith(".json")) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
37
111
|
|
|
38
|
-
|
|
39
|
-
const scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
112
|
+
var scrutinOriginalFilePath = _path["default"].join.apply(_path["default"], [originalJsonDir].concat(_toConsumableArray(scrutinSplitPath)));
|
|
40
113
|
|
|
41
|
-
|
|
42
|
-
|
|
114
|
+
var scrutinOriginalJson = _fsExtra["default"].readFileSync(scrutinOriginalFilePath, {
|
|
115
|
+
encoding: "utf8"
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
var scrutinOriginal = JSON.parse(scrutinOriginalJson);
|
|
119
|
+
var scrutin = scrutinOriginal.scrutin;
|
|
120
|
+
scrutins.push(scrutin);
|
|
121
|
+
}
|
|
122
|
+
} catch (err) {
|
|
123
|
+
_iterator2.e(err);
|
|
124
|
+
} finally {
|
|
125
|
+
_iterator2.f();
|
|
43
126
|
}
|
|
44
127
|
|
|
45
|
-
|
|
46
|
-
|
|
128
|
+
scrutins.sort(function (a, b) {
|
|
129
|
+
return a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length;
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
_fsExtra["default"].writeFileSync(datasetMergedFilePath, JSON.stringify({
|
|
133
|
+
scrutins: {
|
|
134
|
+
scrutin: scrutins
|
|
135
|
+
}
|
|
136
|
+
}, null, 2), {
|
|
47
137
|
encoding: "utf8"
|
|
48
138
|
});
|
|
49
|
-
const scrutinOriginal = JSON.parse(scrutinOriginalJson);
|
|
50
|
-
const scrutin = scrutinOriginal.scrutin;
|
|
51
|
-
scrutins.push(scrutin);
|
|
52
139
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
fs.writeFileSync(datasetMergedFilePath, JSON.stringify({
|
|
56
|
-
scrutins: {
|
|
57
|
-
scrutin: scrutins
|
|
58
|
-
}
|
|
59
|
-
}, null, 2), {
|
|
60
|
-
encoding: "utf8"
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
64
142
|
}
|
|
143
|
+
} catch (err) {
|
|
144
|
+
_iterator.e(err);
|
|
145
|
+
} finally {
|
|
146
|
+
_iterator.f();
|
|
65
147
|
}
|
|
66
148
|
}
|
|
67
149
|
|
|
68
150
|
mergeScrutins(options.dataDir);
|
|
69
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0T3B0aW9uIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsIm1lcmdlU2NydXRpbnMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJzY3J1dGlucyIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImRhdGFzZXRNZXJnZWRGaWxlUGF0aCIsImJhc2VuYW1lIiwid2Fsa0RpciIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJsZW5ndGgiLCJlbmRzV2l0aCIsInNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoIiwic2NydXRpbk9yaWdpbmFsSnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJzY3J1dGluT3JpZ2luYWwiLCJKU09OIiwicGFyc2UiLCJzY3J1dGluIiwicHVzaCIsInNvcnQiLCJhIiwiYiIsInVpZCIsImxvY2FsZUNvbXBhcmUiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvbWVyZ2Vfc2NydXRpbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5mdW5jdGlvbiBtZXJnZVNjcnV0aW5zKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBNZXJnaW5nICR7b3JpZ2luYWxKc29uRGlyfWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGF0YXNldE1lcmdlZEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgZGF0YURpcixcbiAgICAgICAgICAgIHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyLCBcIi5qc29uXCIpICsgXCJfZnVzaW9ubmUuanNvblwiLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IHNjcnV0aW5zID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPVxuICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICBjb25zdCBzY3J1dGluID0gc2NydXRpbk9yaWdpbmFsLnNjcnV0aW5cbiAgICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICB9XG4gICAgICAgICAgc2NydXRpbnMuc29ydCgoYTogeyB1aWQ6IHN0cmluZyB9LCBiOiB7IHVpZDogc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICBkYXRhc2V0TWVyZ2VkRmlsZVBhdGgsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IHNjcnV0aW5zOiB7IHNjcnV0aW46IHNjcnV0aW5zIH0gfSwgbnVsbCwgMiksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbm1lcmdlU2NydXRpbnMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxvQkFGUjtFQUdFQyxJQUFJLEVBQUUsUUFIUjtFQUlFQyxJQUFJLEVBQUVDO0FBSlIsQ0FEeUIsRUFPekI7RUFDRUosS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLGNBRlI7RUFHRUMsSUFBSSxFQUFFLFNBSFI7RUFJRUMsSUFBSSxFQUFFQztBQUpSLENBUHlCLEVBYXpCO0VBQ0VDLGFBQWEsRUFBRSxJQURqQjtFQUVFSixJQUFJLEVBQUUsZ0RBRlI7RUFHRUMsSUFBSSxFQUFFLFNBSFI7RUFJRUMsSUFBSSxFQUFFRztBQUpSLENBYnlCLENBQTNCO0FBb0JB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
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import commandLineArgs from "command-line-args";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { datasets, DatasetStructure } from "../datasets.mjs";
|
|
5
|
+
import { walkDir } from "../file_systems.mjs";
|
|
6
|
+
const optionsDefinitions = [{
|
|
7
|
+
alias: "s",
|
|
8
|
+
help: "don't log anything",
|
|
9
|
+
name: "silent",
|
|
10
|
+
type: Boolean
|
|
11
|
+
}, {
|
|
12
|
+
alias: "v",
|
|
13
|
+
help: "verbose logs",
|
|
14
|
+
name: "verbose",
|
|
15
|
+
type: Boolean
|
|
16
|
+
}, {
|
|
17
|
+
defaultOption: true,
|
|
18
|
+
help: "directory containing Assemblée open data files",
|
|
19
|
+
name: "dataDir",
|
|
20
|
+
type: String
|
|
21
|
+
}];
|
|
22
|
+
const options = commandLineArgs(optionsDefinitions);
|
|
23
|
+
|
|
24
|
+
function mergeScrutins(dataDir) {
|
|
25
|
+
for (const dataset of datasets.scrutins) {
|
|
26
|
+
switch (dataset.structure) {
|
|
27
|
+
case DatasetStructure.SegmentedFiles:
|
|
28
|
+
{
|
|
29
|
+
const originalJsonDir = path.join(dataDir, dataset.filename);
|
|
30
|
+
|
|
31
|
+
if (!options.silent) {
|
|
32
|
+
console.log(`Merging ${originalJsonDir}`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const datasetMergedFilePath = path.join(dataDir, path.basename(originalJsonDir, ".json") + "_fusionne.json");
|
|
36
|
+
const scrutins = [];
|
|
37
|
+
|
|
38
|
+
for (const scrutinSplitPath of walkDir(originalJsonDir)) {
|
|
39
|
+
const scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
40
|
+
|
|
41
|
+
if (!scrutinFilename.endsWith(".json")) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const scrutinOriginalFilePath = path.join(originalJsonDir, ...scrutinSplitPath);
|
|
46
|
+
const scrutinOriginalJson = fs.readFileSync(scrutinOriginalFilePath, {
|
|
47
|
+
encoding: "utf8"
|
|
48
|
+
});
|
|
49
|
+
const scrutinOriginal = JSON.parse(scrutinOriginalJson);
|
|
50
|
+
const scrutin = scrutinOriginal.scrutin;
|
|
51
|
+
scrutins.push(scrutin);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
scrutins.sort((a, b) => a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length);
|
|
55
|
+
fs.writeFileSync(datasetMergedFilePath, JSON.stringify({
|
|
56
|
+
scrutins: {
|
|
57
|
+
scrutin: scrutins
|
|
58
|
+
}
|
|
59
|
+
}, null, 2), {
|
|
60
|
+
encoding: "utf8"
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
mergeScrutins(options.dataDir);
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdE9wdGlvbiIsIlN0cmluZyIsIm9wdGlvbnMiLCJtZXJnZVNjcnV0aW5zIiwiZGF0YURpciIsImRhdGFzZXQiLCJzY3J1dGlucyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImRhdGFzZXRNZXJnZWRGaWxlUGF0aCIsImJhc2VuYW1lIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJzY3J1dGluT3JpZ2luYWwiLCJKU09OIiwicGFyc2UiLCJzY3J1dGluIiwicHVzaCIsInNvcnQiLCJhIiwiYiIsInVpZCIsImxvY2FsZUNvbXBhcmUiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvbWVyZ2Vfc2NydXRpbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5mdW5jdGlvbiBtZXJnZVNjcnV0aW5zKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBNZXJnaW5nICR7b3JpZ2luYWxKc29uRGlyfWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGF0YXNldE1lcmdlZEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgZGF0YURpcixcbiAgICAgICAgICAgIHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyLCBcIi5qc29uXCIpICsgXCJfZnVzaW9ubmUuanNvblwiLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IHNjcnV0aW5zID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPVxuICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICBjb25zdCBzY3J1dGluID0gc2NydXRpbk9yaWdpbmFsLnNjcnV0aW5cbiAgICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICB9XG4gICAgICAgICAgc2NydXRpbnMuc29ydCgoYTogeyB1aWQ6IHN0cmluZyB9LCBiOiB7IHVpZDogc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICBkYXRhc2V0TWVyZ2VkRmlsZVBhdGgsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IHNjcnV0aW5zOiB7IHNjcnV0aW46IHNjcnV0aW5zIH0gfSwgbnVsbCwgMiksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbm1lcmdlU2NydXRpbnMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFQLE1BQTRCLG1CQUE1QjtBQUNBLE9BQU9DLEVBQVAsTUFBZSxVQUFmO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixNQUFqQjtTQUVTQyxRLEVBQVVDLGdCO1NBQ1ZDLE87QUFFVCxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtFQUNFQyxLQUFLLEVBQUUsR0FEVDtFQUVFQyxJQUFJLEVBQUUsb0JBRlI7RUFHRUMsSUFBSSxFQUFFLFFBSFI7RUFJRUMsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0VBQ0VKLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxjQUZSO0VBR0VDLElBQUksRUFBRSxTQUhSO0VBSUVDLElBQUksRUFBRUM7QUFKUixDQVB5QixFQWF6QjtFQUNFQyxhQUFhLEVBQUUsSUFEakI7RUFFRUosSUFBSSxFQUFFLGdEQUZSO0VBR0VDLElBQUksRUFBRSxTQUhSO0VBSUVDLElBQUks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
|