forked from toolshed/docs.coopcloud.tech
		
	docs: add note about public API
This commit is contained in:
		@ -20,6 +20,47 @@ Our [Drone CI configuration](https://git.coopcloud.tech/coop-cloud/abra/src/bran
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Please use the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/) for your commits so we can automate our change log.
 | 
					Please use the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/) for your commits so we can automate our change log.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Using the `abra` public API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Warning, there is currently no stability promise for the `abra` public API! Most of the internals are exposed in order to allow a free hand for developers to try build stuff. If people start to build things then we can start the discussion on what is useful to have open/closed and keep stable etc. Please let us know if you depend on the APIs!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `pkg.go.dev` documentation is [here](https://pkg.go.dev/coopcloud.tech/abra). Here's a brief example to get you going:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						abraClient "coopcloud.tech/abra/pkg/client"
 | 
				
			||||||
 | 
						dockerClient "github.com/docker/docker/client"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getClient(serverName string) (*dockerClient.Client, error) {
 | 
				
			||||||
 | 
						cl, err := abraClient.New(serverName)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("getClient: %s", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return cl, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						cl, err := getClient("foo.example.com")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // do stuff with the client...
 | 
				
			||||||
 | 
					    // https://pkg.go.dev/github.com/docker/docker/client
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Some tools that are making use of the API so far are:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* [`kadabra`](https://git.coopcloud.tech/coop-cloud/abra/src/branch/main/cmd/kadabra/main.go)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Cross-compiling
 | 
					### Cross-compiling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If there's no official release for the architecture you use, you can cross-compile `abra` very easily. Clone the source code from [here](https://git.coopcloud.tech/coop-cloud/abra) and then:
 | 
					If there's no official release for the architecture you use, you can cross-compile `abra` very easily. Clone the source code from [here](https://git.coopcloud.tech/coop-cloud/abra) and then:
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user