• Stars
    star
    116
  • Rank 303,894 (Top 6 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The framework for building modular plugin based CLI's using Cobra and Golang

Charmil

Go Reference example workflow Discord Server


Framework for building command line plugins on top of Golang Cobra Library

Introduction

Charmil provides an ecosystem to build production ready command line tools using the Cobra Framework. It is an SDK which allows for the creation of CLIs that all adhere to a similarly structured architecture. It provides a level of elasticity to add and/ or remove a plugin CLI or subset of commands from a plugin CLI to a main 'host' CLI.

Architecture

Charmil provides a way to build a CLI ecosystem where developers can build multiple fragmented CLI's in various repositories and embed them later in the single host CLI. Charmil provides core base functionality that helps to abstract various elements of the CLI ecosystem:

  • Logging
  • Authentication
  • Configuration
  • Commands and Flags standards.

Charmil SDK will typically be introduced into two different CLIs:

  • Host CLI - CLI that is being used by end-user that can embed one or more plugin CLIs
  • Plugin CLIs - Separate CLIs that can be embedded into the host CLI

Components

Charmil Plugin framework starter template

Creating Golang CLI should be easy and fast. Charmil starter template provides fast way to build plugins and host commands that use Charmil SDK and Validator. Starter template contains all tools and solutions required to build a command line tool

Charmil SDK

Framework for building modular, multi repo Golang CLI's with Cobra Number of high level implementations for individual CLI creators for common problems like configuration, authentication and internationalization Provides the ability to embed modular CLI into hosts CLI at compile time.

Charmil Validator

Charmil Validator gives developers the ability to validate a group of their cobra commands against common practices. A Validator can check if commands are providing proper documentation, don't have overridden flags or provide shell completions. A Validator can be used as go unit test and run during CI/CD that simplifies the review of CLI's that contain commands that are hosted in multiple repositories.

Charmil Command Registry

Charmil command registry lets you provide an external index of the command line tools that can be installed dynamically and embedded into your host CLI. Developers can create CLI profiles to install multiple individual CLI's at the same time and keep them updated with various backends like Kubernetes/OpenShift etc.

Under Construction

Contributing

We would love to have you contribute. For contributing guidance please refer to CONTRIBUTING.

Documentation

Visit the Charmil Documentation

License

Licensed under the Apache License 2.0

More Repositories

1

offix

GraphQL Offline Client and Server
TypeScript
759
star
2

keycloak-metrics-spi

Adds a Metrics Endpoint to Keycloak
Java
536
star
3

aerogear-unifiedpush-server

🚀 AeroGear UnifiedPush Server
Java
457
star
4

create-graphql

Command-line utility to build production-ready servers with GraphQL.
JavaScript
440
star
5

graphback

Graphback - Out of the box GraphQL server and client
TypeScript
409
star
6

aerogear-ios-oauth2

Client library for OAuth2/OpenID Connect
Swift
163
star
7

keycloak-connect-graphql

Add Keyloak Authentication and Authorization to your GraphQL server.
TypeScript
155
star
8

datasync-voyager

🚀 Complete GraphQL Node.js Server ready for production
TypeScript
51
star
9

OpenVolunteerPlatform

Platform for building volunteer management systems dedicated for local gov and charity organizations
TypeScript
51
star
10

aerogear-ios-http

Lightweight lib around NSURLSession to ease HTTP calls
Swift
45
star
11

aerogear-android-cookbook

Java
41
star
12

graphql-link

graphql-link is a GraphQL server that composes other GraphQL or OpenAPI endpoints
CSS
38
star
13

offix-android

Apollo GraphQL offline extensions for Android Platform
Kotlin
37
star
14

aerogear-cordova-push

✨ Cordova plugin to support AeroGear UnifiedPush notifications ✨
JavaScript
34
star
15

datasync-starter

GraphQL Low Code React and Node.js DataSync Application template
TypeScript
32
star
16

graphql-query-mapper

Query your GraphQL data efficiently
TypeScript
30
star
17

aerogear-ios-push

AeroGear UnifiedPush Client Registration SDK (Swift)
Swift
29
star
18

graphql-metadata

Annotate your graphql schema with lightweight directives
TypeScript
28
star
19

aerogear-ios-cookbook

Swift
23
star
20

android-showcase-template

Showcase template app for the AeroGear Android SDK
Java
21
star
21

graphql-testx

A GraphQL server for testing GraphQL applications or libraries based on Graphback
TypeScript
15
star
22

aerogear-android-push

Push provides support for integrating with push. Currently only using Firebase Cloud Messaging (FCM) with the AeroGear UnifiedPush Server (UPS)
Java
15
star
23

uniforms-patternfly

Uniforms patternfly
TypeScript
13
star
24

push-network-proxies

Simple mock/proxy servers for FCM and APNs
Java
13
star
25

aerogear.org

Jekyll based project site repo for aerogear.org
HTML
12
star
26

aerogear-unifiedpush-nodejs-client

Node.js API to access the Unified Push Server
JavaScript
12
star
27

aerogear-digger

Digger on Jenkins: An OpenSource Build Farm for mobile app builds in the cloud
Ruby
10
star
28

mobile-developer-console

Mobile Developer Console
CSS
9
star
29

aerogear-js-sdk

AeroGear Mobile SDK
TypeScript
9
star
30

mobile-security-service-operator

Go
9
star
31

mobile-docs

Documentation for setting up and using Mobile Services on OpenShift
JavaScript
8
star
32

aerogear-android-sdk

AeroGear Services Android SDK
Java
8
star
33

trira

A simple tool to sync Trello Cards with JIRA Tasks
JavaScript
8
star
34

modern-appdev-workshop

Workshop for enterprise enabled modern application development
TypeScript
6
star
35

aerogear-ios-sdk

AeroGear Services Swift SDK
Swift
6
star
36

graphql-home

AeroGear GraphQL projects and ideas
6
star
37

aerogear-unifiedpush-java-client

Java API to access the Unified Push Server
Java
6
star
38

charmil-host-example

Rhoas CLI as an Host example
Go
5
star
39

uniforms-ionic

Dynamic generation of React Forms using Ionic
TypeScript
5
star
40

unifiedpush-operator

☸️ Kubernetes operator for the AeroGear UnifiedPush Server
Go
4
star
41

native-android-example

Java
4
star
42

mobile-services-installer

Install Mobile Services on OpenShift
Shell
4
star
43

aerogear-digger-installer

Ansible role for installing AeroGear Digger on OpenShift
Groovy
4
star
44

ups-mock-data-loader

A tool that can be used to populate an UPS server with mock applications, variants and tokens
Java
3
star
45

unifiedpush-admin-client

Client library for Unified Push Administration
TypeScript
3
star
46

ios-showcase-template

Showcase template app for the AeroGear iOS SDK
Swift
3
star
47

aerogear-android-pipe

Pipe is a metaphor for connecting to a remote web service
Java
3
star
48

offix-react-native-example

Sample react app for offix.dev
TypeScript
3
star
49

charmil-plugin-example

Service registry artifacts commands from Rhoas as a plugin example
Go
2
star
50

ups-config-operator

Go
2
star
51

GSoC-2020

The landing page for potential Google Summer of Code students
2
star
52

aerogear-integration-tests

TypeScript
2
star
53

aerogear-push-js

Push support for cordova apps
TypeScript
2
star
54

mobile-security-service

Go
2
star
55

aerogear-parent

2
star
56

git-practical

Git Practical
2
star
57

unifiedpush-cli

A CLI to interact with the UnifiedPush Server
TypeScript
2
star
58

aerogear-android-core

Common components and interfaces which the rest of the AeroGear Android libraries depend on
Java
2
star
59

digger-android-slave-image

Dockerfile to create Jenkins slave images to build Android apps
Dockerfile
2
star
60

antora-ui

Styling used by antora to produce docs.aerogear.org
CSS
2
star
61

mobile-security

AeroGear Mobile Security https://docs.aerogear.org/mobile-security/latest/
HTML
1
star
62

aerogear-digger-node-client

Node.js integration lib
JavaScript
1
star
63

ag-cli

Aerogear Command Line Interface
TypeScript
1
star
64

charmil-starter

charmil-starter
Go
1
star
65

ups-operator-poc

A POC to demo how to convert an APB to an Ansible type operator
Python
1
star
66

docs.aerogear.org

Generated html for https://docs.aerogear.org
HTML
1
star
67

unifiedpush-cookbook

TypeScript
1
star
68

datasync-deployment

AeroGear DataSync Deployment
Shell
1
star
69

mobile-walkthrough

Data Sync Solution Pattern using GraphQL
1
star
70

aerogear-reactnative-push

React Native library for Unified Push
Java
1
star
71

xamarin-showcase-template

Xamarin showcase template
C#
1
star
72

test-suite

JavaScript
1
star
73

web-encrypted-storage

This repository is an example of how you can leverage the web storage api: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API to provide secure storage on your device using the web crypto api: https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API
TypeScript
1
star