Explorar el Código
Merge pull request #6307 from emqx/update-appup-ext-deps-diff
chore(appup): make update_appup.escript output only differences for external dependencies
Currently, the update_appup.escript outputs as an error the full appup
file for external dependencies, even if all the changes are already
contained in the depency. Here, we make it only output the missing
actions to be inserted, to aid in seeing what are the differences.
<details>
<summary> Output before: </summary>
```
ERROR: Appup file for the external dependency 'ekka' is not complete.
Missing changes: [{"0.8.1.4",
[{load_module,ekka_cluster_dns,brutal_purge,
soft_purge,[]},
{load_module,ekka_node_monitor,brutal_purge,
soft_purge,[]}]},
{"0.8.1.3",
[{load_module,ekka_node_monitor,brutal_purge,
soft_purge,[]},
{load_module,ekka_autocluster,brutal_purge,
soft_purge,[]},
{load_module,ekka_autoheal,brutal_purge,
soft_purge,[]},
{load_module,ekka_locker,brutal_purge,soft_purge,
[]},
{load_module,ekka_cluster_dns,brutal_purge,
soft_purge,[]}]},
{"0.8.1.2",
[{load_module,ekka_ring,brutal_purge,soft_purge,[]},
{load_module,ekka_cluster_dns,brutal_purge,
soft_purge,[]},
{load_module,ekka_node_monitor,brutal_purge,
soft_purge,[]},
{load_module,ekka_autocluster,brutal_purge,
soft_purge,[]},
{load_module,ekka_autoheal,brutal_purge,
soft_purge,[]},
{load_module,ekka_locker,brutal_purge,soft_purge,
[]},
{load_module,ekka_httpc,brutal_purge,soft_purge,
[]}]},
{"0.8.1.1",
[{load_module,ekka_cluster_dns,brutal_purge,
soft_purge,[]},
{load_module,ekka_ring,brutal_purge,soft_purge,[]},
{load_module,ekka_node_monitor,brutal_purge,
soft_purge,[]},
{load_module,ekka_httpc,brutal_purge,soft_purge,[]},
{load_module,ekka_autocluster,brutal_purge,
soft_purge,[]},
{load_module,ekka_autoheal,brutal_purge,
soft_purge,[]},
{load_module,ekka_locker,brutal_purge,soft_purge,
[]}]},
{"0.8.1",
[{load_module,ekka_cluster_dns,brutal_purge,
soft_purge,[]},
{load_module,ekka_ring,brutal_purge,soft_purge,[]},
{load_module,ekka_node_monitor,brutal_purge,
soft_purge,[]},
{load_module,ekka_autocluster,brutal_purge,
soft_purge,[]},
{load_module,ekka_autoheal,brutal_purge,
soft_purge,[]},
{load_module,ekka_locker,brutal_purge,soft_purge,
[]},
{load_module,ekka_httpc,brutal_purge,soft_purge,[]},
{load_module,ekka_mnesia,brutal_purge,soft_purge,
[]}]}]
ERROR: Appup file for the external dependency 'ehttpc' is not complete.
Missing changes: [{"0.1.10",
[{load_module,ehttpc_pool,brutal_purge,soft_purge,
[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]},
{<<"0\\.1\\.[0-7]">>,
[{load_module,ehttpc_pool,brutal_purge,soft_purge,
[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]},
{update,ehttpc,{advanced,[]}}]},
{<<"0\\.1\\.([8-9]|(1[0-1]))">>,
[{load_module,ehttpc,brutal_purge,soft_purge,[]},
{load_module,ehttpc_pool,brutal_purge,soft_purge,
[]}]},
{<<".*">>,[]}]
```
</details>
<details>
<summary> Output after: </summary>
```
ERROR: Appup file for the external dependency 'ekka' is not complete.
Missing changes: #{down =>
[{"0.8.1.4",
[{load_module,ekka_cluster_dns,brutal_purge,soft_purge,[]}]}],
up => []}
NOTE: Some changes above might be already covered by regexes.ERROR: Appup file for the external dependency 'ehttpc' is not complete.
Missing changes: #{down =>
[{"0.1.10",
[{load_module,ehttpc_pool,brutal_purge,soft_purge,[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]},
{<<"0\\.1\\.0">>,
[{load_module,ehttpc_pool,brutal_purge,soft_purge,[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]},
{<<"0\\.1\\.[1-7]">>,
[{load_module,ehttpc_pool,brutal_purge,soft_purge,[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]}],
up =>
[{"0.1.10",
[{load_module,ehttpc_pool,brutal_purge,soft_purge,[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]},
{<<"0\\.1\\.[0-7]">>,
[{load_module,ehttpc_pool,brutal_purge,soft_purge,[]},
{load_module,ehttpc,brutal_purge,soft_purge,[]}]}]}
NOTE: Some changes above might be already covered by regexes.
ERROR: Incomplete appups found. Please inspect the output for more details.
```
</details>