An open API service indexing awesome lists of open source software.

https://github.com/adjust/goem

go extension manager
https://github.com/adjust/goem

Last synced: about 1 year ago
JSON representation

go extension manager

Awesome Lists containing this project

README

          

goem
====

A detailed description can be found [here](http://big-elephants.com/2013-09/goem-the-missing-go-extension-manager/)
This article explains the capabilities of goem with a detailed example.

# go extension manager

## What is this?

This is a little nifty tool to simplify the go development process.
The vanilla go only allows one go path at a time. If you want to setup
several development environments, you have to setup them all by yourself
and set the proper environmental variables.
This is where goem helps by setting up one Go environment for each project.
Right now goem only supports git repositories.

## Requirements

goem is written in pure go and only uses the core libraries.
All you need is a working go and git installation.

## Installation
First clone this repository.
To install goem you can run the build shell script.

```
bash build
```

It compiles goem and tries to install it to "/usr/local/bin".

Of course you can just run
```
go build main.go
```
and put the binary where you want.

## How does it work?

You need a so called "Gofile". This is json file, which specifies the dependencies of
your Go project. An example Gofile is provided in "example/Gofile".
Now you can run
```
goem bundle
```

This command creates a dot-go directory and uses this as your GOPATH.
Now run
```
goem build binary_name
```
to build your binary called "binary_name".

## Supported Actions

### Init

* goem init

Init creates and initializes a new Gofile in current working directory.

A new Gofile looks like

```json
{
"env": [
{
"name": "development",
"packages": []
}
],
"testdir": "./test"
}
```

If Gofile already exists init will not override it.

### List

* goem list

List lists all packages currently installed in your local gopath.

### Bundle

* goem bundle

Bundle reads your Gofile and fetches all packages in the desired version.

An example Gofile looks like that:

```json
{
"env" : [
{
"name" : "development",
"packages": [
{
"name" : "github.com/adjust/goenv",
"branch" : "