{"action":"opened","issue":{"url":"https://api.github.com/repos/underdogio/ppm/issues/1","labels_url":"https://api.github.com/repos/underdogio/ppm/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/underdogio/ppm/issues/1/comments","events_url":"https://api.github.com/repos/underdogio/ppm/issues/1/events","html_url":"https://github.com/underdogio/ppm/issues/1","id":70737397,"number":1,"title":"API discussion","user":{"login":"twolfson","id":902488,"avatar_url":"https://avatars.githubusercontent.com/u/902488?v=3","gravatar_id":"","url":"https://api.github.com/users/twolfson","html_url":"https://github.com/twolfson","followers_url":"https://api.github.com/users/twolfson/followers","following_url":"https://api.github.com/users/twolfson/following{/other_user}","gists_url":"https://api.github.com/users/twolfson/gists{/gist_id}","starred_url":"https://api.github.com/users/twolfson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twolfson/subscriptions","organizations_url":"https://api.github.com/users/twolfson/orgs","repos_url":"https://api.github.com/users/twolfson/repos","events_url":"https://api.github.com/users/twolfson/events{/privacy}","received_events_url":"https://api.github.com/users/twolfson/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-04-24T16:47:43Z","updated_at":"2015-04-24T16:47:43Z","closed_at":null,"body":"While we are still looking for alternatives to `ppm`, we should hash out all the details of our ideal API. Here are my initial thoughts:\r\n\r\n# Required commands\r\n## install\r\nCommand to install/manage packages\r\n\r\n**No options:**\r\n\r\n```bash\r\nppm install\r\n```\r\n\r\nIf `requirements-frozen.txt` is available, asserts it lines up with `requirements.txt`/`requirements-dev.txt` and installs from that.\r\n\r\nOtherwise, installs dependencies from `requirements.txt` and `requirements-dev.txt`\r\n\r\n**With package:**\r\n\r\n```bash\r\nppm install flask\r\n```\r\n\r\nInstalls `flask` via `pip`\r\n\r\n**Saving a package:**\r\n\r\n```bash\r\nppm install flask --save\r\nppm install flask --save-dev\r\n```\r\n\r\nInstalls `flask` and updates `requirements.txt` or `requirements-dev.txt` respectively. This should sort the files to guarantee easier diffs.\r\n\r\n**Installing and freezing a package:**\r\n\r\n```bash\r\nppm install flask --freeze\r\n```\r\n\r\nInstalls `flask` and updates `requirements-frozen.txt`. Under the hood, this will run the `ppm freeze` logic.\r\n\r\nThis can be chained with `--save` and `--save-dev`. Alternatively, if we make our library more specific to freezing, then we can make this always happen. Or maybe make it part of a config.\r\n\r\n## uninstall\r\nCommand to remove packages\r\n\r\n**With package:**\r\n\r\n```bash\r\nppm uninstall flask\r\n```\r\n\r\nRemoves `flask` via `pip`\r\n\r\n**Removing a saved package:**\r\n\r\n```bash\r\nppm install flask --save\r\nppm install flask --save-dev\r\n```\r\n\r\nRemoves `flask` and updates `requirements.txt` or `requirements-dev.txt` respectively. This should sort the files to guarantee easier diffs.\r\n\r\n**Removing and freezing a saved package:**\r\n\r\n```bash\r\nppm install flask --freeze\r\n```\r\n\r\nRemoves `flask` and updates `requirements-frozen.txt`. Under the hood, this will run the `ppm freeze` logic.\r\n\r\n## freeze\r\nCommand to freeze current set of dependencies\r\n\r\n**No options:**\r\n\r\n```bash\r\nppm freeze\r\n```\r\n\r\nTakes current set of dependencies and freeze it to `requirements-frozen.txt`. Under the hood, we will leverage `pip freeze`.\r\n\r\n## assert-freeze\r\nCommand to assert requirements are frozen\r\n\r\n**No options:**\r\n\r\n```bash\r\nppm assert-freeze\r\n```\r\n\r\nCompares `requirements-frozen.txt` to `requirements.txt` and `requirements-dev.txt`. It will complain about any extra dependencies in `requirements.txt`/`requirements-dev.txt` that aren't in `requirements-frozen.txt`\r\n"}}