adapters

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2017 License: MIT Imports: 16 Imported by: 0

README

package adapters

This package contains implementations of the Adapter interface that control different backend applications.

The interface is currently defined as

type Adapter interface {
	Command() *exec.Cmd
	Start() error
	Stop() error
	WriteLog(io.Writer)
	ServeHTTP(w http.ResponseWriter, r *http.Request)
}

The ServeHTTP function means all adapters implement the http.Handler interface.

Working implementations

Simple Proxy

A proxy is configured by creating a file in the ~/.zap folder containing the host/port combination that you want to proxy to. You can specify just a port and it will assume localhost.

echo "http://127.0.0.1:3000" > ~/.zap/mysite.dev echo "4000" > ~/.zap/othersite.dev

Elixir/Phoenix

When a mix.exs file is detected in the root of the dir that a symlink points to and contains the phoenix package then a mix phx.server server will be launched on a random port and requests will be proxied to that application.

To configure a phoenix application simply create a symbolic link to the phoenix application and update your config/dev.exs file to allow zap to override the default 4000 http port.

ln -sf /path/to/phoenix/app ~/.zap/mysite.dev

config/mix.exs

config :your_app, YourApp.Web.Endpoint,
  http: [port: System.get_env("PHX_PORT") || 4000],
Ruby/Rails

If a Gemfile is detected in the root of the project then the Ruby/Rails adapter is used.

Go/Buffalo

If a .buffalo.dev.yml file is found then a Go/Buffalo developent server backend is started.

Go/Hugo

If a config.toml file is found in the root of the project then a Go/Hugo development backend is started.

Static HTML

To enable a static HTML site, simply symlink to a the public directory where the static files live. Files in the directory will be served, if a directory root is requested index.html files will be served if they exist.

ln -sf /path/to/static/public ~/.zap/mysite.dev

TODO

  • Ruby/Hanami
  • Ruby/Rack
  • Ruby/Rakefile
  • Docker (Compose)
  • Procfile
  • Node/package.json
  • PHP

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Adapter

type Adapter interface {
	Start() error
	Stop(reason error) error
	Status() Status
	WriteLog(io.Writer)
	ServeHTTP(w http.ResponseWriter, r *http.Request)
}

Adapter defines the interface for an Adapter implementation

func CreateBuffaloAdapter added in v0.2.0

func CreateBuffaloAdapter(host, dir string) (Adapter, error)

CreateBuffaloAdapter creates a new buffalo adapter

func CreateHugoAdapter added in v0.3.0

func CreateHugoAdapter(host, dir string) (Adapter, error)

CreateHugoAdapter creates a new hugo adapter

func CreatePhoenixAdapter

func CreatePhoenixAdapter(host, dir string) (Adapter, error)

CreatePhoenixAdapter creates a new phoenix adapter

func CreateProxyAdapter

func CreateProxyAdapter(host, proxy string) (Adapter, error)

CreateProxyAdapter creates a new proxy

func CreateRailsAdapter

func CreateRailsAdapter(host, dir string) (Adapter, error)

CreateRailsAdapter creates a new rails adapter

func CreateStaticAdapter

func CreateStaticAdapter(dir string) (Adapter, error)

CreateStaticAdapter creates a new static HTML application

type AppProxyAdapter added in v0.2.0

type AppProxyAdapter struct {
	sync.Mutex

	Host            string
	Dir             string
	Port            string
	ShellCommand    string
	EnvPortName     string
	RestartPatterns []*regexp.Regexp
	State           Status
	BootLog         string
	Pid             int
	// contains filtered or unexported fields
}

AppProxyAdapter holds the state for the application

func (*AppProxyAdapter) ServeHTTP added in v0.2.0

func (a *AppProxyAdapter) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP implements the http.Handler interface

func (*AppProxyAdapter) Start added in v0.2.0

func (a *AppProxyAdapter) Start() error

Start starts the application

func (*AppProxyAdapter) Status added in v0.3.0

func (a *AppProxyAdapter) Status() Status

Status returns the status of the adapter

func (*AppProxyAdapter) Stop added in v0.2.0

func (a *AppProxyAdapter) Stop(reason error) error

Stop stops the application

func (*AppProxyAdapter) WriteLog added in v0.2.0

func (a *AppProxyAdapter) WriteLog(w io.Writer)

WriteLog writes the log to the given writer

type ProxyAdapter

type ProxyAdapter struct {
	Host  string
	Proxy string

	State   Status
	BootLog string
	// contains filtered or unexported fields
}

ProxyAdapter holds the state for the application

func (*ProxyAdapter) Command

func (a *ProxyAdapter) Command() *exec.Cmd

Command doesn't do anything

func (*ProxyAdapter) ServeHTTP

func (a *ProxyAdapter) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP implements the http.Handler interface

func (*ProxyAdapter) Start

func (a *ProxyAdapter) Start() error

Start starts the proxy

func (*ProxyAdapter) Status added in v0.3.0

func (a *ProxyAdapter) Status() Status

Status returns the status of the proxy

func (*ProxyAdapter) Stop

func (a *ProxyAdapter) Stop(reason error) error

Stop stops the adapter

func (*ProxyAdapter) WriteLog

func (a *ProxyAdapter) WriteLog(w io.Writer)

WriteLog doesn't do anything

type StaticAdapter

type StaticAdapter struct {
	Dir     string
	State   Status
	BootLog string
}

StaticAdapter holds the state for the application

func (*StaticAdapter) Command

func (d *StaticAdapter) Command() *exec.Cmd

Command doesn't do anything

func (*StaticAdapter) ServeHTTP

func (d *StaticAdapter) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP implements the http.Handler interface

func (*StaticAdapter) Start

func (d *StaticAdapter) Start() error

Start doesn't do anything

func (*StaticAdapter) Status added in v0.3.0

func (d *StaticAdapter) Status() Status

Status returns the status of the adapter

func (*StaticAdapter) Stop

func (d *StaticAdapter) Stop(reason error) error

Stop doesn't do anything

func (*StaticAdapter) WriteLog

func (d *StaticAdapter) WriteLog(w io.Writer)

WriteLog doesn't do anything

type Status added in v0.3.0

type Status string

Status defines the possible states of the adapter

const (
	// StatusStarting is the initial state of the adapter
	StatusStarting Status = "starting"
	// StatusRunning is the successful running state of the adapter
	StatusRunning Status = "running"
	// StatusStopping is the state when an adapter is stopping
	StatusStopping Status = "stopping"
	// StatusStopped is the state when an adapter has been stopped
	StatusStopped Status = "stopped"
	// StatusError is the state when an error has occurred
	StatusError Status = "error"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL