{"id":16001245,"url":"https://github.com/rj/relsandbox","last_synced_at":"2025-03-22T17:47:56.028Z","repository":{"id":25987396,"uuid":"29429607","full_name":"RJ/relsandbox","owner":"RJ","description":"Release sandbox app (various changes, with appups)","archived":false,"fork":false,"pushed_at":"2015-01-21T18:09:12.000Z","size":955,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-20T11:08:23.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RJ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-18T15:06:15.000Z","updated_at":"2018-10-27T13:08:58.000Z","dependencies_parsed_at":"2022-08-24T14:19:05.251Z","dependency_job_id":null,"html_url":"https://github.com/RJ/relsandbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RJ%2Frelsandbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RJ%2Frelsandbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RJ%2Frelsandbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RJ%2Frelsandbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RJ","download_url":"https://codeload.github.com/RJ/relsandbox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244999230,"owners_count":20544866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T09:41:08.676Z","updated_at":"2025-03-22T17:47:56.003Z","avatar_url":"https://github.com/RJ.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# relsandbox\n\nA basic Erlang OTP app used for testing release and appup tooling.\n\n\n## Build and Run\n\n    $ rebar3 compile\n    $ ./start.sh\n\n## Versions and Upgrades\n\nUsing the following git tags, move between versions to test upgrades\netc.\n\nNB: I don't care about downgrades, and probably won't be testing them.\n\n### v1\n\nBasic app with supervisor, one gen_server that counts with get/inc api.\n\n### v2 [v1...v2](https://github.com/RJ/relsandbox/compare/v1...v2)\n\nAdd a decrement convenience function, no ````#state{}```` change.\n\n#### Expected .appup\n\n    {\"2\",\n        [{\"1\", [\n            {load_module, relsandbox_counter}\n        ]}],\n        [{\"1\", [\n            {load_module, relsandbox_counter}\n        ]}]\n    }.\n\n### v3 [v2...v3](https://github.com/RJ/relsandbox/compare/v2...v3)\n\nAdd name field to ````#state{}```` and get/set API.\nThis requires a ````code_change```` function to upgrade the state\nrecord.\n\n#### Expected .appup\n\n    {\"3\",\n        [{\"2\", [\n            {update, relsandbox_counter, {advanced, []}}\n        ]}],\n        [{\"2\", [\n            {update, relsandbox_counter, {advanced, []}}\n        ]}]\n    }.\n\n### v4 [v3...v4](https://github.com/RJ/relsandbox/compare/v3...v4)\n\nAdd a new module, ````relsandbox_phonebook```` with get/set API.\nThis requires a new child to be started under ````relsandbox_sup````\n\nAlso add a boring utility module, ````relsandbox_boring````.\n\n#### Expected .appup\n\n    {\"4\",\n        [{\"3\", [\n            {load_module, relsandbox_boring},\n            {load_module, relsandbox_phonebook},\n            {update, relsandbox_sup, supervisor},\n            {apply, {supervisor, restart_child, [relsandbox_sup, relsandbox_phonebook]}}\n        ]}],\n        [{\"3\", [\n            {apply, {supervisor, terminate_child, [relsandbox_sup, relsandbox_phonebook]}},\n            {apply, {supervisor, delete_child,    [relsandbox_sup, relsandbox_phonebook]}},\n            {update, relsandbox_sup, supervisor},\n            {delete_module, relsandbox_phonebook},\n            {delete_module, relsandbox_boring}\n        ]}]\n    }.\n\n### v5 [v4...v5](https://github.com/RJ/relsandbox/compare/v4...v5)\n\nRemove module, ````relsandbox_boring````.\nAdd dependency on lager (no appup instructions needed for this).\n\n#### Expected .appup\n\n    {\"5\",\n        [{\"4\", [\n            {delete_module, relsandbox_boring}\n        ]}],\n        [{\"4\", [\n            {load_module, relsandbox_boring}\n        ]}]\n    }.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frj%2Frelsandbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frj%2Frelsandbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frj%2Frelsandbox/lists"}