piaas

package module
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: May 20, 2019 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandleDebug

func HandleDebug(c *cli.Context) error

Turn on debug logging if -debug was specified

Types

type App

type App struct {
	Name    string
	Command string
}

type Config

type Config struct {
	ApiVersion string
	Profiles   []Profile
	Apps       []App
}

func ReadConfig

func ReadConfig(file string) Config

func (*Config) GetProfile

func (conf *Config) GetProfile(name string) (Profile, error)

func (*Config) GetSyncTarget

func (conf *Config) GetSyncTarget(name string) (string, error)

Find matching profile and use the information to compose the rsync target string. In this format: ${user}@${host}:${target}

type Event

type Event struct {
	Path string
}

type Monitor

type Monitor interface {
	// Start watching for file system changes. Specify the debounceTime so the events are collected within the debounce time.
	Start(debounceTime uint64)
	// Register a observer to receive the fs events
	Subscribe(observer chan<- []string)
	// Stop file system watching.
	Stop()
}

func NewMonitor

func NewMonitor(startDir string) Monitor

type MonitorPath

type MonitorPath struct {
	// contains filtered or unexported fields
}

type Profile

type Profile struct {
	// profile name
	Name string
	// The connection information used by sync module
	Connection SyncConnection
	// The name of ignore file, default to .piaasignore
	IgnoreFile string
}

Profile controls how the project can sync to remote machine.

type RecursiveMonitor

type RecursiveMonitor struct {
	// contains filtered or unexported fields
}

func NewRecursiveMonitor

func NewRecursiveMonitor(start string) RecursiveMonitor

Traverse the tree and create monitor for all directory

func (*RecursiveMonitor) Start

func (rm *RecursiveMonitor) Start(debounceTime uint64)

Start watching on all registered monitors, and manage the removal and addition of new directories.

func (*RecursiveMonitor) Stop

func (rm *RecursiveMonitor) Stop()

func (*RecursiveMonitor) Subscribe

func (rm *RecursiveMonitor) Subscribe(subscriber chan<- []string)

func (*RecursiveMonitor) SubscribeToChanges

func (rm *RecursiveMonitor) SubscribeToChanges(subscriber chan<- string)

type RsyncPattern

type RsyncPattern struct {
	// contains filtered or unexported fields
}

Implement basic rsync filter rules.

Support the below notation

- Exact, path element without special character. Ex: foo - Anchored, path start with `/`. Ex: /foo - Wildcard, path element that matches any character. Ex: foo* - Double wildcards, path elements that matches any character including sub directories. Ex: foo/** - Multi segments, path elements that span over one level in the hierarchy. Ex: foo/bar

func NewRsyncPattern

func NewRsyncPattern(pat string) RsyncPattern

Create a new RsyncPattern.

func (RsyncPattern) Match

func (rp RsyncPattern) Match(path string) bool

Match a given path to make sure it matches this pattern or not. You should not directly

func (RsyncPattern) ToString

func (rp RsyncPattern) ToString() string

type RsyncPatterns

type RsyncPatterns struct {
	// contains filtered or unexported fields
}

func NewRsyncPatterns

func NewRsyncPatterns(basedir string, patterns ...RsyncPattern) RsyncPatterns

Create a new RsyncPatterns.

func (*RsyncPatterns) Match

func (rp *RsyncPatterns) Match(path string) bool

Working on a path under the basedir to see if it matches with any of the registered patterns. False is returned if path wasn't under basedir.

type RsyncWrapper

type RsyncWrapper struct {
	// contains filtered or unexported fields
}

func NewRsyncWrapper

func NewRsyncWrapper(rsyncCmd string, basedir string, target string) RsyncWrapper

Create a RsyncWrapper using `cmd` as the command, running on `basedir`, syncing to `target`. The RsyncWrapper will also be configured to use ssh options 'ConnectTimeout=10'

func (*RsyncWrapper) SetIgnoreFile

func (rs *RsyncWrapper) SetIgnoreFile(ignore string)

func (*RsyncWrapper) SetSshOptions

func (rs *RsyncWrapper) SetSshOptions(options string)

func (*RsyncWrapper) Start

func (rs *RsyncWrapper) Start(process func(cmd *exec.Cmd))

Open the channel to start working on sync events

When cmd is received, `process` will be invoked to actually running the command.

func (*RsyncWrapper) SyncAll

func (rs *RsyncWrapper) SyncAll()

Sync all files to remote.

func (*RsyncWrapper) SyncFiles

func (rs *RsyncWrapper) SyncFiles(files []string)

Sync only the specified files If the files list is empty, do nothing

type SyncConnection

type SyncConnection struct {
	Host        string
	User        string
	Destination string
}

The sync connection target

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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