2014-06-13 11:53:51 +01:00
Contributing a module {#contributions }
=====================
2019-07-29 21:49:12 -07:00
In order to contribute to the project:
2015-03-25 17:09:20 -07:00
- The top of each source file must contain a comment block containing the
license information.
2019-07-29 21:49:12 -07:00
- Commits must be named `<file/module>: Some decent description` .
- Each commit must have a sign-off line by everyone who authored or reviewed
them.
- Your new module must have an example that builds against your UPM library.
2015-02-27 17:29:23 -08:00
- Attempt to have some decent API documentation as described in the the @ref
documentation [guide ](documentation.md ).
2014-06-13 11:53:51 +01:00
2015-03-13 17:38:01 -07:00
Including the MIT license
=========================
Choosing the [MIT license ](http://opensource.org/licenses/MIT ) is preferred for
2019-07-29 21:49:12 -07:00
the UPM repository. Below is the comment block needed at the top each source
2015-03-13 17:38:01 -07:00
file:
/*
2019-07-29 21:49:12 -07:00
* Author: < your full name >
2015-03-13 17:38:01 -07:00
* Copyright (c) < year > < copyright holder >
*
2019-07-29 21:49:12 -07:00
* Author: < contributing author full name - if applicable >
2015-03-13 17:38:01 -07:00
* Copyright (c) < year > < copyright holder >
*
2019-07-29 21:49:12 -07:00
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at https://opensource.org/licenses/MIT.
2015-03-13 17:38:01 -07:00
*
2019-07-29 21:49:12 -07:00
* SPDX-License-Identifier: MIT
2015-03-13 17:38:01 -07:00
*/
2019-05-08 16:17:34 -07:00
Eclipse Contributor Agreement
2014-12-15 16:23:59 +00:00
============
2019-05-08 16:17:34 -07:00
Your contribution cannot be accepted unless you have a signed [ECA - Eclipse Foundation Contributor Agreement ](http://www.eclipse.org/legal/ECA.php ) in place.
2014-12-15 16:23:59 +00:00
2019-05-08 16:17:34 -07:00
Here is the checklist for contributions to be considered _acceptable_ :
2014-12-15 16:23:59 +00:00
2019-05-08 16:17:34 -07:00
1. [Create an account at Eclipse ](https://dev.eclipse.org/site_login/createaccount.php ).
2. Add your GitHub user name in your account settings.
3. [Log into the project's portal ](https://projects.eclipse.org/ ) and sign the ["Eclipse ECA" ](https://projects.eclipse.org/user/sign/cla ).
4. Ensure that you [_sign-off_ ](https://wiki.eclipse.org/Development_Resources/Contributing_via_Git#Signing_off_on_a_commit ) your Git commits.
5. Ensure that you use the _same_ email address as your Eclipse account in commits.
6. Include the appropriate copyright notice and license at the top of each file.
2017-02-21 13:54:21 -08:00
2019-05-08 16:17:34 -07:00
Your signing of the ECA will be verified by a webservice called 'ip-validation'
that checks the email address that signed-off on your commits has signed the
ECA. **Note** : This service is case-sensitive, so ensure the email that signed
the ECA and that signed-off on your commits is the same, down to the case.
2017-02-21 13:54:21 -08:00
Creating a new sensor library using the sensortemplate
=======================================
A stubbed-out sensor library is available which can be leveraged to get
up-and-running quickly when writing a new sensor library. Use the shell
commands below to generate collateral files for your new sensor library.
```shell
2017-04-03 15:03:53 -07:00
#!/bin/bash
function make_new_sensor {
2017-04-11 17:36:09 -07:00
export SensorName=$1
# Get a lowercase version of the string
export sensorname=${SensorName,,}
2017-04-03 15:03:53 -07:00
# Make sure this is run from the root UPM directory
if ! grep -q 'UPM ' README.md; then echo "Please run from the root UPM directory"; return -1; fi
2017-04-11 17:36:09 -07:00
printf "Generating new sensor: ${SensorName}\n"
2017-04-03 15:03:53 -07:00
# Copy sensortemplate files to ${sensorname}
find docs/ examples/ src/ -name '*sensortemplate*' -exec bash -c 'cp -r $0 ${0/sensortemplate/${sensorname}}' {} \;
# Copy SensorTemplate files to ${SensorName}
find examples/ src/ -name '*SensorTemplate*' -exec bash -c 'cp -r $0 ${0/SensorTemplate/${SensorName}}' {} \;
# Rename sernsortemplate src files
rename "s/sensortemplate/${sensorname}/" src/${sensorname}/*
# Search/replace the new files, replacing all instances of sensortemplate
perl -p -i -e "s/SensorTemplate/${SensorName}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}*
perl -p -i -e "s/sensortemplate/${sensorname}/g" src/${sensorname}/* examples/*/*${sensorname}* examples/*/*${SensorName}*
2017-11-01 17:08:18 -07:00
# Remove objects starting with "//" from the new library descriptor .json file
perl -p -i -e 'BEGIN{undef $/;} s/\s+"\/\/.*?},//smg' src/${sensorname}/${sensorname}.json
2017-04-03 15:03:53 -07:00
# Add mynewmodule example target for java
perl -p -i -e "s/^((.*)SensorTemplateSample sensortemplate(.*))/\1\n\2${SensorName}Sample ${sensorname}\3/g" examples/java/CMakeLists.txt
# Add mynewmodule example mappings for doxygen
perl -p -i -e "s/^(.*SensorTemplateSample.*)$/\1\n${sensorname}.cxx\t${SensorName}Sample.java\t${sensorname}.js\t${sensorname}.py/g" doxy/samples.mapping.txt
# Display TODO's
printf "Generation complete for sensor library: ${SensorName}\n"
printf "TODO's:\n"
printf "\t1. Update src/hdr files: src/${sensorname}/${sensorname}.hpp src/${sensorname}/${sensorname}.cxx\n"
printf "\t\tChange the Author\n"
printf "\t\tChange the Copyright\n"
printf "\t\tUpdate all doxygen tags (follow directions for @tags )\n"
printf "\t2. Update examples: examples/*/${sensorname}.* examples/java/*${SensorName}*.java\n"
printf "\t3. Overwrite docs/images/${sensorname}.png with a valid image of your sensor\n"
}
# Call make_new_sensor with your new sensor name, example: 'MyNewSensor1234'
make_new_sensor MyNewSensor1234
2017-02-21 13:54:21 -08:00
```
Once all files have been created, they can be used as a starting-point for your
new library. They will need additional customization (your name/email address,
documentation, sensor images, etc).