mirror of
				https://github.com/go-micro/go-micro.git
				synced 2025-10-30 23:27:41 +02:00 
			
		
		
		
	Packager is now builder (#958)
This commit is contained in:
		| @@ -1,16 +1,16 @@ | ||||
| // Package packager creates a binary image. Due to package being a reserved keyword we use packager. | ||||
| package packager | ||||
| // Package build builds a micro runtime package | ||||
| package build | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/micro/go-micro/runtime/source" | ||||
| ) | ||||
| 
 | ||||
| // Package builds binaries | ||||
| type Packager interface { | ||||
| 	// Compile builds a binary | ||||
| 	Compile(*Source) (*Binary, error) | ||||
| 	// Deletes the binary | ||||
| 	Delete(*Binary) error | ||||
| // Builder builds binaries | ||||
| type Builder interface { | ||||
| 	// Build builds a package | ||||
| 	Build(*Source) (*Package, error) | ||||
| 	// Clean deletes the package | ||||
| 	Clean(*Package) error | ||||
| } | ||||
| 
 | ||||
| // Source is the source of a build | ||||
| @@ -21,8 +21,8 @@ type Source struct { | ||||
| 	Repository *source.Repository | ||||
| } | ||||
| 
 | ||||
| // Binary is the representation of a binary | ||||
| type Binary struct { | ||||
| // Package is micro service package | ||||
| type Package struct { | ||||
| 	// Name of the binary | ||||
| 	Name string | ||||
| 	// Location of the binary | ||||
| @@ -8,17 +8,17 @@ import ( | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 
 | ||||
| 	"github.com/fsouza/go-dockerclient" | ||||
| 	"github.com/micro/go-micro/runtime/package" | ||||
| 	docker "github.com/fsouza/go-dockerclient" | ||||
| 	"github.com/micro/go-micro/runtime/build" | ||||
| 	"github.com/micro/go-micro/util/log" | ||||
| ) | ||||
| 
 | ||||
| type Packager struct { | ||||
| 	Options packager.Options | ||||
| type Builder struct { | ||||
| 	Options build.Options | ||||
| 	Client  *docker.Client | ||||
| } | ||||
| 
 | ||||
| func (d *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| func (d *Builder) Build(s *build.Source) (*build.Package, error) { | ||||
| 	image := filepath.Join(s.Repository.Path, s.Repository.Name) | ||||
| 
 | ||||
| 	buf := new(bytes.Buffer) | ||||
| @@ -63,7 +63,7 @@ func (d *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &packager.Binary{ | ||||
| 	return &build.Package{ | ||||
| 		Name:   image, | ||||
| 		Path:   image, | ||||
| 		Type:   "docker", | ||||
| @@ -71,13 +71,13 @@ func (d *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
| func (d *Packager) Delete(b *packager.Binary) error { | ||||
| func (d *Builder) Clean(b *build.Package) error { | ||||
| 	image := filepath.Join(b.Path, b.Name) | ||||
| 	return d.Client.RemoveImage(image) | ||||
| } | ||||
| 
 | ||||
| func NewPackager(opts ...packager.Option) packager.Packager { | ||||
| 	options := packager.Options{} | ||||
| func NewBuilder(opts ...build.Option) build.Builder { | ||||
| 	options := build.Options{} | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
| @@ -86,7 +86,7 @@ func NewPackager(opts ...packager.Option) packager.Packager { | ||||
| 	if err != nil { | ||||
| 		log.Fatal(err) | ||||
| 	} | ||||
| 	return &Packager{ | ||||
| 	return &Builder{ | ||||
| 		Options: options, | ||||
| 		Client:  client, | ||||
| 	} | ||||
| @@ -6,11 +6,11 @@ import ( | ||||
| 	"os/exec" | ||||
| 	"path/filepath" | ||||
| 
 | ||||
| 	"github.com/micro/go-micro/runtime/package" | ||||
| 	"github.com/micro/go-micro/runtime/build" | ||||
| ) | ||||
| 
 | ||||
| type Packager struct { | ||||
| 	Options packager.Options | ||||
| type Builder struct { | ||||
| 	Options build.Options | ||||
| 	Cmd     string | ||||
| 	Path    string | ||||
| } | ||||
| @@ -34,7 +34,7 @@ func whichGo() string { | ||||
| 	return "go" | ||||
| } | ||||
| 
 | ||||
| func (g *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| func (g *Builder) Build(s *build.Source) (*build.Package, error) { | ||||
| 	binary := filepath.Join(g.Path, s.Repository.Name) | ||||
| 	source := filepath.Join(s.Repository.Path, s.Repository.Name) | ||||
| 
 | ||||
| @@ -42,7 +42,7 @@ func (g *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| 	if err := cmd.Run(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return &packager.Binary{ | ||||
| 	return &build.Package{ | ||||
| 		Name:   s.Repository.Name, | ||||
| 		Path:   binary, | ||||
| 		Type:   "go", | ||||
| @@ -50,19 +50,19 @@ func (g *Packager) Compile(s *packager.Source) (*packager.Binary, error) { | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
| func (g *Packager) Delete(b *packager.Binary) error { | ||||
| func (g *Builder) Clean(b *build.Package) error { | ||||
| 	binary := filepath.Join(b.Path, b.Name) | ||||
| 	return os.Remove(binary) | ||||
| } | ||||
| 
 | ||||
| func NewPackager(opts ...packager.Option) packager.Packager { | ||||
| 	options := packager.Options{ | ||||
| func NewBuild(opts ...build.Option) build.Builder { | ||||
| 	options := build.Options{ | ||||
| 		Path: os.TempDir(), | ||||
| 	} | ||||
| 	for _, o := range opts { | ||||
| 		o(&options) | ||||
| 	} | ||||
| 	return &Packager{ | ||||
| 	return &Builder{ | ||||
| 		Options: options, | ||||
| 		Cmd:     whichGo(), | ||||
| 		Path:    options.Path, | ||||
| @@ -1,4 +1,4 @@ | ||||
| package packager | ||||
| package build | ||||
| 
 | ||||
| type Options struct { | ||||
| 	// local path to download source | ||||
| @@ -15,13 +15,13 @@ type Process struct { | ||||
| } | ||||
|  | ||||
| func (p *Process) Exec(exe *process.Executable) error { | ||||
| 	cmd := exec.Command(exe.Binary.Path) | ||||
| 	cmd := exec.Command(exe.Package.Path) | ||||
| 	return cmd.Run() | ||||
| } | ||||
|  | ||||
| func (p *Process) Fork(exe *process.Executable) (*process.PID, error) { | ||||
| 	// create command | ||||
| 	cmd := exec.Command(exe.Binary.Path, exe.Args...) | ||||
| 	cmd := exec.Command(exe.Package.Path, exe.Args...) | ||||
| 	// set env vars | ||||
| 	cmd.Env = append(cmd.Env, exe.Env...) | ||||
|  | ||||
|   | ||||
| @@ -4,7 +4,7 @@ package process | ||||
| import ( | ||||
| 	"io" | ||||
|  | ||||
| 	"github.com/micro/go-micro/runtime/package" | ||||
| 	"github.com/micro/go-micro/runtime/build" | ||||
| ) | ||||
|  | ||||
| // Process manages a running process | ||||
| @@ -20,8 +20,8 @@ type Process interface { | ||||
| } | ||||
|  | ||||
| type Executable struct { | ||||
| 	// The executable binary | ||||
| 	Binary *packager.Binary | ||||
| 	// Package containing executable | ||||
| 	Package *build.Package | ||||
| 	// The env variables | ||||
| 	Env []string | ||||
| 	// Args to pass | ||||
|   | ||||
| @@ -5,7 +5,8 @@ import ( | ||||
| 	"strings" | ||||
| 	"sync" | ||||
|  | ||||
| 	packager "github.com/micro/go-micro/runtime/package" | ||||
| 	"github.com/micro/go-micro/runtime/build" | ||||
|  | ||||
| 	"github.com/micro/go-micro/runtime/process" | ||||
| 	proc "github.com/micro/go-micro/runtime/process/os" | ||||
| 	"github.com/micro/go-micro/util/log" | ||||
| @@ -56,7 +57,7 @@ func newService(s *Service, c CreateOptions) *service { | ||||
| 		Service: s, | ||||
| 		Process: new(proc.Process), | ||||
| 		Exec: &process.Executable{ | ||||
| 			Binary: &packager.Binary{ | ||||
| 			Package: &build.Package{ | ||||
| 				Name: s.Name, | ||||
| 				Path: exec, | ||||
| 			}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user