one-way-git-sync 6.0.18 → 6.0.19
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/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{hideBin as e}from"yargs/helpers";import t from"yargs/yargs";import{pino as i}from"pino";import o from"node:child_process";import
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnZXIudHMiLCIuLi9zcmMvc3luYy50cyIsIi4uL3NyYy95YXJnc09wdGlvbnMudHMiLCIuLi9zcmMvaW5kZXgudHMiLCIuLi9zcmMvZ2l0SHViLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBpbm8gfSBmcm9tICdwaW5vJztcblxuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IHBpbm8oe1xuICB0cmFuc3BvcnQ6IHtcbiAgICB0YXJnZXQ6ICdwaW5vLXByZXR0eScsXG4gICAgb3B0aW9uczoge1xuICAgICAgY29sb3JpemU6IHRydWUsXG4gICAgfSxcbiAgfSxcbn0pO1xuIiwiaW1wb3J0IGNoaWxkX3Byb2Nlc3MgZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGNvcHkgfSBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgbWljcm9tYXRjaCBmcm9tICdtaWNyb21hdGNoJztcbmltcG9ydCB0eXBlIHsgTG9nUmVzdWx0LCBPcHRpb25zLCBTaW1wbGVHaXQsIFRhc2tPcHRpb25zIH0gZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBzaW1wbGVHaXQgfSBmcm9tICdzaW1wbGUtZ2l0JztcbmltcG9ydCB0eXBlIHsgSW5mZXJyZWRPcHRpb25UeXBlcyB9IGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgZ2V0R2l0SHViQ29tbWl0c1VybCB9IGZyb20gJy4vZ2l0SHViLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgeWFyZ3NPcHRpb25zIH0gZnJvbSAnLi95YXJnc09wdGlvbnMuanMnO1xuXG5jb25zdCBzeW5jRGlyUGF0aCA9IHBhdGguam9pbignbm9kZV9tb2R1bGVzJywgJy50ZW1wJywgJ3N5bmMtZ2l0LXJlcG8nKTtcblxuZXhwb3J0IHR5cGUgWWFyZ3NPcHRpb25zID0gSW5mZXJyZWRPcHRpb25UeXBlczx0eXBlb2YgeWFyZ3NPcHRpb25zPjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bmMob3B0czogWWFyZ3NPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGZzLm1rZGlyKHN5bmNEaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgZGlyUGF0aCA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKHN5bmNEaXJQYXRoLCAncmVwby0nKSk7XG4gIGNvbnN0IHJldCA9IGF3YWl0IHN5bmNDb3JlKGRpclBhdGgsIG9wdHMpO1xuICAvLyBhd2FpdCBmcy5ybShkaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIHByb2Nlc3MuZXhpdChyZXQgPyAwIDogMSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW5jQ29yZShcbiAgZGVzdFJlcG9QYXRoOiBzdHJpbmcsXG4gIG9wdHM6IFlhcmdzT3B0aW9ucyxcbiAgc3JjUmVwb1BhdGggPSBwcm9jZXNzLmN3ZCgpXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tbnVsbFxuICBjb25zdCBjbG9uZU9wdHM6IE9wdGlvbnMgPSB7ICctLXNpbmdsZS1icmFuY2gnOiBudWxsIH07XG4gIGlmICghb3B0cy5mb3JjZSkge1xuICAgIGNsb25lT3B0c1snLS1kZXB0aCddID0gMTtcbiAgfVxuICBpZiAob3B0cy5icmFuY2gpIHtcbiAgICBjbG9uZU9wdHNbJy0tYnJhbmNoJ10gPSBvcHRzLmJyYW5jaDtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IHNpbXBsZUdpdChzcmNSZXBvUGF0aCkuY2xvbmUob3B0cy5kZXN0LCBkZXN0UmVwb1BhdGgsIGNsb25lT3B0cyk7XG4gIH0gY2F0Y2gge1xuICAgIGRlbGV0ZSBjbG9uZU9wdHNbJy0tYnJhbmNoJ107XG4gICAgZGVsZXRlIGNsb25lT3B0c1snLS1zaW5nbGUtYnJhbmNoJ107XG4gICAgYXdhaXQgc2ltcGxlR2l0KHNyY1JlcG9QYXRoKS5jbG9uZShvcHRzLmRlc3QsIGRlc3RSZXBvUGF0aCwgY2xvbmVPcHRzKTtcbiAgICBzaW1wbGVHaXQoZGVzdFJlcG9QYXRoKS5jaGVja291dChbJy1iJywgb3B0cy5icmFuY2hdIGFzIFRhc2tPcHRpb25zKTtcbiAgfVxuICBsb2dnZXIuZGVidWcoYENsb25lZCBkZXN0aW5hdGlvbiByZXBvIG9uICR7ZGVzdFJlcG9QYXRofWApO1xuXG4gIGNvbnN0IGRzdEdpdDogU2ltcGxlR2l0ID0gc2ltcGxlR2l0KGRlc3RSZXBvUGF0aCk7XG4gIGxldCBjb21taXRIYXNoUmVzdWx0OiBbc3RyaW5nLCBzdHJpbmddIHwgW10gPSBbXTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkc3RMb2cgPSBhd2FpdCBkc3RHaXQubG9nKCk7XG4gICAgY29tbWl0SGFzaFJlc3VsdCA9IGV4dHJhY3RDb21taXRIYXNoKGRzdExvZyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuICBjb25zdCBbaGVhZCwgZnJvbV0gPSBjb21taXRIYXNoUmVzdWx0O1xuICBpZiAoZnJvbSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgRXh0cmFjdGVkIGEgdmFsaWQgY29tbWl0OiAke2Zyb219YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGAoJHtoZWFkfSlgKTtcbiAgfSBlbHNlIGlmICghb3B0cy5mb3JjZSkge1xuICAgIGxvZ2dlci5lcnJvcignTm8gdmFsaWQgY29tbWl0IGluIGRlc3RpbmF0aW9uIHJlcG8nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzcmNHaXQ6IFNpbXBsZUdpdCA9IHNpbXBsZUdpdChzcmNSZXBvUGF0aCk7XG4gIGxldCBzcmNMb2c6IExvZ1Jlc3VsdDtcbiAgdHJ5IHtcbiAgICAvLyAnLS1maXJzdC1wYXJlbnQnIGhpZGVzIGNoaWxkcmVuIGNvbW1pdHMgb2YgbWVyZ2UgY29tbWl0c1xuICAgIHNyY0xvZyA9IGF3YWl0IHNyY0dpdC5sb2coZnJvbSA/IHsgZnJvbSwgdG86ICdIRUFEJywgJy0tZmlyc3QtcGFyZW50JzogdW5kZWZpbmVkIH0gOiB1bmRlZmluZWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGdldCBzb3VyY2UgY29tbWl0IGhpc3Rvcnk6ICR7KGVycm9yIGFzIEVycm9yKS5zdGFja31gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsYXRlc3RIYXNoID0gc3JjTG9nLmxhdGVzdD8uaGFzaDtcbiAgaWYgKCFsYXRlc3RIYXNoKSB7XG4gICAgbG9nZ2VyLmluZm8oJ05vIHN5bmNocm9uaXphYmxlIGNvbW1pdCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgW2Rlc3RGaWxlcywgc3JjRmlsZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW2ZzLnJlYWRkaXIoZGVzdFJlcG9QYXRoKSwgZnMucmVhZGRpcihzcmNSZXBvUGF0aCldKTtcbiAgLy8gRm9yY2UgdG8gaWdub3JlIC5naXQgZGlyZWN0b3J5XG4gIGNvbnN0IGlnbm9yZVBhdHRlcm5zID0gWy4uLm5ldyBTZXQoWy4uLm9wdHNbJ2lnbm9yZS1wYXR0ZXJucyddLm1hcChTdHJpbmcpLCAnLmdpdCddKV07XG4gIGZvciAoY29uc3QgZGVzdEZpbGUgb2YgbWljcm9tYXRjaC5ub3QoZGVzdEZpbGVzLCBpZ25vcmVQYXR0ZXJucykpIHtcbiAgICBhd2FpdCBmcy5ybShwYXRoLmpvaW4oZGVzdFJlcG9QYXRoLCBkZXN0RmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxuICBmb3IgKGNvbnN0IHNyY0ZpbGUgb2YgbWljcm9tYXRjaC5ub3Qoc3JjRmlsZXMsIGlnbm9yZVBhdHRlcm5zKSkge1xuICAgIGF3YWl0IGNvcHkocGF0aC5qb2luKHNyY1JlcG9QYXRoLCBzcmNGaWxlKSwgcGF0aC5qb2luKGRlc3RSZXBvUGF0aCwgc3JjRmlsZSkpO1xuICB9XG4gIGF3YWl0IGRzdEdpdC5hZGQoJy1BJyk7XG5cbiAgbGV0IHNyY1RhZyA9ICcnO1xuICBpZiAob3B0c1sndGFnLWhhc2gnXSB8fCBvcHRzWyd0YWctdmVyc2lvbiddKSB7XG4gICAgLy8gZS5nLiBgLS1hYmJyZXY9MGAgY2hhbmdlcyBgdjEuMzEuNS0yLWdjZGRlNTA3YCB0byBgdjEuMzEuNWBcbiAgICBjb25zdCBkZXNjcmliZUNvbW1hbmQgPSBgZ2l0IGRlc2NyaWJlIC0tdGFncyAtLWFsd2F5cyAke29wdHNbJ3RhZy12ZXJzaW9uJ10gPyAnLS1hYmJyZXY9MCcgOiAnJ31gO1xuICAgIHNyY1RhZyA9IGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoZGVzY3JpYmVDb21tYW5kLCB7IGN3ZDogc3JjUmVwb1BhdGggfSkudG9TdHJpbmcoKS50cmltKCk7XG4gIH1cbiAgbGV0IHByZWZpeCA9IG9wdHMucHJlZml4ID8/IChhd2FpdCBnZXRHaXRIdWJDb21taXRzVXJsKHNyY0dpdCkpID8/ICcnO1xuICBpZiAocHJlZml4ICYmICFwcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgIHByZWZpeCArPSAnLyc7XG4gIH1cbiAgY29uc3QgbGluayA9IGAke3ByZWZpeH0ke2xhdGVzdEhhc2h9YDtcbiAgY29uc3QgdGl0bGUgPSBzcmNUYWcgPyBgc3luYyAke3NyY1RhZ30gKCR7bGlua30pYCA6IGBzeW5jICR7bGlua31gO1xuICBjb25zdCBib2R5ID0gZnJvbVxuICAgID8gc3JjTG9nLmFsbC5tYXAoKGwpID0+IGAqICR7bC5tZXNzYWdlfWApLmpvaW4oJ1xcblxcbicpXG4gICAgOiBgUmVwbGFjZSBhbGwgdGhlIGZpbGVzIHdpdGggdGhvc2Ugb2YgJHtvcHRzLmRlc3R9IGR1ZSB0byBtaXNzaW5nIHN5bmMgY29tbWl0LmA7XG4gIHRyeSB7XG4gICAgYXdhaXQgZHN0R2l0LmNvbW1pdChgJHt0aXRsZX1cXG5cXG4ke2JvZHl9YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGBDcmVhdGVkIGEgY29tbWl0OiAke3RpdGxlfWApO1xuICAgIGxvZ2dlci5kZWJ1ZyhgICB3aXRoIGJvZHk6ICR7Ym9keX1gKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBjb21taXQgY2hhbmdlczogJHsoZXJyb3IgYXMgRXJyb3IpLnN0YWNrfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRlc3RUYWcgPSBzcmNUYWcgfHwgb3B0cy50YWc7XG4gIGlmIChkZXN0VGFnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRzdEdpdC5hZGRUYWcoZGVzdFRhZyk7XG4gICAgICBsb2dnZXIuZGVidWcoYENyZWF0ZWQgYSB0YWc6ICR7ZGVzdFRhZ31gKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZSB0aGUgZXJyb3Igc2luY2UgYC0tYWJicmV2PTBgIG1heSB5aWVsZCBhIHRhZyB0aGF0IGFscmVhZHkgZXhpc3RzXG4gICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBhIHRhZzogJHtkZXN0VGFnfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmRyeSkge1xuICAgIGxvZ2dlci5kZWJ1ZygnRmluaXNoZWQgZHJ5IHJ1bicpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCAob3B0cy5icmFuY2ggPyBkc3RHaXQucHVzaCgnb3JpZ2luJywgb3B0cy5icmFuY2gpIDogZHN0R2l0LnB1c2goKSk7XG4gICAgaWYgKGRlc3RUYWcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLW51bGxcbiAgICAgIGF3YWl0IGRzdEdpdC5wdXNoKHsgJy0tdGFncyc6IG51bGwgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHB1c2ggdGhlIGNvbW1pdDogJHsoZXJyb3IgYXMgRXJyb3IpLnN0YWNrfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZygnUHVzaGVkIHRoZSBjb21taXQnKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RDb21taXRIYXNoKGxvZ1Jlc3VsdDogTG9nUmVzdWx0KTogW3N0cmluZywgc3RyaW5nXSB8IFtdIHtcbiAgaWYgKGxvZ1Jlc3VsdC5hbGwubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdObyBjb21taXQgaGlzdG9yeScpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgbG9nIG9mIGxvZ1Jlc3VsdC5hbGwpIHtcbiAgICBjb25zdCBbaGVhZCwgLi4ud29yZHNdID0gbG9nLm1lc3NhZ2UucmVwbGFjZUFsbCgvWygpXS9nLCAnJykuc3BsaXQoL1tcXHMvXS8pO1xuICAgIGlmIChoZWFkID09PSAnc3luYycgJiYgd29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIFtsb2cubWVzc2FnZSwgd29yZHMuYXQoLTEpIGFzIHN0cmluZ107XG4gICAgfVxuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgTm8gc3luYyBjb21taXQ6ICR7bG9nUmVzdWx0LmFsbFswXS5tZXNzYWdlfWApO1xuICByZXR1cm4gW107XG59XG4iLCJleHBvcnQgY29uc3QgeWFyZ3NPcHRpb25zID0ge1xuICBkZXN0OiB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICdkJyxcbiAgICBkZXNjcmliZTogJ0EgVVJMIG9mIGEgZGVzdGluYXRpb24gZ2l0IHJlcG9zaXRvcnkuJyxcbiAgICBkZW1hbmQ6IHRydWUsXG4gIH0sXG4gIHByZWZpeDoge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIGFsaWFzOiAncCcsXG4gICAgZGVzY3JpYmU6IGBBIHByZWZpeCBvZiBhIGNvbW1pdCBoYXNoIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb21taXQgdGl0bGUsIGUuZy4gJ3N5bmMgPHByZWZpeD4vPGhhc2g+Jy5cbiAgICAgICAgICAgICAgIEEgdHlwaWNhbCB2YWx1ZSBpcyBsaWtlICdodHRwczovL2dpdGh1Yi5jb20vV2lsbEJvb3N0ZXIvb25lLXdheS1naXQtc3luYy9jb21taXRzJ2AsXG4gIH0sXG4gIGJyYW5jaDoge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIGFsaWFzOiAnYicsXG4gICAgZGVzY3JpYmU6ICdTcGVjaWZ5IGJyYW5jaCBvZiBkZXN0aW5hdGlvbiByZXBvLicsXG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIGFsaWFzOiAndCcsXG4gICAgZGVzY3JpYmU6ICdTcGVjaWZ5IHRhZyB0byBiZSBjcmVhdGVkIGluIGRlc3RpbmF0aW9uIHJlcG8uJyxcbiAgfSxcbiAgJ3RhZy1oYXNoJzoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmliZTogJ0NyZWF0ZSB2ZXJzaW9uK2hhc2ggdGFnIChlLmcuIHYxLjMxLjUtMi1nY2RkZTUwNykuIEl0IHNob3VsZCBiZSBhIHVuaXF1ZSB0YWcuJyxcbiAgfSxcbiAgJ3RhZy12ZXJzaW9uJzoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmliZTogJ0NyZWF0ZSB2ZXJzaW9uIHRhZyAoZS5nLiB2MS4zMS41KS4gSXQgY291bGQgYmUgYSBub24tdW5pcXVlIHRhZy4nLFxuICB9LFxuICAnaWdub3JlLXBhdHRlcm5zJzoge1xuICAgIHR5cGU6ICdhcnJheScsXG4gICAgYWxpYXM6ICdpJyxcbiAgICBkZXNjcmliZTogYEV4Y2x1ZGUgdGhlIGZpbGVzIHdob3NlIHBhdGggbWF0Y2hlcyBvbmUgb2YgdGhlIGdpdmVuIHBhdHRlcm5zLlxuICAgICAgICAgICAgICAgVGhlIHBhdHRlcm5zIGFyZSBwcm9jZXNzZWQgYnkgbWljcm9tYXRjaCAoaHR0cHM6Ly9naXRodWIuY29tL21pY3JvbWF0Y2gvbWljcm9tYXRjaCkuXG4gICAgICAgICAgICAgICBZb3UgbWF5IHNwZWNpZnkgdGhlIG9wdGlvbiBtdWx0aXBsZSB0aW1lcy4gRGVmYXVsdCB2YWx1ZSBpcyBcIi1pIC5naXQgLWkgLmdpdGh1YiAtaSBub2RlX21vZHVsZXMgLWkgJy5yZW5vdmF0ZXJjLionXCJgLFxuICAgIGRlZmF1bHQ6IFsnLmdpdCcsICcuZ2l0aHViJywgJ25vZGVfbW9kdWxlcycsICcucmVub3ZhdGVyYy4qJywgJ3Jlbm92YXRlLionXSxcbiAgfSxcbiAgZHJ5OiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaWJlOiAnRW5hYmxlIGRyeS1ydW4gbW9kZS4nLFxuICB9LFxuICBmb3JjZToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmliZTogJ0ZvcmNlIHRvIG92ZXJ3cml0ZSB0aGUgZGVzdGluYXRpb24gZ2l0IHJlcG9zaXRvcnkuJyxcbiAgfSxcbiAgdmVyYm9zZToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBhbGlhczogJ3YnLFxuICAgIGRlc2NyaWJlOiAnU2hvdyBkZXRhaWxzIGxvZ3MuJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBoaWRlQmluIH0gZnJvbSAneWFyZ3MvaGVscGVycyc7XG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MveWFyZ3MnO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBzeW5jIH0gZnJvbSAnLi9zeW5jLmpzJztcbmltcG9ydCB7IHlhcmdzT3B0aW9ucyB9IGZyb20gJy4veWFyZ3NPcHRpb25zLmpzJztcblxuY29uc3QgYXJndiA9IGF3YWl0IHlhcmdzKGhpZGVCaW4ocHJvY2Vzcy5hcmd2KSlcbiAgLnNjcmlwdE5hbWUoJ29uZS13YXktZ2l0LXN5bmMnKVxuICAub3B0aW9ucyh5YXJnc09wdGlvbnMpXG4gIC5taWRkbGV3YXJlKChhcmd2KSA9PiB7XG4gICAgbG9nZ2VyLmxldmVsID0gYXJndi52ZXJib3NlID8gJ3RyYWNlJyA6ICdpbmZvJztcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5oZWxwKCkuYXJndjtcbmF3YWl0IHN5bmMoYXJndik7XG4iLCJpbXBvcnQgdHlwZSB7IFNpbXBsZUdpdCB9IGZyb20gJ3NpbXBsZS1naXQnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0R2l0SHViQ29tbWl0c1VybChnaXQ6IFNpbXBsZUdpdCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJlbW90ZXMgPSBhd2FpdCBnaXQuZ2V0UmVtb3Rlcyh0cnVlKTtcbiAgY29uc3Qgb3JpZ2luID0gcmVtb3Rlcy5maW5kKChyKSA9PiByLm5hbWUgPT09ICdvcmlnaW4nKTtcbiAgY29uc3QgcmVtb3RlVXJsID0gb3JpZ2luPy5yZWZzPy5mZXRjaCA/PyBvcmlnaW4/LnJlZnM/LnB1c2g7XG4gIGlmICh0eXBlb2YgcmVtb3RlVXJsID09PSAnc3RyaW5nJyAmJiByZW1vdGVVcmwuaW5jbHVkZXMoJ2dpdGh1Yi5jb20nKSkge1xuICAgIGNvbnN0IHdvcmRzID0gcmVtb3RlVXJsLnNwbGl0KCcvJyk7XG4gICAgY29uc3Qgb3JnID0gd29yZHMuYXQoLTIpO1xuICAgIGNvbnN0IG5hbWUgPSB3b3Jkcy5hdCgtMSk/LnJlcGxhY2UoLy5naXQkLywgJycpO1xuICAgIGlmIChvcmcgJiYgbmFtZSkgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtvcmd9LyR7bmFtZX0vY29tbWl0c2A7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJsb2dnZXIiLCJwaW5vIiwidHJhbnNwb3J0IiwidGFyZ2V0Iiwib3B0aW9ucyIsImNvbG9yaXplIiwic3luY0RpclBhdGgiLCJwYXRoIiwiam9pbiIsInlhcmdzT3B0aW9ucyIsImRlc3QiLCJ0eXBlIiwiYWxpYXMiLCJkZXNjcmliZSIsImRlbWFuZCIsInByZWZpeCIsImJyYW5jaCIsInRhZyIsImRlZmF1bHQiLCJkcnkiLCJmb3JjZSIsInZlcmJvc2UiLCJhcmd2IiwieWFyZ3MiLCJoaWRlQmluIiwicHJvY2VzcyIsInNjcmlwdE5hbWUiLCJtaWRkbGV3YXJlIiwibGV2ZWwiLCJzdHJpY3QiLCJoZWxwIiwiYXN5bmMiLCJvcHRzIiwiZnMiLCJta2RpciIsInJlY3Vyc2l2ZSIsImRpclBhdGgiLCJta2R0ZW1wIiwicmV0IiwiZGVzdFJlcG9QYXRoIiwic3JjUmVwb1BhdGgiLCJjd2QiLCJjbG9uZU9wdHMiLCJzaW1wbGVHaXQiLCJjbG9uZSIsImNoZWNrb3V0IiwiZGVidWciLCJkc3RHaXQiLCJjb21taXRIYXNoUmVzdWx0IiwibG9nUmVzdWx0IiwiYWxsIiwibGVuZ3RoIiwibG9nIiwiaGVhZCIsIndvcmRzIiwibWVzc2FnZSIsInJlcGxhY2VBbGwiLCJzcGxpdCIsImF0IiwiZXh0cmFjdENvbW1pdEhhc2giLCJmcm9tIiwiZXJyb3IiLCJzcmNHaXQiLCJzcmNMb2ciLCJ0byIsInVuZGVmaW5lZCIsInN0YWNrIiwibGF0ZXN0SGFzaCIsImxhdGVzdCIsImhhc2giLCJpbmZvIiwiZGVzdEZpbGVzIiwic3JjRmlsZXMiLCJQcm9taXNlIiwicmVhZGRpciIsImlnbm9yZVBhdHRlcm5zIiwiU2V0IiwibWFwIiwiU3RyaW5nIiwiZGVzdEZpbGUiLCJtaWNyb21hdGNoIiwibm90Iiwicm0iLCJzcmNGaWxlIiwiY29weSIsImFkZCIsInNyY1RhZyIsImRlc2NyaWJlQ29tbWFuZCIsImNoaWxkX3Byb2Nlc3MiLCJleGVjU3luYyIsInRvU3RyaW5nIiwidHJpbSIsImdpdCIsIm9yaWdpbiIsImdldFJlbW90ZXMiLCJmaW5kIiwiciIsIm5hbWUiLCJyZW1vdGVVcmwiLCJyZWZzIiwiZmV0Y2giLCJwdXNoIiwiaW5jbHVkZXMiLCJvcmciLCJyZXBsYWNlIiwiZ2V0R2l0SHViQ29tbWl0c1VybCIsImVuZHNXaXRoIiwibGluayIsInRpdGxlIiwiYm9keSIsImwiLCJjb21taXQiLCJkZXN0VGFnIiwiYWRkVGFnIiwid2FybiIsInN5bmNDb3JlIiwiZXhpdCIsInN5bmMiXSwibWFwcGluZ3MiOiIyUkFFTyxNQUFNQSxFQUFT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
|
|
1
|
+
import{hideBin as e}from"yargs/helpers";import t from"yargs/yargs";import{pino as i}from"pino";import o from"node:child_process";import r from"node:fs/promises";import a from"node:path";import{copy as s}from"fs-extra";import n from"micromatch";import{simpleGit as c}from"simple-git";const d=i({transport:{target:"pino-pretty",options:{colorize:!0}}});const l=a.join("node_modules",".temp","sync-git-repo");const m={dest:{type:"string",alias:"d",describe:"A URL of a destination git repository.",demand:!0},prefix:{type:"string",alias:"p",describe:"A prefix of a commit hash used to generate a commit title, e.g. 'sync <prefix>/<hash>'.\n A typical value is like 'https://github.com/WillBooster/one-way-git-sync/commits'"},branch:{type:"string",alias:"b",describe:"Specify branch of destination repo."},tag:{type:"string",alias:"t",describe:"Specify tag to be created in destination repo."},"tag-hash":{type:"boolean",describe:"Create version+hash tag (e.g. v1.31.5-2-gcdde507). It should be a unique tag."},"tag-version":{type:"boolean",describe:"Create version tag (e.g. v1.31.5). It could be a non-unique tag."},"ignore-patterns":{type:"array",alias:"i",describe:"Exclude the files whose path matches one of the given patterns.\n The patterns are processed by micromatch (https://github.com/micromatch/micromatch).\n You may specify the option multiple times. Default value is \"-i .git -i .github -i node_modules -i '.renovaterc.*' -i '.renovate.*'\"",default:[".git",".github","node_modules",".renovaterc.*","renovate.*"]},dry:{type:"boolean",describe:"Enable dry-run mode."},force:{type:"boolean",describe:"Force to overwrite the destination git repository."},verbose:{type:"boolean",alias:"v",describe:"Show details logs."}},g=await t(e(process.argv)).scriptName("one-way-git-sync").options(m).middleware((e=>{d.level=e.verbose?"trace":"info"})).strict().help().argv;await async function(e){await r.mkdir(l,{recursive:!0});const t=await r.mkdtemp(a.join(l,"repo-")),i=await async function(e,t,i=process.cwd()){const l={"--single-branch":null};t.force||(l["--depth"]=1);t.branch&&(l["--branch"]=t.branch);try{await c(i).clone(t.dest,e,l)}catch{delete l["--branch"],delete l["--single-branch"],await c(i).clone(t.dest,e,l),c(e).checkout(["-b",t.branch])}d.debug(`Cloned destination repo on ${e}`);const m=c(e);let g=[];try{g=function(e){if(0===e.all.length)return d.debug("No commit history"),[];for(const t of e.all){const[e,...i]=t.message.replaceAll(/[()]/g,"").split(/[\s/]/);if("sync"===e&&i.length>0)return[t.message,i.at(-1)]}return d.debug(`No sync commit: ${e.all[0].message}`),[]}(await m.log())}catch{}const[p,h]=g;if(h)d.debug(`Extracted a valid commit: ${h}`),d.debug(`(${p})`);else if(!t.force)return d.error("No valid commit in destination repo"),!1;const u=c(i);let f;try{f=await u.log(h?{from:h,to:"HEAD","--first-parent":void 0}:void 0)}catch(e){return d.error(`Failed to get source commit history: ${e.stack}`),!1}const b=f.latest?.hash;if(!b)return d.info("No synchronizable commit"),!0;const y=[...new Set([...t["ignore-patterns"].map(String),".git"])];let[w,v]=await Promise.all([r.readdir(e),r.readdir(i)]);w=n.not(w,y),v=n.not(v,y),d.debug("destFiles: %o",w),d.debug("srcFiles: %o",v);for(const t of w)await r.rm(a.join(e,t),{recursive:!0,force:!0});for(const t of v)await s(a.join(i,t),a.join(e,t));await m.add("-A");let $="";if(t["tag-hash"]||t["tag-version"]){const e="git describe --tags --always "+(t["tag-version"]?"--abbrev=0":"");$=o.execSync(e,{cwd:i}).toString().trim()}let x=t.prefix??await async function(e){const t=(await e.getRemotes(!0)).find((e=>"origin"===e.name)),i=t?.refs?.fetch??t?.refs?.push;if("string"==typeof i&&i.includes("github.com")){const e=i.split("/"),t=e.at(-2),o=e.at(-1)?.replace(/.git$/,"");if(t&&o)return`https://github.com/${t}/${o}/commits`}}(u)??"";x&&!x.endsWith("/")&&(x+="/");const F=`${x}${b}`,k=$?`sync ${$} (${F})`:`sync ${F}`,S=h?f.all.map((e=>`* ${e.message}`)).join("\n\n"):`Replace all the files with those of ${t.dest} due to missing sync commit.`;try{const e=await m.commit(`${k}\n\n${S}`);d.debug("Created a commit: %o",e),d.debug(k),d.debug(` with body: ${S}`)}catch(e){return d.error(`Failed to commit changes: ${e.stack}`),!1}const j=$||t.tag;if(j)try{await m.addTag(j),d.debug(`Created a tag: ${j}`)}catch{d.warn(`Failed to create a tag: ${j}`)}if(t.dry)return d.debug("Finished dry run"),!0;try{await(t.branch?m.push("origin",t.branch):m.push()),j&&await m.push({"--tags":null})}catch(e){return d.error(`Failed to push the commit: ${e.stack}`),!1}return d.debug("Pushed the commit"),!0}(t,e);process.exit(i?0:1)}(g);
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnZXIudHMiLCIuLi9zcmMvc3luYy50cyIsIi4uL3NyYy95YXJnc09wdGlvbnMudHMiLCIuLi9zcmMvaW5kZXgudHMiLCIuLi9zcmMvZ2l0SHViLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBpbm8gfSBmcm9tICdwaW5vJztcblxuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IHBpbm8oe1xuICB0cmFuc3BvcnQ6IHtcbiAgICB0YXJnZXQ6ICdwaW5vLXByZXR0eScsXG4gICAgb3B0aW9uczoge1xuICAgICAgY29sb3JpemU6IHRydWUsXG4gICAgfSxcbiAgfSxcbn0pO1xuIiwiaW1wb3J0IGNoaWxkX3Byb2Nlc3MgZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGNvcHkgfSBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgbWljcm9tYXRjaCBmcm9tICdtaWNyb21hdGNoJztcbmltcG9ydCB0eXBlIHsgTG9nUmVzdWx0LCBPcHRpb25zLCBTaW1wbGVHaXQsIFRhc2tPcHRpb25zIH0gZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBzaW1wbGVHaXQgfSBmcm9tICdzaW1wbGUtZ2l0JztcbmltcG9ydCB0eXBlIHsgSW5mZXJyZWRPcHRpb25UeXBlcyB9IGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgZ2V0R2l0SHViQ29tbWl0c1VybCB9IGZyb20gJy4vZ2l0SHViLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgeWFyZ3NPcHRpb25zIH0gZnJvbSAnLi95YXJnc09wdGlvbnMuanMnO1xuXG5jb25zdCBzeW5jRGlyUGF0aCA9IHBhdGguam9pbignbm9kZV9tb2R1bGVzJywgJy50ZW1wJywgJ3N5bmMtZ2l0LXJlcG8nKTtcblxuZXhwb3J0IHR5cGUgWWFyZ3NPcHRpb25zID0gSW5mZXJyZWRPcHRpb25UeXBlczx0eXBlb2YgeWFyZ3NPcHRpb25zPjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bmMob3B0czogWWFyZ3NPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGZzLm1rZGlyKHN5bmNEaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgZGlyUGF0aCA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKHN5bmNEaXJQYXRoLCAncmVwby0nKSk7XG4gIGNvbnN0IHJldCA9IGF3YWl0IHN5bmNDb3JlKGRpclBhdGgsIG9wdHMpO1xuICAvLyBhd2FpdCBmcy5ybShkaXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIHByb2Nlc3MuZXhpdChyZXQgPyAwIDogMSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW5jQ29yZShcbiAgZGVzdFJlcG9QYXRoOiBzdHJpbmcsXG4gIG9wdHM6IFlhcmdzT3B0aW9ucyxcbiAgc3JjUmVwb1BhdGggPSBwcm9jZXNzLmN3ZCgpXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tbnVsbFxuICBjb25zdCBjbG9uZU9wdHM6IE9wdGlvbnMgPSB7ICctLXNpbmdsZS1icmFuY2gnOiBudWxsIH07XG4gIGlmICghb3B0cy5mb3JjZSkge1xuICAgIGNsb25lT3B0c1snLS1kZXB0aCddID0gMTtcbiAgfVxuICBpZiAob3B0cy5icmFuY2gpIHtcbiAgICBjbG9uZU9wdHNbJy0tYnJhbmNoJ10gPSBvcHRzLmJyYW5jaDtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IHNpbXBsZUdpdChzcmNSZXBvUGF0aCkuY2xvbmUob3B0cy5kZXN0LCBkZXN0UmVwb1BhdGgsIGNsb25lT3B0cyk7XG4gIH0gY2F0Y2gge1xuICAgIGRlbGV0ZSBjbG9uZU9wdHNbJy0tYnJhbmNoJ107XG4gICAgZGVsZXRlIGNsb25lT3B0c1snLS1zaW5nbGUtYnJhbmNoJ107XG4gICAgYXdhaXQgc2ltcGxlR2l0KHNyY1JlcG9QYXRoKS5jbG9uZShvcHRzLmRlc3QsIGRlc3RSZXBvUGF0aCwgY2xvbmVPcHRzKTtcbiAgICBzaW1wbGVHaXQoZGVzdFJlcG9QYXRoKS5jaGVja291dChbJy1iJywgb3B0cy5icmFuY2hdIGFzIFRhc2tPcHRpb25zKTtcbiAgfVxuICBsb2dnZXIuZGVidWcoYENsb25lZCBkZXN0aW5hdGlvbiByZXBvIG9uICR7ZGVzdFJlcG9QYXRofWApO1xuXG4gIGNvbnN0IGRzdEdpdDogU2ltcGxlR2l0ID0gc2ltcGxlR2l0KGRlc3RSZXBvUGF0aCk7XG4gIGxldCBjb21taXRIYXNoUmVzdWx0OiBbc3RyaW5nLCBzdHJpbmddIHwgW10gPSBbXTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkc3RMb2cgPSBhd2FpdCBkc3RHaXQubG9nKCk7XG4gICAgY29tbWl0SGFzaFJlc3VsdCA9IGV4dHJhY3RDb21taXRIYXNoKGRzdExvZyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuICBjb25zdCBbaGVhZCwgZnJvbV0gPSBjb21taXRIYXNoUmVzdWx0O1xuICBpZiAoZnJvbSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgRXh0cmFjdGVkIGEgdmFsaWQgY29tbWl0OiAke2Zyb219YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGAoJHtoZWFkfSlgKTtcbiAgfSBlbHNlIGlmICghb3B0cy5mb3JjZSkge1xuICAgIGxvZ2dlci5lcnJvcignTm8gdmFsaWQgY29tbWl0IGluIGRlc3RpbmF0aW9uIHJlcG8nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzcmNHaXQ6IFNpbXBsZUdpdCA9IHNpbXBsZUdpdChzcmNSZXBvUGF0aCk7XG4gIGxldCBzcmNMb2c6IExvZ1Jlc3VsdDtcbiAgdHJ5IHtcbiAgICAvLyAnLS1maXJzdC1wYXJlbnQnIGhpZGVzIGNoaWxkcmVuIGNvbW1pdHMgb2YgbWVyZ2UgY29tbWl0c1xuICAgIHNyY0xvZyA9IGF3YWl0IHNyY0dpdC5sb2coZnJvbSA/IHsgZnJvbSwgdG86ICdIRUFEJywgJy0tZmlyc3QtcGFyZW50JzogdW5kZWZpbmVkIH0gOiB1bmRlZmluZWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGdldCBzb3VyY2UgY29tbWl0IGhpc3Rvcnk6ICR7KGVycm9yIGFzIEVycm9yKS5zdGFja31gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsYXRlc3RIYXNoID0gc3JjTG9nLmxhdGVzdD8uaGFzaDtcbiAgaWYgKCFsYXRlc3RIYXNoKSB7XG4gICAgbG9nZ2VyLmluZm8oJ05vIHN5bmNocm9uaXphYmxlIGNvbW1pdCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gRm9yY2UgdG8gaWdub3JlIC5naXQgZGlyZWN0b3J5XG4gIGNvbnN0IGlnbm9yZVBhdHRlcm5zID0gWy4uLm5ldyBTZXQoWy4uLm9wdHNbJ2lnbm9yZS1wYXR0ZXJucyddLm1hcChTdHJpbmcpLCAnLmdpdCddKV07XG4gIGxldCBbZGVzdEZpbGVzLCBzcmNGaWxlc10gPSBhd2FpdCBQcm9taXNlLmFsbChbZnMucmVhZGRpcihkZXN0UmVwb1BhdGgpLCBmcy5yZWFkZGlyKHNyY1JlcG9QYXRoKV0pO1xuICBkZXN0RmlsZXMgPSBtaWNyb21hdGNoLm5vdChkZXN0RmlsZXMsIGlnbm9yZVBhdHRlcm5zKTtcbiAgc3JjRmlsZXMgPSBtaWNyb21hdGNoLm5vdChzcmNGaWxlcywgaWdub3JlUGF0dGVybnMpO1xuICBsb2dnZXIuZGVidWcoJ2Rlc3RGaWxlczogJW8nLCBkZXN0RmlsZXMpO1xuICBsb2dnZXIuZGVidWcoJ3NyY0ZpbGVzOiAlbycsIHNyY0ZpbGVzKTtcbiAgZm9yIChjb25zdCBkZXN0RmlsZSBvZiBkZXN0RmlsZXMpIHtcbiAgICBhd2FpdCBmcy5ybShwYXRoLmpvaW4oZGVzdFJlcG9QYXRoLCBkZXN0RmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxuICBmb3IgKGNvbnN0IHNyY0ZpbGUgb2Ygc3JjRmlsZXMpIHtcbiAgICBhd2FpdCBjb3B5KHBhdGguam9pbihzcmNSZXBvUGF0aCwgc3JjRmlsZSksIHBhdGguam9pbihkZXN0UmVwb1BhdGgsIHNyY0ZpbGUpKTtcbiAgfVxuICBhd2FpdCBkc3RHaXQuYWRkKCctQScpO1xuXG4gIGxldCBzcmNUYWcgPSAnJztcbiAgaWYgKG9wdHNbJ3RhZy1oYXNoJ10gfHwgb3B0c1sndGFnLXZlcnNpb24nXSkge1xuICAgIC8vIGUuZy4gYC0tYWJicmV2PTBgIGNoYW5nZXMgYHYxLjMxLjUtMi1nY2RkZTUwN2AgdG8gYHYxLjMxLjVgXG4gICAgY29uc3QgZGVzY3JpYmVDb21tYW5kID0gYGdpdCBkZXNjcmliZSAtLXRhZ3MgLS1hbHdheXMgJHtvcHRzWyd0YWctdmVyc2lvbiddID8gJy0tYWJicmV2PTAnIDogJyd9YDtcbiAgICBzcmNUYWcgPSBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGRlc2NyaWJlQ29tbWFuZCwgeyBjd2Q6IHNyY1JlcG9QYXRoIH0pLnRvU3RyaW5nKCkudHJpbSgpO1xuICB9XG4gIGxldCBwcmVmaXggPSBvcHRzLnByZWZpeCA/PyAoYXdhaXQgZ2V0R2l0SHViQ29tbWl0c1VybChzcmNHaXQpKSA/PyAnJztcbiAgaWYgKHByZWZpeCAmJiAhcHJlZml4LmVuZHNXaXRoKCcvJykpIHtcbiAgICBwcmVmaXggKz0gJy8nO1xuICB9XG4gIGNvbnN0IGxpbmsgPSBgJHtwcmVmaXh9JHtsYXRlc3RIYXNofWA7XG4gIGNvbnN0IHRpdGxlID0gc3JjVGFnID8gYHN5bmMgJHtzcmNUYWd9ICgke2xpbmt9KWAgOiBgc3luYyAke2xpbmt9YDtcbiAgY29uc3QgYm9keSA9IGZyb21cbiAgICA/IHNyY0xvZy5hbGwubWFwKChsKSA9PiBgKiAke2wubWVzc2FnZX1gKS5qb2luKCdcXG5cXG4nKVxuICAgIDogYFJlcGxhY2UgYWxsIHRoZSBmaWxlcyB3aXRoIHRob3NlIG9mICR7b3B0cy5kZXN0fSBkdWUgdG8gbWlzc2luZyBzeW5jIGNvbW1pdC5gO1xuICB0cnkge1xuICAgIGNvbnN0IHJldCA9IGF3YWl0IGRzdEdpdC5jb21taXQoYCR7dGl0bGV9XFxuXFxuJHtib2R5fWApO1xuICAgIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRlZCBhIGNvbW1pdDogJW9gLCByZXQpO1xuICAgIGxvZ2dlci5kZWJ1Zyh0aXRsZSk7XG4gICAgbG9nZ2VyLmRlYnVnKGAgIHdpdGggYm9keTogJHtib2R5fWApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGNvbW1pdCBjaGFuZ2VzOiAkeyhlcnJvciBhcyBFcnJvcikuc3RhY2t9YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVzdFRhZyA9IHNyY1RhZyB8fCBvcHRzLnRhZztcbiAgaWYgKGRlc3RUYWcpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZHN0R2l0LmFkZFRhZyhkZXN0VGFnKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRlZCBhIHRhZzogJHtkZXN0VGFnfWApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciBzaW5jZSBgLS1hYmJyZXY9MGAgbWF5IHlpZWxkIGEgdGFnIHRoYXQgYWxyZWFkeSBleGlzdHNcbiAgICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gY3JlYXRlIGEgdGFnOiAke2Rlc3RUYWd9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuZHJ5KSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdGaW5pc2hlZCBkcnkgcnVuJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IChvcHRzLmJyYW5jaCA/IGRzdEdpdC5wdXNoKCdvcmlnaW4nLCBvcHRzLmJyYW5jaCkgOiBkc3RHaXQucHVzaCgpKTtcbiAgICBpZiAoZGVzdFRhZykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tbnVsbFxuICAgICAgYXdhaXQgZHN0R2l0LnB1c2goeyAnLS10YWdzJzogbnVsbCB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gcHVzaCB0aGUgY29tbWl0OiAkeyhlcnJvciBhcyBFcnJvcikuc3RhY2t9YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKCdQdXNoZWQgdGhlIGNvbW1pdCcpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdENvbW1pdEhhc2gobG9nUmVzdWx0OiBMb2dSZXN1bHQpOiBbc3RyaW5nLCBzdHJpbmddIHwgW10ge1xuICBpZiAobG9nUmVzdWx0LmFsbC5sZW5ndGggPT09IDApIHtcbiAgICBsb2dnZXIuZGVidWcoJ05vIGNvbW1pdCBoaXN0b3J5Jyk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZm9yIChjb25zdCBsb2cgb2YgbG9nUmVzdWx0LmFsbCkge1xuICAgIGNvbnN0IFtoZWFkLCAuLi53b3Jkc10gPSBsb2cubWVzc2FnZS5yZXBsYWNlQWxsKC9bKCldL2csICcnKS5zcGxpdCgvW1xccy9dLyk7XG4gICAgaWYgKGhlYWQgPT09ICdzeW5jJyAmJiB3b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gW2xvZy5tZXNzYWdlLCB3b3Jkcy5hdCgtMSkgYXMgc3RyaW5nXTtcbiAgICB9XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKGBObyBzeW5jIGNvbW1pdDogJHtsb2dSZXN1bHQuYWxsWzBdLm1lc3NhZ2V9YCk7XG4gIHJldHVybiBbXTtcbn1cbiIsImV4cG9ydCBjb25zdCB5YXJnc09wdGlvbnMgPSB7XG4gIGRlc3Q6IHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICBhbGlhczogJ2QnLFxuICAgIGRlc2NyaWJlOiAnQSBVUkwgb2YgYSBkZXN0aW5hdGlvbiBnaXQgcmVwb3NpdG9yeS4nLFxuICAgIGRlbWFuZDogdHJ1ZSxcbiAgfSxcbiAgcHJlZml4OiB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICdwJyxcbiAgICBkZXNjcmliZTogYEEgcHJlZml4IG9mIGEgY29tbWl0IGhhc2ggdXNlZCB0byBnZW5lcmF0ZSBhIGNvbW1pdCB0aXRsZSwgZS5nLiAnc3luYyA8cHJlZml4Pi88aGFzaD4nLlxuICAgICAgICAgICAgICAgQSB0eXBpY2FsIHZhbHVlIGlzIGxpa2UgJ2h0dHBzOi8vZ2l0aHViLmNvbS9XaWxsQm9vc3Rlci9vbmUtd2F5LWdpdC1zeW5jL2NvbW1pdHMnYCxcbiAgfSxcbiAgYnJhbmNoOiB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICdiJyxcbiAgICBkZXNjcmliZTogJ1NwZWNpZnkgYnJhbmNoIG9mIGRlc3RpbmF0aW9uIHJlcG8uJyxcbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICd0JyxcbiAgICBkZXNjcmliZTogJ1NwZWNpZnkgdGFnIHRvIGJlIGNyZWF0ZWQgaW4gZGVzdGluYXRpb24gcmVwby4nLFxuICB9LFxuICAndGFnLWhhc2gnOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaWJlOiAnQ3JlYXRlIHZlcnNpb24raGFzaCB0YWcgKGUuZy4gdjEuMzEuNS0yLWdjZGRlNTA3KS4gSXQgc2hvdWxkIGJlIGEgdW5pcXVlIHRhZy4nLFxuICB9LFxuICAndGFnLXZlcnNpb24nOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlc2NyaWJlOiAnQ3JlYXRlIHZlcnNpb24gdGFnIChlLmcuIHYxLjMxLjUpLiBJdCBjb3VsZCBiZSBhIG5vbi11bmlxdWUgdGFnLicsXG4gIH0sXG4gICdpZ25vcmUtcGF0dGVybnMnOiB7XG4gICAgdHlwZTogJ2FycmF5JyxcbiAgICBhbGlhczogJ2knLFxuICAgIGRlc2NyaWJlOiBgRXhjbHVkZSB0aGUgZmlsZXMgd2hvc2UgcGF0aCBtYXRjaGVzIG9uZSBvZiB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gICAgICAgICAgICAgICBUaGUgcGF0dGVybnMgYXJlIHByb2Nlc3NlZCBieSBtaWNyb21hdGNoIChodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXRjaC9taWNyb21hdGNoKS5cbiAgICAgICAgICAgICAgIFlvdSBtYXkgc3BlY2lmeSB0aGUgb3B0aW9uIG11bHRpcGxlIHRpbWVzLiBEZWZhdWx0IHZhbHVlIGlzIFwiLWkgLmdpdCAtaSAuZ2l0aHViIC1pIG5vZGVfbW9kdWxlcyAtaSAnLnJlbm92YXRlcmMuKicgLWkgJy5yZW5vdmF0ZS4qJ1wiYCxcbiAgICBkZWZhdWx0OiBbJy5naXQnLCAnLmdpdGh1YicsICdub2RlX21vZHVsZXMnLCAnLnJlbm92YXRlcmMuKicsICdyZW5vdmF0ZS4qJ10sXG4gIH0sXG4gIGRyeToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZXNjcmliZTogJ0VuYWJsZSBkcnktcnVuIG1vZGUuJyxcbiAgfSxcbiAgZm9yY2U6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVzY3JpYmU6ICdGb3JjZSB0byBvdmVyd3JpdGUgdGhlIGRlc3RpbmF0aW9uIGdpdCByZXBvc2l0b3J5LicsXG4gIH0sXG4gIHZlcmJvc2U6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgYWxpYXM6ICd2JyxcbiAgICBkZXNjcmliZTogJ1Nob3cgZGV0YWlscyBsb2dzLicsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gJ3lhcmdzL2hlbHBlcnMnO1xuaW1wb3J0IHlhcmdzIGZyb20gJ3lhcmdzL3lhcmdzJztcblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgc3luYyB9IGZyb20gJy4vc3luYy5qcyc7XG5pbXBvcnQgeyB5YXJnc09wdGlvbnMgfSBmcm9tICcuL3lhcmdzT3B0aW9ucy5qcyc7XG5cbmNvbnN0IGFyZ3YgPSBhd2FpdCB5YXJncyhoaWRlQmluKHByb2Nlc3MuYXJndikpXG4gIC5zY3JpcHROYW1lKCdvbmUtd2F5LWdpdC1zeW5jJylcbiAgLm9wdGlvbnMoeWFyZ3NPcHRpb25zKVxuICAubWlkZGxld2FyZSgoYXJndikgPT4ge1xuICAgIGxvZ2dlci5sZXZlbCA9IGFyZ3YudmVyYm9zZSA/ICd0cmFjZScgOiAnaW5mbyc7XG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuaGVscCgpLmFyZ3Y7XG5hd2FpdCBzeW5jKGFyZ3YpO1xuIiwiaW1wb3J0IHR5cGUgeyBTaW1wbGVHaXQgfSBmcm9tICdzaW1wbGUtZ2l0JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEdpdEh1YkNvbW1pdHNVcmwoZ2l0OiBTaW1wbGVHaXQpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCByZW1vdGVzID0gYXdhaXQgZ2l0LmdldFJlbW90ZXModHJ1ZSk7XG4gIGNvbnN0IG9yaWdpbiA9IHJlbW90ZXMuZmluZCgocikgPT4gci5uYW1lID09PSAnb3JpZ2luJyk7XG4gIGNvbnN0IHJlbW90ZVVybCA9IG9yaWdpbj8ucmVmcz8uZmV0Y2ggPz8gb3JpZ2luPy5yZWZzPy5wdXNoO1xuICBpZiAodHlwZW9mIHJlbW90ZVVybCA9PT0gJ3N0cmluZycgJiYgcmVtb3RlVXJsLmluY2x1ZGVzKCdnaXRodWIuY29tJykpIHtcbiAgICBjb25zdCB3b3JkcyA9IHJlbW90ZVVybC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IG9yZyA9IHdvcmRzLmF0KC0yKTtcbiAgICBjb25zdCBuYW1lID0gd29yZHMuYXQoLTEpPy5yZXBsYWNlKC8uZ2l0JC8sICcnKTtcbiAgICBpZiAob3JnICYmIG5hbWUpIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7b3JnfS8ke25hbWV9L2NvbW1pdHNgO1xuICB9XG59XG4iXSwibmFtZXMiOlsibG9nZ2VyIiwicGlubyIsInRyYW5zcG9ydCIsInRhcmdldCIsIm9wdGlvbnMiLCJjb2xvcml6ZSIsInN5bmNEaXJQYXRoIiwicGF0aCIsImpvaW4iLCJ5YXJnc09wdGlvbnMiLCJkZXN0IiwidHlwZSIsImFsaWFzIiwiZGVzY3JpYmUiLCJkZW1hbmQiLCJwcmVmaXgiLCJicmFuY2giLCJ0YWciLCJkZWZhdWx0IiwiZHJ5IiwiZm9yY2UiLCJ2ZXJib3NlIiwiYXJndiIsInlhcmdzIiwiaGlkZUJpbiIsInByb2Nlc3MiLCJzY3JpcHROYW1lIiwibWlkZGxld2FyZSIsImxldmVsIiwic3RyaWN0IiwiaGVscCIsImFzeW5jIiwib3B0cyIsImZzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJkaXJQYXRoIiwibWtkdGVtcCIsInJldCIsImRlc3RSZXBvUGF0aCIsInNyY1JlcG9QYXRoIiwiY3dkIiwiY2xvbmVPcHRzIiwic2ltcGxlR2l0IiwiY2xvbmUiLCJjaGVja291dCIsImRlYnVnIiwiZHN0R2l0IiwiY29tbWl0SGFzaFJlc3VsdCIsImxvZ1Jlc3VsdCIsImFsbCIsImxlbmd0aCIsImxvZyIsImhlYWQiLCJ3b3JkcyIsIm1lc3NhZ2UiLCJyZXBsYWNlQWxsIiwic3BsaXQiLCJhdCIsImV4dHJhY3RDb21taXRIYXNoIiwiZnJvbSIsImVycm9yIiwic3JjR2l0Iiwic3JjTG9nIiwidG8iLCJ1bmRlZmluZWQiLCJzdGFjayIsImxhdGVzdEhhc2giLCJsYXRlc3QiLCJoYXNoIiwiaW5mbyIsImlnbm9yZVBhdHRlcm5zIiwiU2V0IiwibWFwIiwiU3RyaW5nIiwiZGVzdEZpbGVzIiwic3JjRmlsZXMiLCJQcm9taXNlIiwicmVhZGRpciIsIm1pY3JvbWF0Y2giLCJub3QiLCJkZXN0RmlsZSIsInJtIiwic3JjRmlsZSIsImNvcHkiLCJhZGQiLCJzcmNUYWciLCJkZXNjcmliZUNvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiZXhlY1N5bmMiLCJ0b1N0cmluZyIsInRyaW0iLCJnaXQiLCJvcmlnaW4iLCJnZXRSZW1vdGVzIiwiZmluZCIsInIiLCJuYW1lIiwicmVtb3RlVXJsIiwicmVmcyIsImZldGNoIiwicHVzaCIsImluY2x1ZGVzIiwib3JnIiwicmVwbGFjZSIsImdldEdpdEh1YkNvbW1pdHNVcmwiLCJlbmRzV2l0aCIsImxpbmsiLCJ0aXRsZSIsImJvZHkiLCJsIiwiY29tbWl0IiwiZGVzdFRhZyIsImFkZFRhZyIsIndhcm4iLCJzeW5jQ29yZSIsImV4aXQiLCJzeW5jIl0sIm1hcHBpbmdzIjoiMlJBRU8sTUFBTUEsRUFBU0MsRUFBSyxDQUN6QkMsVUFBVyxDQUNUQyxPQUFRLGNBQ1JDLFFBQVMsQ0FDUEMsVUFBVSxNQ1FoQixNQUFNQyxFQUFjQyxFQUFLQyxLQUFLLGVBQWdCLFFBQVMsaUJDZGhELE1BQU1DLEVBQWUsQ0FDMUJDLEtBQU0sQ0FDSkMsS0FBTSxTQUNOQyxNQUFPLElBQ1BDLFNBQVUseUNBQ1ZDLFFBQVEsR0FFVkMsT0FBUSxDQUNOSixLQUFNLFNBQ05DLE1BQU8sSUFDUEMsU0FBVSw2TEFHWkcsT0FBUSxDQUNOTCxLQUFNLFNBQ05DLE1BQU8sSUFDUEMsU0FBVSx1Q0FFWkksSUFBSyxDQUNITixLQUFNLFNBQ05DLE1BQU8sSUFDUEMsU0FBVSxrREFFWixXQUFZLENBQ1ZGLEtBQU0sVUFDTkUsU0FBVSxpRkFFWixjQUFlLENBQ2JGLEtBQU0sVUFDTkUsU0FBVSxvRUFFWixrQkFBbUIsQ0FDakJGLEtBQU0sUUFDTkMsTUFBTyxJQUNQQyxTQUFVLDhUQUdWSyxRQUFTLENBQUMsT0FBUSxVQUFXLGVBQWdCLGdCQUFpQixlQUVoRUMsSUFBSyxDQUNIUixLQUFNLFVBQ05FLFNBQVUsd0JBRVpPLE1BQU8sQ0FDTFQsS0FBTSxVQUNORSxTQUFVLHNEQUVaUSxRQUFTLENBQ1BWLEtBQU0sVUFDTkMsTUFBTyxJQUNQQyxTQUFVLHVCQzNDUlMsUUFBYUMsRUFBTUMsRUFBUUMsUUFBUUgsT0FDdENJLFdBQVcsb0JBQ1h0QixRQUFRSyxHQUNSa0IsWUFBWUwsSUFDWHRCLEVBQU80QixNQUFRTixFQUFLRCxRQUFVLFFBQVUsTUFBTSxJQUUvQ1EsU0FDQUMsT0FBT1IsV0ZJSFMsZUFBb0JD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
|