mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Describe how to create new library and share it
This commit is contained in:
129
docs/librarymanager/create.rst
Normal file
129
docs/librarymanager/create.rst
Normal file
@ -0,0 +1,129 @@
|
||||
.. _library_create:
|
||||
.. |PIOAPICR| replace:: *PlatformIO-API Crawler*
|
||||
|
||||
Create Library
|
||||
==============
|
||||
|
||||
*PlatformIO* :ref:`librarymanager` doesn't has any requirements to a library
|
||||
source code structure. The only one requirement is library's manifest file -
|
||||
:ref:`library_config`. It can be located inside your library or in the another
|
||||
location where |PIOAPICR| will have *HTTP* access.
|
||||
|
||||
.. contents::
|
||||
|
||||
Source Code Location
|
||||
--------------------
|
||||
|
||||
There are a several ways how to share your library with the whole world
|
||||
(see `examples <https://github.com/ivankravets/platformio-libmirror/tree/master/configs>`_).
|
||||
|
||||
Also, you can hold a lot of libraries inside the one repository/archive in the
|
||||
different folders. In this case please use :ref:`libjson_include` field to
|
||||
specify the relative path to your library's source code.
|
||||
|
||||
|
||||
Source Code at GitHub
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**Recommended**
|
||||
|
||||
If the library source code is located at `GitHub <https://github.com>`_, then
|
||||
you **need to specify** only these fields in :ref:`library_config`:
|
||||
|
||||
* :ref:`libjson_name`
|
||||
* :ref:`libjson_keywords`
|
||||
* :ref:`libjson_description`
|
||||
* :ref:`libjson_repository`
|
||||
|
||||
|PIOAPICR| will populate the rest fields, like :ref:`libjson_version` or
|
||||
:ref:`libjson_author` with actual information from *GitHub*.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
{
|
||||
"name": "Arduino-IRremote",
|
||||
"keywords": "infrared, ir, remote",
|
||||
"description": "Send and receive infrared signals with multiple protocols",
|
||||
"repository":
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/shirriff/Arduino-IRremote.git"
|
||||
}
|
||||
}
|
||||
|
||||
Source Code under CVS (SVN/GIT)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|PIOAPICR| can operate with the library source code that is under *CVS* control.
|
||||
The list of **required** fields in :ref:`library_config` will look like:
|
||||
|
||||
* :ref:`libjson_name`
|
||||
* :ref:`libjson_keywords`
|
||||
* :ref:`libjson_description`
|
||||
* :ref:`libjson_author`
|
||||
* :ref:`libjson_repository`
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
{
|
||||
"name": "Arduino-XBee",
|
||||
"keywords": "xbee, protocol, radio",
|
||||
"description": "Arduino library for communicating with XBees in API mode",
|
||||
"author":
|
||||
{
|
||||
"name": "Andrew Rapp",
|
||||
"email": "andrew.rapp@gmail.com",
|
||||
"url": "https://code.google.com/u/andrew.rapp@gmail.com/"
|
||||
},
|
||||
"repository":
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://code.google.com/p/xbee-arduino/"
|
||||
}
|
||||
}
|
||||
|
||||
Source Code Archived (Zip, Tar.Gz)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You can manually archive your library source code and host it in the *Internet*.
|
||||
Then you should specify additional fields, like :ref:`libjson_version` and
|
||||
:ref:`libjson_downloadurl`. The final list of **required** fields in
|
||||
:ref:`library_config` will look like:
|
||||
|
||||
* :ref:`libjson_name`
|
||||
* :ref:`libjson_keywords`
|
||||
* :ref:`libjson_description`
|
||||
* :ref:`libjson_author`
|
||||
* :ref:`libjson_version`
|
||||
* :ref:`libjson_downloadurl`
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
{
|
||||
"name": "Arduino-OneWire",
|
||||
"keywords": "onewire, 1-wire, bus, sensor, temperature, ibutton",
|
||||
"description": "Control devices (from Dallas Semiconductor) that use the One Wire protocol (DS18S20, DS18B20, DS2408 and etc)",
|
||||
"author":
|
||||
{
|
||||
"name": "Paul Stoffregen",
|
||||
"url": "http://www.pjrc.com/teensy/td_libs_OneWire.html"
|
||||
},
|
||||
"version": "2.2",
|
||||
"downloadUrl": "http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip",
|
||||
"include": "OneWire"
|
||||
}
|
||||
|
||||
|
||||
Register
|
||||
--------
|
||||
|
||||
* The library must adhere to the :ref:`library_config` specification.
|
||||
* There must be public *HTTP* access to library :ref:`library_config` file.
|
||||
|
||||
Now, you can :ref:`register <cmd_lib_register>` your library and allow others
|
||||
to :ref:`install <cmd_lib_install>` it.
|
||||
|
@ -17,4 +17,5 @@ You don't need to bother for finding the latest version of library. Due to
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
create
|
||||
config
|
||||
|
26
docs/userguide/lib/cmd_register.rst
Normal file
26
docs/userguide/lib/cmd_register.rst
Normal file
@ -0,0 +1,26 @@
|
||||
.. _cmd_lib_register:
|
||||
|
||||
platformio lib register
|
||||
=======================
|
||||
|
||||
.. contents::
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
platformio lib regiter [HTTP_URL_TO_LIBRARY.JSON]
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
Register new library and allow others to install it.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ platformio lib register http://my.example.com/library.json
|
@ -16,6 +16,7 @@ To print all available commands and options use:
|
||||
|
||||
cmd_install
|
||||
cmd_list
|
||||
cmd_register
|
||||
cmd_search
|
||||
cmd_show
|
||||
cmd_uninstall
|
||||
|
Reference in New Issue
Block a user