{"action":"created","comment":{"url":"https://api.github.com/repos/YunoHost/doc/pulls/comments/89992615","pull_request_review_id":10512662,"id":89992615,"diff_hunk":"@@ -1,91 +1,164 @@\n-## Créer un environnement de développement\n-\n-<div class=\"alert alert-info\">\n-<b>Attention :</b> cette page de documentation n’est plus à jour. Merci de vous référer à la [documentation du dépôt](https://github.com/YunoHost/ynh-dev).\n-</div>\n-\n-Ce document a pour but de donner les clés pour créer un environnement de développement correct afin de développer sur le cœur de YunoHost. Il peut également vous permettre de tester vos applications que ce soit avec les versions `stable`, `testing`, `unstable` ou même des versions customisées issues des branches des dépôts.\n-\n-### Installation de l’environnement de développement\n-#### Installation du système de virtualisation\n-Installer, avec le gestionnaire de paquet de votre système d’exploitation, Vagrant.\n-\n-```bash\n-# Debian, Ubuntu, Mint\n-sudo apt-get install vagrant\n-# Fedora\n-sudo dnf install vagrant\n-```\n-\n-#### Télécharger `ynh-dev`\n-<div class=\"alert alert-warning\">\n-<b>Attention :</b> Cette partie est en cours de rédaction. La ligne de commande `ynh-dev` vient juste d’être créée il est possible qu’il y ait des manques.\n-</div>\n-\n-Une ligne de commande `ynh-dev` a été créée afin de simplifier la gestion de votre environnement de développement.\n-\n-```bash\n-wget https://raw.githubusercontent.com/yunohost/ynh-dev/master/ynh-dev\n-chmod u+x ynh-dev\n-```\n-Pour créer votre environnement, commencez par faire un `create-env`\n-```bash\n-./ynh-dev create-env ~/project/my/yunohost/env\n-```\n-Cette sous commande va cloner les dépôts principaux au fonctionnement de YunoHost et les positionner en `unstable`. Si vous avez vos propres fork, vous pouvez ensuite faire ce qu’il faut pour changer l’origine et le remote repository.\n-\n-#### Usage\n-##### Lancer un container\n-Positionner vous dans votre environnement, puis créer et entrer dans une vm à l’aide de `ynh-dev run`\n-```bash\n-cd ~/project/my/yunohost/env\n-./ynh-dev run exemple.local stable8\n-root@yunohost:/# cd yunohost\n-root@yunohost:/yunohost/# ls\n-Dockerfile  LICENSE  README.md\tSSOwat\tapps  backup  moulinette  ynh-dev  yunohost  yunohost-admin  yunohost-vagrant\n-```\n-\n-##### Mettre à jour un container\n-Si la vm n’est pas à jour lancez un `ynh-dev upgrade` :\n-```bash\n-root@yunohost:/yunohost/# ./ynh-dev upgrade\n-```\n-\n-##### Déployer les sources présentes dans votre environnement\n-Pour déployer les sources se trouvant dans votre environnement de développement faites :\n-```bash\n-root@yunohost:/yunohost/# ./ynh-dev deploy\n-```\n-\n-<div class=\"alert alert-warning\">\n-<b>Attention :</b> pour yunohost-admin vous devez avoir compilé le js avec gulp au préalable\n-</div>\n-\n-<div class=\"alert alert-warning\">\n-<b>Note :</b> vous pouvez sélectionner les paquets à déployer exemple : `./ynh-dev deploy yunohost yunohost-admin`\n-</div>\n-\n-##### Lancer la postinstall\n-Avec VirtualBox/Vagrant\n-```bash\n-root@yunohost:/yunohost/# yunohost tools postinstall\n-```\n-\n-##### Récupérer l’IP de la vm et paramétrer son `/etc/hosts`\n-si vous ne connaissez pas l’IP de votre vm :\n-```bash\n-root@yunohost:/yunohost/# ./ynh-dev ip\n-172.17.0.1\n-```\n-\n-Pour tester dans votre navigateur vous pouvez modifier votre fichier `/etc/hosts` afin de faire pointer votre domaine sur la bonne adresse IP. Par exemple en y ajoutant une ligne semblable à celle-ci :\n-```bash\n-172.17.0.1   exemple.local\n-```\n-\n-##### Déployer les sources au fur et à mesure des modifications\n-```bash\n-root@yunohost:/yunohost/# ./ynh-dev watch\n-```\n-\n-Astuce : dans le cas de modification sur yunohost-admin, cette commande est très pratique couplée avec un `gulp watch` sur la machine hôte.\n+## Contribuer au coeur de Yunohost\n+\n+Vous souhaitez ajouter une nouvelle fonctionnalité au coeur de Yunohost, mais ne\n+savez pas comment procéder ? Ce guide parcours les étapes du développement et du\n+processus de contribution.\n+\n+Si vous chercher quelque chose à implémenter ou un bug à réparer, le\n+bug tracker est [ici](https://dev.yunohost.org/issues/) !\n+\n+**Venez dire coucou sur le [salon de\n+dev](xmpp:dev@conference.yunohost.org?join)** ! Si vous n'avez pas de client\n+XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.\n+\n+### Mettre en place un environnement de développement\n+\n+- **Utilisez [ynh-dev](https://github.com/YunoHost/ynh-dev)** (voir le README)\n+  pour mettre en place un environnement de développement - en local sur une\n+  machine virtuel, ou bien sur un VPS.\n+  Ceci installera une instance fonctionelle de Yunohost, en utilisant\n+  directement les dépôts git à l'aide de liens symboliques. De cette facon, il\n+  vous sera possible de modifier les fichiers, de tester les changements en\n+  temps réel, et de commiter et push/pull directement depuis cet environnement.\n+\n+- **Implémentez et testez votre fonctionnalité**. Suivant ce sur quoi vous\n+  voulez travailler :\n+   - **Coeur Python/ligne de comande** : allez dans `/vagrant/yunohost/`\n+   - **Interface d'administration web** : allez dans `/vagrant/yunohost-admin/`\n+   - Vous pouvez aussi travailler sur les autres projets liés sur lesquels\n+     s'appuie Yunohost (SSOwat, moulinette) de facon similaire.\n+\n+### Travailler sur le coeur Python / ligne de commande\n+\n+- Allez dans `/vagrant/yunohost/`.\n+\n+- Executez `/vagrant/ynh-dev use-git yunohost`.\n+\n+- Le fichier actionsmap (`data/actionsmap/yunohost.yml`) défini les différentes\n+  catégories, actions et arguments de la ligne de commande Yunohost. Choisissez\n+  comment vous voulez que les utilisateurs utilise votre fonctionnalité, et\n+  ajoutez/éditez les catégories, actions et arguments correspondants. Par\n+  exemple, dans `yunohost domain add some.domain.tld`, la catégorie est\n+  `domain`, l'action est `add` et `some.domain.tld` est un argument.\n+\n+- Moulinette va automatiquement faire le lien entre les commandes de\n+  l'actionsmap et les fonctions python (ainsi que leurs arguments) dans\n+  `src/yunohost/`. Par exemple, `yunohost domain add some.domain.tld`\n+  déclenchera un appel de `domain_add(domainName)` dans `domain.py`, avec l'argument \n+  `domainName` qui vaudra `\"some.domain.tld\"`.\n+\n+##### Helpers / style de code\n+\n+- Pour gérer les exceptions, il existe un type `MoulinetteError()`\n+\n+- Pour aider avec l'internationalisation des messages, utilisez `m18n.n('some-message-id')`\n+  et mettez le message correspondant dans `locales/en.json`. Vous pouvez aussi\n+  utiliser des arguments pour construire les messages, avec `{{some-argument:s}}`. \n+  Ne modifiez pas de fichiers de locales autres que en.json, la traduction sera\n+  faite avec [weblate](https://translate.yunohost.org/) !\n+\n+- Yunohost essaye de suivre le style de code [pep8](http://pep8.org/). Des","path":"dev_fr.md","position":151,"original_position":151,"commit_id":"a8773ae33d85576a4e55f1bcfc03f7d0cb1c0e6b","original_commit_id":"a8773ae33d85576a4e55f1bcfc03f7d0cb1c0e6b","user":{"login":"theodorefaure","id":1141684,"avatar_url":"https://avatars.githubusercontent.com/u/1141684?v=3","gravatar_id":"","url":"https://api.github.com/users/theodorefaure","html_url":"https://github.com/theodorefaure","followers_url":"https://api.github.com/users/theodorefaure/followers","following_url":"https://api.github.com/users/theodorefaure/following{/other_user}","gists_url":"https://api.github.com/users/theodorefaure/gists{/gist_id}","starred_url":"https://api.github.com/users/theodorefaure/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theodorefaure/subscriptions","organizations_url":"https://api.github.com/users/theodorefaure/orgs","repos_url":"https://api.github.com/users/theodorefaure/repos","events_url":"https://api.github.com/users/theodorefaure/events{/privacy}","received_events_url":"https://api.github.com/users/theodorefaure/received_events","type":"User","site_admin":false},"body":"Yuno**H**ost","created_at":"2016-11-29T11:39:56Z","updated_at":"2016-11-29T11:41:55Z","html_url":"https://github.com/YunoHost/doc/pull/415#discussion_r89992615","pull_request_url":"https://api.github.com/repos/YunoHost/doc/pulls/415","_links":{"self":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/comments/89992615"},"html":{"href":"https://github.com/YunoHost/doc/pull/415#discussion_r89992615"},"pull_request":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/415"}}},"pull_request":{"url":"https://api.github.com/repos/YunoHost/doc/pulls/415","id":95104837,"html_url":"https://github.com/YunoHost/doc/pull/415","diff_url":"https://github.com/YunoHost/doc/pull/415.diff","patch_url":"https://github.com/YunoHost/doc/pull/415.patch","issue_url":"https://api.github.com/repos/YunoHost/doc/issues/415","number":415,"state":"open","locked":false,"title":"[enh] Summary of the steps to contribute/dev on the core of Yunohost","user":{"login":"alexAubin","id":4533074,"avatar_url":"https://avatars.githubusercontent.com/u/4533074?v=3","gravatar_id":"","url":"https://api.github.com/users/alexAubin","html_url":"https://github.com/alexAubin","followers_url":"https://api.github.com/users/alexAubin/followers","following_url":"https://api.github.com/users/alexAubin/following{/other_user}","gists_url":"https://api.github.com/users/alexAubin/gists{/gist_id}","starred_url":"https://api.github.com/users/alexAubin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexAubin/subscriptions","organizations_url":"https://api.github.com/users/alexAubin/orgs","repos_url":"https://api.github.com/users/alexAubin/repos","events_url":"https://api.github.com/users/alexAubin/events{/privacy}","received_events_url":"https://api.github.com/users/alexAubin/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-11-24T01:34:54Z","updated_at":"2016-11-29T11:41:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c717dcfb02809605f7ad4cd9efca6fffeb35346d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/YunoHost/doc/pulls/415/commits","review_comments_url":"https://api.github.com/repos/YunoHost/doc/pulls/415/comments","review_comment_url":"https://api.github.com/repos/YunoHost/doc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/YunoHost/doc/issues/415/comments","statuses_url":"https://api.github.com/repos/YunoHost/doc/statuses/a8773ae33d85576a4e55f1bcfc03f7d0cb1c0e6b","head":{"label":"alexAubin:master","ref":"master","sha":"a8773ae33d85576a4e55f1bcfc03f7d0cb1c0e6b","user":{"login":"alexAubin","id":4533074,"avatar_url":"https://avatars.githubusercontent.com/u/4533074?v=3","gravatar_id":"","url":"https://api.github.com/users/alexAubin","html_url":"https://github.com/alexAubin","followers_url":"https://api.github.com/users/alexAubin/followers","following_url":"https://api.github.com/users/alexAubin/following{/other_user}","gists_url":"https://api.github.com/users/alexAubin/gists{/gist_id}","starred_url":"https://api.github.com/users/alexAubin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexAubin/subscriptions","organizations_url":"https://api.github.com/users/alexAubin/orgs","repos_url":"https://api.github.com/users/alexAubin/repos","events_url":"https://api.github.com/users/alexAubin/events{/privacy}","received_events_url":"https://api.github.com/users/alexAubin/received_events","type":"User","site_admin":false},"repo":{"id":45561494,"name":"doc","full_name":"alexAubin/doc","owner":{"login":"alexAubin","id":4533074,"avatar_url":"https://avatars.githubusercontent.com/u/4533074?v=3","gravatar_id":"","url":"https://api.github.com/users/alexAubin","html_url":"https://github.com/alexAubin","followers_url":"https://api.github.com/users/alexAubin/followers","following_url":"https://api.github.com/users/alexAubin/following{/other_user}","gists_url":"https://api.github.com/users/alexAubin/gists{/gist_id}","starred_url":"https://api.github.com/users/alexAubin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexAubin/subscriptions","organizations_url":"https://api.github.com/users/alexAubin/orgs","repos_url":"https://api.github.com/users/alexAubin/repos","events_url":"https://api.github.com/users/alexAubin/events{/privacy}","received_events_url":"https://api.github.com/users/alexAubin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/alexAubin/doc","description":"Documentation of YunoHost","fork":true,"url":"https://api.github.com/repos/alexAubin/doc","forks_url":"https://api.github.com/repos/alexAubin/doc/forks","keys_url":"https://api.github.com/repos/alexAubin/doc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexAubin/doc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexAubin/doc/teams","hooks_url":"https://api.github.com/repos/alexAubin/doc/hooks","issue_events_url":"https://api.github.com/repos/alexAubin/doc/issues/events{/number}","events_url":"https://api.github.com/repos/alexAubin/doc/events","assignees_url":"https://api.github.com/repos/alexAubin/doc/assignees{/user}","branches_url":"https://api.github.com/repos/alexAubin/doc/branches{/branch}","tags_url":"https://api.github.com/repos/alexAubin/doc/tags","blobs_url":"https://api.github.com/repos/alexAubin/doc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexAubin/doc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexAubin/doc/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexAubin/doc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexAubin/doc/statuses/{sha}","languages_url":"https://api.github.com/repos/alexAubin/doc/languages","stargazers_url":"https://api.github.com/repos/alexAubin/doc/stargazers","contributors_url":"https://api.github.com/repos/alexAubin/doc/contributors","subscribers_url":"https://api.github.com/repos/alexAubin/doc/subscribers","subscription_url":"https://api.github.com/repos/alexAubin/doc/subscription","commits_url":"https://api.github.com/repos/alexAubin/doc/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexAubin/doc/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexAubin/doc/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexAubin/doc/issues/comments{/number}","contents_url":"https://api.github.com/repos/alexAubin/doc/contents/{+path}","compare_url":"https://api.github.com/repos/alexAubin/doc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexAubin/doc/merges","archive_url":"https://api.github.com/repos/alexAubin/doc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexAubin/doc/downloads","issues_url":"https://api.github.com/repos/alexAubin/doc/issues{/number}","pulls_url":"https://api.github.com/repos/alexAubin/doc/pulls{/number}","milestones_url":"https://api.github.com/repos/alexAubin/doc/milestones{/number}","notifications_url":"https://api.github.com/repos/alexAubin/doc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexAubin/doc/labels{/name}","releases_url":"https://api.github.com/repos/alexAubin/doc/releases{/id}","deployments_url":"https://api.github.com/repos/alexAubin/doc/deployments","created_at":"2015-11-04T19:14:59Z","updated_at":"2016-11-24T01:34:37Z","pushed_at":"2016-11-27T04:14:08Z","git_url":"git://github.com/alexAubin/doc.git","ssh_url":"git@github.com:alexAubin/doc.git","clone_url":"https://github.com/alexAubin/doc.git","svn_url":"https://github.com/alexAubin/doc","homepage":"https://yunohost.org","size":5267,"stargazers_count":0,"watchers_count":0,"language":"Shell","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"YunoHost:master","ref":"master","sha":"ccec909343e3132f5e5807d9b0685a0a3ef01e68","user":{"login":"YunoHost","id":1519495,"avatar_url":"https://avatars.githubusercontent.com/u/1519495?v=3","gravatar_id":"","url":"https://api.github.com/users/YunoHost","html_url":"https://github.com/YunoHost","followers_url":"https://api.github.com/users/YunoHost/followers","following_url":"https://api.github.com/users/YunoHost/following{/other_user}","gists_url":"https://api.github.com/users/YunoHost/gists{/gist_id}","starred_url":"https://api.github.com/users/YunoHost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YunoHost/subscriptions","organizations_url":"https://api.github.com/users/YunoHost/orgs","repos_url":"https://api.github.com/users/YunoHost/repos","events_url":"https://api.github.com/users/YunoHost/events{/privacy}","received_events_url":"https://api.github.com/users/YunoHost/received_events","type":"Organization","site_admin":false},"repo":{"id":14433715,"name":"doc","full_name":"YunoHost/doc","owner":{"login":"YunoHost","id":1519495,"avatar_url":"https://avatars.githubusercontent.com/u/1519495?v=3","gravatar_id":"","url":"https://api.github.com/users/YunoHost","html_url":"https://github.com/YunoHost","followers_url":"https://api.github.com/users/YunoHost/followers","following_url":"https://api.github.com/users/YunoHost/following{/other_user}","gists_url":"https://api.github.com/users/YunoHost/gists{/gist_id}","starred_url":"https://api.github.com/users/YunoHost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YunoHost/subscriptions","organizations_url":"https://api.github.com/users/YunoHost/orgs","repos_url":"https://api.github.com/users/YunoHost/repos","events_url":"https://api.github.com/users/YunoHost/events{/privacy}","received_events_url":"https://api.github.com/users/YunoHost/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/YunoHost/doc","description":"YunoHost documentation","fork":false,"url":"https://api.github.com/repos/YunoHost/doc","forks_url":"https://api.github.com/repos/YunoHost/doc/forks","keys_url":"https://api.github.com/repos/YunoHost/doc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/YunoHost/doc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/YunoHost/doc/teams","hooks_url":"https://api.github.com/repos/YunoHost/doc/hooks","issue_events_url":"https://api.github.com/repos/YunoHost/doc/issues/events{/number}","events_url":"https://api.github.com/repos/YunoHost/doc/events","assignees_url":"https://api.github.com/repos/YunoHost/doc/assignees{/user}","branches_url":"https://api.github.com/repos/YunoHost/doc/branches{/branch}","tags_url":"https://api.github.com/repos/YunoHost/doc/tags","blobs_url":"https://api.github.com/repos/YunoHost/doc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/YunoHost/doc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/YunoHost/doc/git/refs{/sha}","trees_url":"https://api.github.com/repos/YunoHost/doc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/YunoHost/doc/statuses/{sha}","languages_url":"https://api.github.com/repos/YunoHost/doc/languages","stargazers_url":"https://api.github.com/repos/YunoHost/doc/stargazers","contributors_url":"https://api.github.com/repos/YunoHost/doc/contributors","subscribers_url":"https://api.github.com/repos/YunoHost/doc/subscribers","subscription_url":"https://api.github.com/repos/YunoHost/doc/subscription","commits_url":"https://api.github.com/repos/YunoHost/doc/commits{/sha}","git_commits_url":"https://api.github.com/repos/YunoHost/doc/git/commits{/sha}","comments_url":"https://api.github.com/repos/YunoHost/doc/comments{/number}","issue_comment_url":"https://api.github.com/repos/YunoHost/doc/issues/comments{/number}","contents_url":"https://api.github.com/repos/YunoHost/doc/contents/{+path}","compare_url":"https://api.github.com/repos/YunoHost/doc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/YunoHost/doc/merges","archive_url":"https://api.github.com/repos/YunoHost/doc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/YunoHost/doc/downloads","issues_url":"https://api.github.com/repos/YunoHost/doc/issues{/number}","pulls_url":"https://api.github.com/repos/YunoHost/doc/pulls{/number}","milestones_url":"https://api.github.com/repos/YunoHost/doc/milestones{/number}","notifications_url":"https://api.github.com/repos/YunoHost/doc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/YunoHost/doc/labels{/name}","releases_url":"https://api.github.com/repos/YunoHost/doc/releases{/id}","deployments_url":"https://api.github.com/repos/YunoHost/doc/deployments","created_at":"2013-11-15T19:58:06Z","updated_at":"2016-11-10T23:15:56Z","pushed_at":"2016-11-29T10:15:44Z","git_url":"git://github.com/YunoHost/doc.git","ssh_url":"git@github.com:YunoHost/doc.git","clone_url":"https://github.com/YunoHost/doc.git","svn_url":"https://github.com/YunoHost/doc","homepage":"https://yunohost.org","size":5551,"stargazers_count":54,"watchers_count":54,"language":"Shell","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":107,"mirror_url":null,"open_issues_count":9,"forks":107,"open_issues":9,"watchers":54,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/415"},"html":{"href":"https://github.com/YunoHost/doc/pull/415"},"issue":{"href":"https://api.github.com/repos/YunoHost/doc/issues/415"},"comments":{"href":"https://api.github.com/repos/YunoHost/doc/issues/415/comments"},"review_comments":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/415/comments"},"review_comment":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/YunoHost/doc/pulls/415/commits"},"statuses":{"href":"https://api.github.com/repos/YunoHost/doc/statuses/a8773ae33d85576a4e55f1bcfc03f7d0cb1c0e6b"}}}}
{"actor":{"display_login":"theodorefaure"}}