From 6a0082741c56821179c900d274176a3c14bb1208 Mon Sep 17 00:00:00 2001 From: Milos Gajdos Date: Tue, 19 Nov 2019 16:09:43 +0000 Subject: [PATCH] Packager is now builder (#958) --- .../{package/package.go => build/build.go} | 20 +++++++++---------- runtime/{package => build}/docker/docker.go | 20 +++++++++---------- runtime/{package => build}/go/golang.go | 18 ++++++++--------- runtime/{package => build}/options.go | 2 +- runtime/process/os/os.go | 4 ++-- runtime/process/process.go | 6 +++--- runtime/service.go | 5 +++-- 7 files changed, 38 insertions(+), 37 deletions(-) rename runtime/{package/package.go => build/build.go} (52%) rename runtime/{package => build}/docker/docker.go (78%) rename runtime/{package => build}/go/golang.go (74%) rename runtime/{package => build}/options.go (92%) diff --git a/runtime/package/package.go b/runtime/build/build.go similarity index 52% rename from runtime/package/package.go rename to runtime/build/build.go index 078c8a59..41a4beeb 100644 --- a/runtime/package/package.go +++ b/runtime/build/build.go @@ -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 diff --git a/runtime/package/docker/docker.go b/runtime/build/docker/docker.go similarity index 78% rename from runtime/package/docker/docker.go rename to runtime/build/docker/docker.go index 2f0c46c0..d71c53ef 100644 --- a/runtime/package/docker/docker.go +++ b/runtime/build/docker/docker.go @@ -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, } diff --git a/runtime/package/go/golang.go b/runtime/build/go/golang.go similarity index 74% rename from runtime/package/go/golang.go rename to runtime/build/go/golang.go index a9a591ab..435da0b5 100644 --- a/runtime/package/go/golang.go +++ b/runtime/build/go/golang.go @@ -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, diff --git a/runtime/package/options.go b/runtime/build/options.go similarity index 92% rename from runtime/package/options.go rename to runtime/build/options.go index a308c737..65e7dd68 100644 --- a/runtime/package/options.go +++ b/runtime/build/options.go @@ -1,4 +1,4 @@ -package packager +package build type Options struct { // local path to download source diff --git a/runtime/process/os/os.go b/runtime/process/os/os.go index 83eca1f3..0e6bc79f 100644 --- a/runtime/process/os/os.go +++ b/runtime/process/os/os.go @@ -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...) diff --git a/runtime/process/process.go b/runtime/process/process.go index b5b302d8..8ab78483 100644 --- a/runtime/process/process.go +++ b/runtime/process/process.go @@ -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 diff --git a/runtime/service.go b/runtime/service.go index d83d7a5f..0d2cc8e9 100644 --- a/runtime/service.go +++ b/runtime/service.go @@ -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, },