Example #1
0
func Binary(dest, pkg string) *BuildTarget {
	return &BuildTarget{
		id:   buildkit.ID(),
		dest: dest,
		pkgs: []string{pkg},
	}
}
Example #2
0
// Service creates a new buildkit.Target for running and restarting binaries.
func Service(binary, command string) *ServiceTarget {
	return &ServiceTarget{
		id:      buildkit.ID(),
		deps:    []string{binary},
		command: command,
	}
}
Example #3
0
// Generate runs the "go generate" command on pkg whenever deps change.
func Generate(pkg string, dest []string, deps []string) (buildkit.Target, error) {
	path := FindImportPath(pkg)
	if path == "" {
		return nil, fmt.Errorf("could not find import path for package %q", pkg)
	}
	description := fmt.Sprintf("go.generate:%s:%d", pkg, buildkit.ID())
	return buildkit.Command(description, []string{"go", "generate", pkg}, dest, deps), nil
}
Example #4
0
func PhonyBuilder(definition *config.Target) (buildkit.Target, error) {
	if err := config.Constrain().Actions.AtLeast(1).Dependencies.Exactly(0).Targets.Exactly(1).Verify(definition); err != nil {
		return nil, err
	}
	return &PhonyTarget{
		id:      buildkit.ID(),
		command: strings.Join(definition.Actions, "\n"),
	}, nil
}
Example #5
0
func ServiceBuilder(definition *config.Target) (buildkit.Target, error) {
	if err := config.Constrain().Actions.Exactly(1).Dependencies.AtLeast(0).Verify(definition); err != nil {
		return nil, err
	}
	return &ServiceTarget{
		id:      buildkit.ID(),
		deps:    append(definition.Targets, definition.Dependencies...),
		command: strings.Join(definition.Actions, "\n"),
	}, nil
}
Example #6
0
func LessBuilder(definition *config.Target) (buildkit.Target, error) {
	if err := config.Constrain().Targets.Exactly(1).Dependencies.Exactly(1).Verify(definition); err != nil {
		return nil, err
	}
	return &LessTarget{
		id:     buildkit.ID(),
		dest:   definition.Targets[0],
		source: definition.Dependencies[0],
	}, nil
}
Example #7
0
// PackageBuilder is a factory for building and installing Go packages.
//
// eg.
//
// 		package <pkg> [<pkg> ...]
func PackageBuilder(definition *config.Target) (buildkit.Target, error) {
	if err := config.Constrain().Dependencies.Exactly(0).Verify(definition); err != nil {
		return nil, err
	}
	// TODO(alec): Correctly set "dest" to output archive.
	return &BuildTarget{
		id:   buildkit.ID(),
		name: "go.package",
		pkgs: definition.Targets,
	}, nil
}
Example #8
0
func BinaryBuilder(definition *config.Target) (buildkit.Target, error) {
	if err := config.Constrain().Dependencies.Exactly(1).Verify(definition); err != nil {
		return nil, err
	}
	return &BuildTarget{
		id:   buildkit.ID(),
		name: "go.binary",
		dest: definition.Targets[0],
		pkgs: definition.Dependencies,
	}, nil
}
Example #9
0
func (s *ServiceTarget) run() {
	log := s.log.New(buildkit.ID())
	for {
		log.Printf("Starting %q", s.command)
		s.cmd = exec.Command("/bin/sh", "-c", s.command)
		s.cmd.Stdout = log
		s.cmd.Stderr = log
		err := s.cmd.Start()
		if err != nil {
			log.Printf("Failed to start service: %s", err)
		} else {
			err = s.cmd.Wait()
			if err != nil {
				log.Printf("Service failed: %s", err)
			}
		}
		time.Sleep(time.Second)
	}
}
Example #10
0
func Packages(pkgs ...string) *BuildTarget {
	return &BuildTarget{id: buildkit.ID(), pkgs: pkgs}
}