grim/hgkeeper
Clone
Summary
Browse
Changes
Graph
Replace ioutils as it is deprecated since go 1.17
12 months ago, aklitzing
4ec99415f32b
Replace ioutils as it is deprecated since go 1.17
Reviewed at https://reviews.imfreedom.org/r/2444/
package
main
import
(
"os"
"github.com/alecthomas/kong"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"keep.imfreedom.org/grim/hgkeeper/authorized_keys"
"keep.imfreedom.org/grim/hgkeeper/globals"
"keep.imfreedom.org/grim/hgkeeper/hg"
"keep.imfreedom.org/grim/hgkeeper/once"
"keep.imfreedom.org/grim/hgkeeper/serve"
"keep.imfreedom.org/grim/hgkeeper/setup"
"keep.imfreedom.org/grim/hgkeeper/version"
)
type
commands
struct
{
globals
.
Globals
AuthorizedKeys
authorized_keys
.
Command
`kong:"cmd,help='output an sshd authorized keys file'"`
Once
once
.
Command
`kong:"cmd,help='run hgkeeper for one transaction. This is used when integrating with a system ssh server'"`
Serve
serve
.
Command
`kong:"cmd,help='run the ssh server'"`
Setup
setup
.
Command
`kong:"cmd,help='inital setup for the server'"`
Version
version
.
Command
`kong:"cmd,help='display the version and exit'"`
}
func
initLogging
()
{
levelEncoder
:=
zapcore
.
CapitalColorLevelEncoder
switch
os
.
Getenv
(
"TERM"
)
{
case
"win"
:
fallthrough
case
"dumb"
:
levelEncoder
=
zapcore
.
CapitalLevelEncoder
}
logger
,
_
:=
zap
.
Config
{
Encoding
:
"console"
,
Level
:
zap
.
NewAtomicLevelAt
(
zapcore
.
DebugLevel
),
OutputPaths
:
[]
string
{
"stdout"
},
ErrorOutputPaths
:
[]
string
{
"stderr"
},
EncoderConfig
:
zapcore
.
EncoderConfig
{
MessageKey
:
"message"
,
LevelKey
:
"level"
,
EncodeLevel
:
levelEncoder
,
TimeKey
:
"time"
,
EncodeTime
:
zapcore
.
ISO8601TimeEncoder
,
},
}.
Build
()
defer
logger
.
Sync
()
zap
.
ReplaceGlobals
(
logger
)
}
func
main
()
{
cmd
:=
commands
{}
ctx
:=
kong
.
Parse
(
&
cmd
)
if
ctx
.
Command
()
==
"serve"
{
initLogging
()
}
if
err
:=
hg
.
SetExe
(
cmd
.
Globals
.
HgExecutable
);
err
!=
nil
{
ctx
.
FatalIfErrorf
(
err
)
}
if
err
:=
ctx
.
Run
(
&
cmd
.
Globals
);
err
!=
nil
{
ctx
.
FatalIfErrorf
(
err
)
}
}