grim/convey
Clone
Summary
Browse
Changes
Graph
Add a .reviewboardrc file
2022-03-26, Gary Kramlich
8fea0c778f8e
Add a .reviewboardrc file
// Convey
// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package
runtime
import
(
"io/ioutil"
"time"
log
"github.com/sirupsen/logrus"
"keep.imfreedom.org/grim/convey/environment"
"keep.imfreedom.org/grim/convey/fs"
)
type
Runtime
struct
{
Environment
environment
.
Environment
ConfigPath
string
ConfigEnvironment
environment
.
Environment
ForceSequential
bool
KeepWorkspace
bool
CpuShares
string
Memory
string
Timeout
time
.
Duration
MetaPlans
map
[
string
]
MetaPlan
Plans
map
[
string
]
Plan
Tasks
map
[
string
]
Task
workspace
*
fs
.
Directory
}
func
New
(
env
environment
.
Environment
,
configPath
string
,
configEnvironment
environment
.
Environment
,
forceSequential
bool
,
keepWorkspace
bool
,
timeout
time
.
Duration
)
*
Runtime
{
rt
:=
&
Runtime
{
Environment
:
env
,
ConfigPath
:
configPath
,
ConfigEnvironment
:
configEnvironment
,
ForceSequential
:
forceSequential
,
KeepWorkspace
:
keepWorkspace
,
Timeout
:
timeout
,
MetaPlans
:
map
[
string
]
MetaPlan
{},
Plans
:
map
[
string
]
Plan
{},
Tasks
:
map
[
string
]
Task
{},
}
rt
.
Environment
.
LoadDefaults
(
configPath
)
return
rt
}
func
(
rt
*
Runtime
)
Workspace
()
(
*
fs
.
Directory
,
error
)
{
if
rt
.
workspace
==
nil
{
path
,
err
:=
ioutil
.
TempDir
(
rt
.
ConfigPath
,
".convey-"
)
if
err
!=
nil
{
return
nil
,
err
}
dir
,
err
:=
fs
.
NewDirectory
(
path
)
if
err
!=
nil
{
return
nil
,
err
}
rt
.
workspace
=
dir
log
.
Debugf
(
"created workspace %q"
,
path
)
}
return
rt
.
workspace
,
nil
}
func
(
rt
*
Runtime
)
Shutdown
()
{
if
rt
.
workspace
!=
nil
{
if
!
rt
.
KeepWorkspace
{
err
:=
rt
.
workspace
.
Destroy
()
if
err
!=
nil
{
log
.
Errorf
(
"failed to remove workspace %q: %s"
,
rt
.
workspace
.
Path
(),
err
,
)
}
else
{
log
.
Debugf
(
"removed workspace %q"
,
rt
.
workspace
.
Path
())
}
}
else
{
log
.
Infof
(
"keeping workspace %q as requested"
,
rt
.
workspace
.
Path
())
}
}
}