GithubHelp home page GithubHelp logo

clydemcqueen / blueos-extensions-repository Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bluerobotics/blueos-extensions-repository

0.0 1.0 0.0 818 KB

A directory of BlueOS Extensions that can be installed quickly and easily on your robotic vehicle.

Home Page: https://docs.bluerobotics.com/BlueOS-Extensions-Repository/

Shell 2.18% Python 63.82% TypeScript 17.20% HTML 1.43% Vue 14.47% SCSS 0.90%

blueos-extensions-repository's Introduction

BlueOS-Extensions-Repository

Warning This is still very experimental and subject to changes!

This is a repository for metadata of BlueOS Extensions.

For publishing a new extension, open a pull request to this repository with the following structure:

Data in this repository

/repos/yourcompany/yourextension/metadata.json

{
    "name": "The Name of Your Extension",
    "website": "https://your.extension.website.com/",
    "docker": "your-dockerhub-user/your-extension-docker",
    "description": "A brief description of your extension. This will be shown in the store card."
}

/repos/yourcompany/yourextension/company_logo.png Your company logo

/repos/yourcompany/yourextension/extension_logo.png Your extension logo

Data in dockerhub

Additionally, we have versioned data. This data should be in each of your dockerhub tags, and use the following format:

LABEL version="1.0.0"
LABEL permissions='{\
  "ExposedPorts": {\
    "80/tcp": {}\          // we have a server at port 80
  },\
  "HostConfig": {\
    "PortBindings": {\
      "80/tcp": [\         // our server at port 80 is automatically bound to a free port in the host
        {\
          "HostPort": ""\
        }\
      ]\
    }\
  }\
}'
LABEL authors='[\
    {\
        "name": "John Doe",\
        "email": "[email protected]"\
    }\
]'
LABEL company='{\
  "about": "brief description",\
  "name": "Company/Person Name",\
  "email": "[email protected]"\
}'
LABEL readme="https://raw.githubusercontent.com/username/repo/{tag}/README.md"
LABEL links='{\
  "website": "https://...",\
  "support": "mailto:[email protected]",\
  "documentation": "https://docs.company.com/cool-extension/",\
}'
LABEL type="example"
LABEL tags='[\
  "positioning",\
  "navigation"\
]'
  • version is the name of the current tag, which we expect to be a valid semver.
  • permissionsis a json file that follows the Docker API payload for creating containers.
  • authors is a json list of authors of your extension
  • company is a json with information about the maintainer responsible for providing new versions
  • readme is a URL to a markdown-based README file for the extension
  • links is a collection of additional useful/relevant links
  • type is a primary categorisation of the extension, and should be one of:
    • "device-integration"
    • "example"
    • "theme"
    • "other"
  • tags is a collection of relevant tags for filtering, which should be lowercase alpha-numeric with dashes
    • limit of 10 per extension

Some additional information and examples are available in the metadata documentation.

How this repo works

Every time this repo changes, a Github Action runs and goes through all the .json files in here. For each of them, it reaches out to dockerhub and fetches all the available tags, extracting the metadata in LABELS and crafting a complete manifest.json, which is stored in this repo's gh-pages branch.

There is also a website that gets generated, to show which extensions are currently available in the store.

Testing the website locally

# clone and enter the repo
git clone ...
cd BlueOS-Extensions-Repository
# install yarn if necessary (`brew install yarn` on mac)
sudo apt install -y yarn
# install Python dependencies
python -m pip install --upgrade poetry
python -m poetry install
# generate the manifest (takes some time)
python -m poetry run blueos_repository/consolidate.py
# make the manifest accessible to the local website
mv manifest.json website/public/
# install website dependencies
cd website
yarn install --frozen-lockfile
# generate and serve the website locally, in development mode
yarn dev
... # go to http://localhost:3000/ in your browser (may need to refresh if it's not working)

blueos-extensions-repository's People

Contributors

clydemcqueen avatar es-alexander avatar hasanthesyrian avatar maphstr avatar martinbj-nortek avatar nicknothom avatar patrickelectric avatar rjehangir avatar williangalvani avatar wlseb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.