@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
97 lines (96 loc) • 16.3 kB
JavaScript
;
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.symbol.iterator.js");
require("core-js/modules/es.array.from.js");
require("core-js/modules/es.array.is-array.js");
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.array.slice.js");
require("core-js/modules/es.date.to-string.js");
require("core-js/modules/es.function.name.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.regexp.to-string.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/web.dom-collections.iterator.js");
require("core-js/modules/es.array.concat.js");
require("core-js/modules/es.array.join.js");
require("core-js/modules/es.array.sort.js");
require("core-js/modules/es.date.to-json.js");
require("core-js/modules/es.object.keys.js");
require("core-js/modules/es.string.ends-with.js");
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _path = _interopRequireDefault(require("path"));
var _datasets = require("../datasets");
var _file_systems = require("../file_systems");
var _cli_helpers = require("./shared/cli_helpers");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
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."); }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
var optionsDefinitions = [_cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption];
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
function mergeScrutins(dataDir) {
var _iterator = _createForOfIteratorHelper(_datasets.datasets.scrutins),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var dataset = _step.value;
switch (dataset.structure) {
case _datasets.DatasetStructure.SegmentedFiles:
{
var originalJsonDir = _path["default"].join(dataDir, dataset.filename);
if (!options.silent) {
console.log("Merging ".concat(originalJsonDir));
}
var datasetMergedFilePath = _path["default"].join(dataDir, _path["default"].basename(originalJsonDir, ".json") + "_fusionne.json");
var scrutins = [];
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir)),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var scrutinSplitPath = _step2.value;
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
if (!scrutinFilename.endsWith(".json")) {
continue;
}
var scrutinOriginalFilePath = _path["default"].join.apply(_path["default"], [originalJsonDir].concat(_toConsumableArray(scrutinSplitPath)));
var scrutinOriginalJson = _fsExtra["default"].readFileSync(scrutinOriginalFilePath, {
encoding: "utf8"
});
var scrutinOriginal = JSON.parse(scrutinOriginalJson);
var scrutin = scrutinOriginal.scrutin;
scrutins.push(scrutin);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
scrutins.sort(function (a, b) {
return a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length;
});
_fsExtra["default"].writeFileSync(datasetMergedFilePath, JSON.stringify({
scrutins: {
scrutin: scrutins
}
}, null, 2), {
encoding: "utf8"
});
}
break;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
mergeScrutins(options.dataDir);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9jbGlfaGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwidCIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwibWVyZ2VTY3J1dGlucyIsImRhdGFEaXIiLCJfaXRlcmF0b3IiLCJkYXRhc2V0cyIsInNjcnV0aW5zIiwiX3N0ZXAiLCJkYXRhc2V0Iiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJkYXRhc2V0TWVyZ2VkRmlsZVBhdGgiLCJiYXNlbmFtZSIsIl9pdGVyYXRvcjIiLCJ3YWxrRGlyIiwiX3N0ZXAyIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsImVuZHNXaXRoIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJhcHBseSIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwic2NydXRpbk9yaWdpbmFsIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbiIsInB1c2giLCJlcnIiLCJzb3J0IiwiYiIsInVpZCIsImxvY2FsZUNvbXBhcmUiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvbWVyZ2Vfc2NydXRpbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtzaWxlbnRPcHRpb24sIHZlcmJvc2VPcHRpb24sIGRhdGFEaXJEZWZhdWx0T3B0aW9uXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIG1lcmdlU2NydXRpbnMoZGF0YURpcjogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYE1lcmdpbmcgJHtvcmlnaW5hbEpzb25EaXJ9YClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkYXRhc2V0TWVyZ2VkRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBkYXRhRGlyLFxuICAgICAgICAgICAgcGF0aC5iYXNlbmFtZShvcmlnaW5hbEpzb25EaXIsIFwiLmpzb25cIikgKyBcIl9mdXNpb25uZS5qc29uXCIsXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgIHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcixcbiAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgc2NydXRpbnMucHVzaChzY3J1dGluKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzY3J1dGlucy5zb3J0KChhOiB7IHVpZDogc3RyaW5nIH0sIGI6IHsgdWlkOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgIGRhdGFzZXRNZXJnZWRGaWxlUGF0aCxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsgc2NydXRpbnM6IHsgc2NydXRpbjogc2NydXRpbnMgfSB9LCBudWxsLCAyKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxubWVyZ2VTY3J1dGlucyhvcHRpb25zLmRhdGFEaXIpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFB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