grim/convey
Clone
Summary
Browse
Changes
Graph
update the dependencies
redux
2021-12-18, Gary Kramlich
8d1e9a570376
update the dependencies
// 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
ForceSequential
bool
KeepWorkspace
bool
Timeout
time
.
Duration
workspace
*
fs
.
Directory
}
func
New
(
env
environment
.
Environment
,
configPath
string
,
forceSequential
bool
,
keepWorkspace
bool
,
timeout
time
.
Duration
)
*
Runtime
{
rt
:=
&
Runtime
{
Environment
:
env
,
ConfigPath
:
configPath
,
ForceSequential
:
forceSequential
,
KeepWorkspace
:
keepWorkspace
,
Timeout
:
timeout
,
}
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
())
}
}
}