-
Notifications
You must be signed in to change notification settings - Fork 64
/
Copy pathtypes.go
82 lines (67 loc) · 2.06 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
Copyright 2020 The Knative Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package shell
import "io"
// ProjectLocation represents a project location on a file system.
type ProjectLocation interface {
RootPath() string
}
// Script represents a script to be executed.
type Script struct {
Label string
ScriptPath string
}
// Function represents a function, whom will be sourced from Script file,
// and executed.
type Function struct {
Script
FunctionName string
}
// ExecutorConfig holds a executor configuration options.
type ExecutorConfig struct {
ProjectLocation
Streams
Labels
Environ []string
}
// StreamType represets either output or error stream.
type StreamType int
const (
// StreamTypeOut represents process output stream.
StreamTypeOut StreamType = iota
// StreamTypeErr represents process error stream.
StreamTypeErr
)
// PrefixFunc is used to build a prefix that will be added to each line of the
// script/function output or error stream.
type PrefixFunc func(st StreamType, label string, config ExecutorConfig) string
// Labels holds a labels to be used to prefix Out and Err streams of executed
// shells scripts/functions.
type Labels struct {
LabelOut string
LabelErr string
SkipDate bool
DateFormat string
PrefixFunc
}
// Streams holds a streams of a shell scripts/functions.
type Streams struct {
Out io.Writer
Err io.Writer
}
// Executor represents a executor that can execute shell scripts and call
// functions directly.
type Executor interface {
RunScript(script Script, args ...string) error
RunFunction(fn Function, args ...string) error
}