config/update_project_management #32
							
								
								
									
										136
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								README.md
									
									
									
									
									
								
							| @ -51,36 +51,51 @@ and open source. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## Development | ||||
| ## Contribution | ||||
| 
 | ||||
| Clone this repo. | ||||
| 
 | ||||
| You have to install [melos](https://github.com/invertase/melos). | ||||
| ```shell | ||||
| git clone ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git | ||||
| ``` | ||||
| 
 | ||||
| ### Prerequisite | ||||
| 
 | ||||
| - [Flutter](https://github.com/flutter/flutter). | ||||
| 
 | ||||
| - [Melos](https://github.com/invertase/melos). Used to manage Dart projects with multiple packages. | ||||
| 
 | ||||
| ```shell | ||||
| dart pub global activate melos | ||||
| ``` | ||||
| 
 | ||||
| Then bootstrap with `melos bs`. | ||||
| - [Mason](https://github.com/felangel/mason). Used for code generation. | ||||
| 
 | ||||
| ```shell | ||||
| dart pub global activate mason_cli | ||||
| ``` | ||||
| 
 | ||||
| - [Lcov](https://github.com/linux-test-project/lcov). Used to generate coverage data. | ||||
| 
 | ||||
| ```shell | ||||
| # on macos | ||||
| brew install lcov | ||||
| ``` | ||||
| 
 | ||||
| - genhtml. Used to convert coverage data into html pages. | ||||
| 
 | ||||
| After installing all these packages, bootstrap with `melos bs`. | ||||
| 
 | ||||
| ### Create a new package | ||||
| 
 | ||||
| Create a new package in `packages/` folder. | ||||
| 
 | ||||
| ```shell | ||||
| dart create -t package-simple wyatt_<name> | ||||
| ``` | ||||
| 
 | ||||
| Remove any `example/` subfolder. Then create a new sample project. | ||||
| 
 | ||||
| ```shell | ||||
| flutter create --platforms android --project-name <name>_example example | ||||
| mason make wyatt_package --package_name  wyatt_<name> --description A new Wyatt package --flutter_only false | ||||
| ``` | ||||
| 
 | ||||
| Then bootstrap project with `melos bs` command. | ||||
| 
 | ||||
| ### Convention | ||||
| 
 | ||||
| #### Naming | ||||
| 
 | ||||
| In the previous instructions `<name>` variable is important. | ||||
| @ -93,15 +108,44 @@ You **MUST** use `wyatt` prefix for package. | ||||
| You **MUST** name example with specific name. | ||||
| 
 | ||||
| For example, if name is CRUD BLOC | ||||
| 
 | ||||
| - name will be crud_bloc | ||||
| - so the package will be: `wyatt_crud_bloc` | ||||
| - and the example will be: `crud_bloc_example` | ||||
| 
 | ||||
| #### Commits | ||||
| ### Create issues | ||||
| 
 | ||||
| Add the issues directly related to what you want to develop and label them correctly. | ||||
| 
 | ||||
| ``` | ||||
| Type(scope): issue. | ||||
| ``` | ||||
| 
 | ||||
| For example, on notification bloc package : | ||||
| 
 | ||||
| - `Feature(notification_bloc): add firebase messaging data source.` | ||||
| - `Test(notification_bloc): add test for pushwoosh datasource.` | ||||
| 
 | ||||
| ### Branches | ||||
| 
 | ||||
| Master is protected. You can't push on it. Please develop your feature on another branch. The name of your branch has to match with the issue opened. | ||||
| 
 | ||||
| `type(scope):issue` | ||||
| 
 | ||||
| Example : | ||||
| Issue : | ||||
| 
 | ||||
| - `Feature(notification_bloc): add firebase messaging data source.` | ||||
| 
 | ||||
| Branch related to this issue : | ||||
| 
 | ||||
| - `feature(notification_bloc)/add_firebase_messaging_data_source` | ||||
| 
 | ||||
| ### Commits | ||||
| 
 | ||||
| See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. | ||||
| 
 | ||||
| tl;dr : `type(scope): description`. | ||||
| tl;dr : `type(scope): description #issue`. | ||||
| Here allowed <type> values: | ||||
| 
 | ||||
| - **feat** for a new feature for the user, not a new feature for build script. Such commit will trigger a release bumping a MINOR version. | ||||
| @ -115,11 +159,68 @@ Here allowed <type> values: | ||||
| 
 | ||||
| Some examples : | ||||
| 
 | ||||
| - `feat(auth): add AWS support.` = add a feature in authentication_bloc package. | ||||
| - `feat(auth): add AWS support. (#31)` = add a feature in authentication_bloc package, linked to the 31st issue. | ||||
| - `docs: update readme.` = update **this** readme file. | ||||
| - `fix(crud)!: fix bug in awesome() function.` = fix a bug, `!` is important and indicate `BREAKING CHANGES`. | ||||
| - `fix(crud)!: fix bug in awesome() function. (#32)` = fix a bug, `!` is important and indicate `BREAKING CHANGES` linked with the 32nd issue. | ||||
| 
 | ||||
| Conventional commits are important for `melos version` command ! | ||||
| When you have finished developing, and are ready to close the issue, close it via your commit : | ||||
| 
 | ||||
| `feat(auth): add AWS support. (close #31)` | ||||
| 
 | ||||
| Note that your issue will be close after merging on master. | ||||
| Before closing the issue, please check tests and update coverage. You might run : | ||||
| 
 | ||||
| ```shell | ||||
| melos run test | ||||
| melos run gen_coverage | ||||
| ``` | ||||
| 
 | ||||
| #### Merge your work | ||||
| 
 | ||||
| After closing your issue, some work may have been done on master in the meantime. To keep a clean git history, please rebase before opening a change request. | ||||
| 
 | ||||
| Two situations : | ||||
| 
 | ||||
| - You have not yet created your branch and have committed locally : | ||||
| 
 | ||||
| ```shell | ||||
| git pull --rebase | ||||
| ``` | ||||
| 
 | ||||
| - You are already working on your branch : | ||||
| 
 | ||||
| ```shell | ||||
| git rebase -i master | ||||
| ``` | ||||
| 
 | ||||
| If possible, please use `--fixup` on your commit in interactive rebase. | ||||
| 
 | ||||
| Then, opend your PR, get the necessary approval and merge your work. Then you're done ✅. | ||||
| 
 | ||||
| #### Update version. | ||||
| 
 | ||||
| Once your work is on the master, you can update your package version. Please filter packages to update only your package. `--scope` is used to do it. | ||||
| For example, after merging changes on `nwyatt_otification_bloc` package, you might run : | ||||
|  | ||||
| 
 | ||||
| ```shell | ||||
| melos version --scope="*wyatt_notification_bloc*" | ||||
| ``` | ||||
| 
 | ||||
| In fact, melos will filter all packages that match the `wyatt_notification_block` pattern. | ||||
| 
 | ||||
| You can update check all packages tests by running : | ||||
| 
 | ||||
| ```shell | ||||
| melos run test | ||||
| ``` | ||||
| 
 | ||||
| #### Publish your package | ||||
| 
 | ||||
| If package is ready for procution, publish it runnig : | ||||
| 
 | ||||
| ```shell | ||||
| melos publish --scope"*package*" | ||||
| ``` | ||||
| 
 | ||||
| #### Badging | ||||
| 
 | ||||
| @ -130,6 +231,7 @@ In the package `readme.md` file, please specify the supported SDK: | ||||
| ```markdown | ||||
|  | ||||
| ``` | ||||
| 
 | ||||
| or | ||||
| 
 | ||||
|  | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	
typo here in
wyatt