{"action":"created","issue":{"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/72","repository_url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader","labels_url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/72/labels{/name}","comments_url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/72/comments","events_url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/72/events","html_url":"https://github.com/silverstripe/silverstripe-upgrader/issues/72","id":320627099,"number":72,"title":"Single command upgrading","user":{"login":"chillu","id":111025,"avatar_url":"https://avatars3.githubusercontent.com/u/111025?v=4","gravatar_id":"","url":"https://api.github.com/users/chillu","html_url":"https://github.com/chillu","followers_url":"https://api.github.com/users/chillu/followers","following_url":"https://api.github.com/users/chillu/following{/other_user}","gists_url":"https://api.github.com/users/chillu/gists{/gist_id}","starred_url":"https://api.github.com/users/chillu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chillu/subscriptions","organizations_url":"https://api.github.com/users/chillu/orgs","repos_url":"https://api.github.com/users/chillu/repos","events_url":"https://api.github.com/users/chillu/events{/privacy}","received_events_url":"https://api.github.com/users/chillu/received_events","type":"User","site_admin":false},"labels":[{"id":587718893,"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/labels/change/patch","name":"change/patch","color":"fef2c0","default":false},{"id":587718931,"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/labels/effort/medium","name":"effort/medium","color":"fef2c0","default":false},{"id":587718998,"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/labels/impact/high","name":"impact/high","color":"eb6420","default":false},{"id":366524450,"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/labels/type/enhancement","name":"type/enhancement","color":"0e8a16","default":false}],"state":"open","locked":false,"assignee":{"login":"maxime-rainville","id":1168676,"avatar_url":"https://avatars0.githubusercontent.com/u/1168676?v=4","gravatar_id":"","url":"https://api.github.com/users/maxime-rainville","html_url":"https://github.com/maxime-rainville","followers_url":"https://api.github.com/users/maxime-rainville/followers","following_url":"https://api.github.com/users/maxime-rainville/following{/other_user}","gists_url":"https://api.github.com/users/maxime-rainville/gists{/gist_id}","starred_url":"https://api.github.com/users/maxime-rainville/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxime-rainville/subscriptions","organizations_url":"https://api.github.com/users/maxime-rainville/orgs","repos_url":"https://api.github.com/users/maxime-rainville/repos","events_url":"https://api.github.com/users/maxime-rainville/events{/privacy}","received_events_url":"https://api.github.com/users/maxime-rainville/received_events","type":"User","site_admin":false},"assignees":[{"login":"maxime-rainville","id":1168676,"avatar_url":"https://avatars0.githubusercontent.com/u/1168676?v=4","gravatar_id":"","url":"https://api.github.com/users/maxime-rainville","html_url":"https://github.com/maxime-rainville","followers_url":"https://api.github.com/users/maxime-rainville/followers","following_url":"https://api.github.com/users/maxime-rainville/following{/other_user}","gists_url":"https://api.github.com/users/maxime-rainville/gists{/gist_id}","starred_url":"https://api.github.com/users/maxime-rainville/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxime-rainville/subscriptions","organizations_url":"https://api.github.com/users/maxime-rainville/orgs","repos_url":"https://api.github.com/users/maxime-rainville/repos","events_url":"https://api.github.com/users/maxime-rainville/events{/privacy}","received_events_url":"https://api.github.com/users/maxime-rainville/received_events","type":"User","site_admin":false}],"milestone":null,"comments":28,"created_at":"2018-05-06T20:49:57Z","updated_at":"2018-05-30T00:48:00Z","closed_at":null,"author_association":"MEMBER","body":"# Overview\r\n\r\nWhile the upgrader is a very helpful, it interleaves manual instructions with individual automated commands. Ideally we can guide developers through semi-automated updates through a single command. This is aimed at increasing adoption, but also at making it easier to run a single tool to determine the \"upgradeability\" of a site. We need to get agencies and developers in a position where they feel somewhat confident quoting for upgrades, and getting a site \"mostly running on 4.x\" is a great way to achieve that.\r\n\r\n# Acceptance Criteria\r\n\r\n * As a developer looking for upgrade instructions, I get clear guidance on the generic [upgrading](https://docs.silverstripe.org/en/4/upgrading/) docs and the individual version upgrading docs ([4.0.0](https://docs.silverstripe.org/en/4/changelogs/4.0.0/) and [4.0.0](https://docs.silverstripe.org/en/4/changelogs/4.1.0/))\r\n * There is only ONE place where the upgrader instructions are placed: In the 4.0.0 changelog\r\n * The upgrader is clearly marked as the preferred way to start an upgrade process\r\n * I can follow manual steps when choosing not to use the upgrader\r\n * The upgrader clearly spells out what is happening with each step, educating developers during the upgrade. It is meant as a partial replacement for reading the upgrading guide. Each step links to the relevant section in the upgrading guide\r\n * The upgrader command can be run multiple times on the same installation\r\n * The upgrader passes through arguments to individual commands (e.g. `--write` and `--verbose`)\r\n * When a single command causes a catchable failure, it can continue to the next command\r\n * Composer upgrade command is expected to run separately, since it's hard to integrate into a single command\r\n\r\n# Commands\r\n\r\n * Rewrite _ss_env to dotenv\r\n * Rewrite index.php and .htaccess\r\n * Fix namespaces\r\n * Move mysite/ to app/\r\n * Migrate files\r\n * Inspect code (this should be last)\r\n\r\nNote: Order might need to be adjusted\r\n\r\n# Notes\r\n\r\n * Stretch goal: Aim for upgrader to run automated in most cases, either asking for all required user input upfront, or having a `--yes` option\r\n * Out of scope: Resume upgrader at particular step\r\n * Out of scope: The upgrader is future proofed to work with new major releases (4.x to 5.x)\r\n\r\n\r\n# Sub task for the all in one command:\r\n* [x] Base command  calls each of the other commands ;\r\n* [x] Speed up recompose ;\r\n* [x] Manage transition between recompose and environment;\r\n* [x] Manage transition between environment and add-namespace;\r\n* [x] Manage transition add-namespace and upgrade ;\r\n* [x] Manage transition upgrade and inspect ;\r\n* [x] Manage transition inspect and reorganise;\r\n* [x] Manage transition reorganise and webroot;\r\n* [x] Provide a pretty output.\r\n\r\n# Pull Request\r\n* [ ] #83 \r\n"},"comment":{"url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/comments/392994797","html_url":"https://github.com/silverstripe/silverstripe-upgrader/issues/72#issuecomment-392994797","issue_url":"https://api.github.com/repos/silverstripe/silverstripe-upgrader/issues/72","id":392994797,"user":{"login":"maxime-rainville","id":1168676,"avatar_url":"https://avatars0.githubusercontent.com/u/1168676?v=4","gravatar_id":"","url":"https://api.github.com/users/maxime-rainville","html_url":"https://github.com/maxime-rainville","followers_url":"https://api.github.com/users/maxime-rainville/followers","following_url":"https://api.github.com/users/maxime-rainville/following{/other_user}","gists_url":"https://api.github.com/users/maxime-rainville/gists{/gist_id}","starred_url":"https://api.github.com/users/maxime-rainville/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxime-rainville/subscriptions","organizations_url":"https://api.github.com/users/maxime-rainville/orgs","repos_url":"https://api.github.com/users/maxime-rainville/repos","events_url":"https://api.github.com/users/maxime-rainville/events{/privacy}","received_events_url":"https://api.github.com/users/maxime-rainville/received_events","type":"User","site_admin":false},"created_at":"2018-05-30T00:48:00Z","updated_at":"2018-05-30T00:48:00Z","author_association":"CONTRIBUTOR","body":"I would keep the manual and automated way of performing a step next to each other. If you split them up into different documents, people will have to: \r\n* try to perform a step\r\n* jump to a different document if they have a problem\r\n* come back to the main document to carry on to the next step.\r\n\r\nMany of those steps will have at least some manual work involved that will be needed even if the command works perfectly. e.g.: After you've run the `reorganise` command you still have to update your `app/_config/mysite.yml`.\r\n\r\n\r\n"}}
{"actor":{"display_login":"maxime-rainville"}}