https://github.com/adjust/goem
go extension manager
https://github.com/adjust/goem
Last synced: about 1 year ago
JSON representation
go extension manager
- Host: GitHub
- URL: https://github.com/adjust/goem
- Owner: adjust
- Archived: true
- Created: 2013-02-01T08:47:50.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2015-12-03T17:28:03.000Z (over 10 years ago)
- Last Synced: 2025-03-22T07:51:27.296Z (about 1 year ago)
- Language: Go
- Size: 77.1 KB
- Stars: 33
- Watchers: 77
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
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" : "