You've already forked ras-service
mirror of
https://github.com/khorevaa/ras-service.git
synced 2025-11-06 08:49:12 +02:00
add project struct files
This commit is contained in:
36
.github/workflows/releaser.yaml
vendored
Normal file
36
.github/workflows/releaser.yaml
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
name: goreleaser
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
jobs:
|
||||
goreleaser:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
-
|
||||
name: Set up Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.16
|
||||
-
|
||||
name: Docker Login
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
|
||||
run: |
|
||||
echo "${GITHUB_TOKEN}" | docker login ghcr.io --username $GITHUB_ACTOR --password-stdin
|
||||
-
|
||||
name: Run GoReleaser
|
||||
uses: goreleaser/goreleaser-action@v2
|
||||
with:
|
||||
version: latest
|
||||
args: release --rm-dist
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
63
.goreleaser.yaml
Normal file
63
.goreleaser.yaml
Normal file
@@ -0,0 +1,63 @@
|
||||
project_name: ras-service
|
||||
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
# - GOPROXY=https://goproxy.io
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
# - docker login
|
||||
|
||||
builds:
|
||||
- env:
|
||||
- CGO_ENABLED=0
|
||||
goos:
|
||||
- linux
|
||||
# - darwin
|
||||
- windows
|
||||
goarch:
|
||||
# - 386
|
||||
- amd64
|
||||
# - arm
|
||||
# - arm64
|
||||
dist: dist
|
||||
|
||||
checksum:
|
||||
name_template: '{{ .ProjectName }}_checksums.txt'
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- '^docs:'
|
||||
- '^test:'
|
||||
- Merge pull request
|
||||
- Merge branch
|
||||
dockers:
|
||||
- image_templates:
|
||||
- 'ghcr.io/khorevaa/{{.ProjectName}}:{{ .Tag }}'
|
||||
- 'ghcr.io/khorevaa/{{.ProjectName}}:v{{ .Major }}.{{ .Minor }}'
|
||||
- 'ghcr.io/khorevaa/{{.ProjectName}}:latest'
|
||||
dockerfile: Dockerfile
|
||||
ids: [ 'onec-util' ]
|
||||
build_flag_templates:
|
||||
- "--label=org.label-schema.schema-version=1.0"
|
||||
- "--label=org.label-schema.version={{.Version}}"
|
||||
- "--label=org.label-schema.name={{.ProjectName}}"
|
||||
- "--label=com.github.actions.name={{.ProjectName}}"
|
||||
- "--label=com.github.actions.description=RAS service for server 1S.Enterprise"
|
||||
- "--label=com.github.actions.icon=terminal"
|
||||
- "--label=com.github.actions.color=blue"
|
||||
- "--label=repository=http://github.com/khorevaa/ras-service"
|
||||
- "--label=homepage=http://github.com/khorevaa/ras-service"
|
||||
- "--label=maintainer=Aleksey Khorev <khorevaa@gmail.com>"
|
||||
archives:
|
||||
- name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
|
||||
replacements:
|
||||
darwin: Darwin
|
||||
linux: Linux
|
||||
windows: Windows
|
||||
386: i386
|
||||
amd64: x86_64
|
||||
format_overrides:
|
||||
- goos: windows
|
||||
format: zip
|
||||
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/ras-service.iml" filepath="$PROJECT_DIR$/.idea/ras-service.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
9
.idea/ras-service.iml
generated
Normal file
9
.idea/ras-service.iml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="Go" enabled="true" />
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
3
Dockerfile
Normal file
3
Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM scratch
|
||||
COPY ras-service /
|
||||
ENTRYPOINT ["/ras-service"]
|
||||
24
cmd/commands.go
Normal file
24
cmd/commands.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/khorevaa/logos"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
var log = logos.New("github.com/v8platform/onec-util")
|
||||
|
||||
var Commands = []Command{
|
||||
|
||||
&joinCmd{},
|
||||
&disconnectCmd{},
|
||||
//&clusterCmd{
|
||||
// sub: []Command{
|
||||
// //&disconnectCmd{},
|
||||
// &joinCmd{},
|
||||
// },
|
||||
//},
|
||||
}
|
||||
|
||||
type Command interface {
|
||||
Cmd() *cli.Command
|
||||
}
|
||||
169
cmd/join.go
Normal file
169
cmd/join.go
Normal file
@@ -0,0 +1,169 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/khorevaa/logos"
|
||||
"github.com/urfave/cli/v2"
|
||||
"github.com/v8platform/rac"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
"v8platform/onec-util/rac_addin"
|
||||
)
|
||||
|
||||
type joinCmd struct {
|
||||
cluster string
|
||||
host string
|
||||
|
||||
usr, pwd string
|
||||
|
||||
rac_addin.ServersInsert
|
||||
}
|
||||
|
||||
func (c *joinCmd) ClusterSig() (uuid string) {
|
||||
return c.cluster
|
||||
}
|
||||
func (c *joinCmd) Auth() (usr, pwd string) {
|
||||
return c.usr, c.pwd
|
||||
}
|
||||
|
||||
func (c *joinCmd) run(context *cli.Context) error {
|
||||
|
||||
job := log.Job("join app", logos.Kvs{"host": c.host, "agent": c.AgentHost, "name": c.Name})
|
||||
|
||||
startTime := time.Now()
|
||||
|
||||
mng, err := rac.NewManager(c.host, rac.ManagerOptions{
|
||||
Timeout: 2 * time.Second,
|
||||
TryTimeoutCount: 3,
|
||||
DetectCluster: false,
|
||||
})
|
||||
job.Timing("new_manager", time.Since(startTime).Nanoseconds()) // NOTE: Nanoseconds!
|
||||
|
||||
if err != nil {
|
||||
job.CompleteKv(logos.Err, logos.Kvs{"error": err.Error()})
|
||||
return err
|
||||
}
|
||||
startTime = time.Now()
|
||||
|
||||
c.cluster, err = getCluster(mng)
|
||||
job.TimingKv("get_clusters", time.Since(startTime).Nanoseconds(), logos.Kvs{"cluster-id": c.cluster}) // NOTE: Nanoseconds!
|
||||
|
||||
if err != nil {
|
||||
log.Error("get clusters", logos.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debug("get cluster id", logos.String("cluster-id", c.cluster))
|
||||
|
||||
err = mng.SetDefCluster(c, c)
|
||||
if err != nil {
|
||||
log.Error("setup work cluster", logos.Error(err), logos.String("cluster-id", c.ClusterSig()))
|
||||
return err
|
||||
}
|
||||
|
||||
//_, err = rac_addin.Servers(mng, c.ServersInsert)
|
||||
job.TimingKv("servers_insert", time.Since(startTime).Nanoseconds(), logos.Kvs{"cluster-id": c.cluster}) // NOTE: Nanoseconds!
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
//pp.Println(servers)
|
||||
job.Complete(logos.Success)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getCluster(mng *rac.Manager) (string, error) {
|
||||
clusters, err := mng.Clusters(rac.ClustersList{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if len(clusters.List) > 1 {
|
||||
return "", errors.New("too many clusters in server. Need set cluster uuid")
|
||||
}
|
||||
|
||||
if len(clusters.List) == 0 {
|
||||
return "", errors.New("cluster not found in server")
|
||||
}
|
||||
return clusters.List[0].UUID, nil
|
||||
}
|
||||
|
||||
func (c *joinCmd) Cmd() *cli.Command {
|
||||
|
||||
cmd := &cli.Command{
|
||||
Category: "cluster",
|
||||
Name: "join",
|
||||
Usage: "join work server to 1S.Enterprise cluster",
|
||||
Description: `выполняет присоединение рабочего сервера 1С.Предприятие к кластеру сервера `,
|
||||
ArgsUsage: "HOST",
|
||||
Action: c.run,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Destination: &c.cluster, Name: "cluster-id",
|
||||
Value: "", Usage: "cluster uuid for join new work server"},
|
||||
&cli.StringFlag{
|
||||
Destination: &c.Name, Name: "name", Aliases: []string{"N"},
|
||||
Value: "", Usage: "work server name", EnvVars: []string{"SERVER_NAME"}, Required: true},
|
||||
&cli.StringFlag{
|
||||
Destination: &c.AgentHost, Name: "host",
|
||||
Value: "", Usage: "work server agent host", EnvVars: []string{"SERVER_AGENT_HOST"}, Required: true},
|
||||
&cli.IntFlag{
|
||||
Destination: &c.AgentPort, Name: "port",
|
||||
Value: 1540, Usage: "work server agent port", EnvVars: []string{"SERVER_AGENT_HOST"}, DefaultText: "1540"},
|
||||
&cli.StringFlag{
|
||||
Destination: &c.PortRange, Name: "port-range",
|
||||
Value: "1560:1591", Usage: "work server port range", EnvVars: []string{"SERVER_PORT_RANGE"}, DefaultText: "1560:1591"},
|
||||
&cli.StringFlag{
|
||||
Destination: &c.Using, Name: "using",
|
||||
Value: "normal", Usage: "variant of using work server (main, normal)", EnvVars: []string{"SERVER_USING"}, DefaultText: "normal"},
|
||||
&cli.StringFlag{
|
||||
Destination: &c.DedicateManagers, Name: "dedicate-managers",
|
||||
Value: "none", Usage: "вариант размещения менеджеров сервисов (all, none)", EnvVars: []string{"SERVER_DEDICATE_MANAGERS"}, DefaultText: "none"},
|
||||
&cli.IntFlag{
|
||||
Destination: &c.ClusterPort, Name: "cluster-port",
|
||||
Value: 1541, Usage: "номер порта главного менеджера кластера", EnvVars: []string{"SERVER_CLUSTER_PORT"}, DefaultText: "1541"},
|
||||
&cli.Int64Flag{
|
||||
Destination: &c.MemoryLimit, Name: "memory-limit",
|
||||
Value: 0, Usage: "предел использования памяти рабочими процессами (kilobytes)", EnvVars: []string{"SERVER_MEMORY_LIMIT"}},
|
||||
&cli.Int64Flag{
|
||||
Destination: &c.ConnectionsLimit, Name: "connections-limit",
|
||||
Value: 128, Usage: "максимальное количество соединения на рабочий процесс", EnvVars: []string{"SERVER_CONNECTIONS_LIMIT"}, DefaultText: "128"},
|
||||
&cli.Int64Flag{
|
||||
Destination: &c.CriticalTotalMemory, Name: "total-memory",
|
||||
Value: 0, Usage: "максимальный объем памяти процессов рабочего сервера (bytes)", EnvVars: []string{"SERVER_TOTAL_MEMORY"}},
|
||||
},
|
||||
Before: func(ctx *cli.Context) error {
|
||||
|
||||
c.host, _ = os.LookupEnv("CLUSTER_HOST")
|
||||
|
||||
if ctx.Args().Len() < 1 && len(c.host) == 0 {
|
||||
cli.ShowSubcommandHelp(ctx)
|
||||
return errors.New("WRONG USAGE: Requires a HOST argument")
|
||||
}
|
||||
|
||||
_, _, err := net.SplitHostPort(ctx.Args().First())
|
||||
if err == nil {
|
||||
c.host = ctx.Args().First()
|
||||
return nil
|
||||
}
|
||||
cli.ShowSubcommandHelp(ctx)
|
||||
return fmt.Errorf("WRONG USAGE: Invalid HOST argument %s", err)
|
||||
},
|
||||
}
|
||||
//cmd.Args = func(cmd *cobra.Command, args []string) error {
|
||||
// if len(args) < 1 {
|
||||
// return errors.New("requires a host argument")
|
||||
// }
|
||||
//
|
||||
// _, _, err := net.SplitHostPort(args[0])
|
||||
// if err == nil {
|
||||
// return nil
|
||||
// }
|
||||
// return fmt.Errorf("invalid host %s", err)
|
||||
//}
|
||||
|
||||
return cmd
|
||||
}
|
||||
21
go.mod
21
go.mod
@@ -2,6 +2,23 @@ module github.com/khorevaa/ras-service
|
||||
|
||||
go 1.17
|
||||
|
||||
require github.com/judwhite/go-svc v1.2.1
|
||||
require (
|
||||
github.com/judwhite/go-svc v1.2.1
|
||||
github.com/khorevaa/logos v0.9.8
|
||||
github.com/urfave/cli/v2 v2.3.0
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c
|
||||
)
|
||||
|
||||
require golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c // indirect
|
||||
require (
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d // indirect
|
||||
github.com/elastic/go-ucfg v0.8.3 // indirect
|
||||
github.com/mattn/go-colorable v0.1.8 // indirect
|
||||
github.com/mattn/go-isatty v0.0.12 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.0.1 // indirect
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
||||
go.uber.org/atomic v1.6.0 // indirect
|
||||
go.uber.org/multierr v1.5.0 // indirect
|
||||
go.uber.org/zap v1.16.0 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.2.3 // indirect
|
||||
)
|
||||
|
||||
79
go.sum
79
go.sum
@@ -1,4 +1,83 @@
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/elastic/go-ucfg v0.8.3 h1:leywnFjzr2QneZZWhE6uWd+QN/UpP0sdJRHYyuFvkeo=
|
||||
github.com/elastic/go-ucfg v0.8.3/go.mod h1:iaiY0NBIYeasNgycLyTvhJftQlQEUO2hpF+FX0JKxzo=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/judwhite/go-svc v1.2.1 h1:a7fsJzYUa33sfDJRF2N/WXhA+LonCEEY8BJb1tuS5tA=
|
||||
github.com/judwhite/go-svc v1.2.1/go.mod h1:mo/P2JNX8C07ywpP9YtO2gnBgnUiFTHqtsZekJrUuTk=
|
||||
github.com/khorevaa/logos v0.9.8 h1:ZBRnxOJ5ORnELHH/Rarm1OQoIUHhae4WdHBwI4kgwZE=
|
||||
github.com/khorevaa/logos v0.9.8/go.mod h1:wLXbpwEXx1Je5HTf7EwgbJntj2kGPvvvAEbxqWlOZNA=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
|
||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
|
||||
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
|
||||
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||
go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
|
||||
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI=
|
||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
|
||||
1
goreleaser.bat
Normal file
1
goreleaser.bat
Normal file
@@ -0,0 +1 @@
|
||||
docker run --rm --privileged -v %cd%:/go/src/app -v /var/run/docker.sock:/var/run/docker.sock -w /go/src/app goreleaser/goreleaser:latest release --snapshot --skip-publish --rm-dist
|
||||
7
goreleaser.sh
Normal file
7
goreleaser.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
docker run --rm --privileged \
|
||||
-v $PWD:/go/src/app \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-w /go/src/app \
|
||||
goreleaser/goreleaser:latest release --snapshot --skip-publish --rm-dist
|
||||
@@ -1,26 +1,67 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sync"
|
||||
"golang.org/x/sys/windows/svc"
|
||||
|
||||
"github.com/judwhite/go-svc"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/khorevaa/logos"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
// nolint: gochecknoglobals
|
||||
var (
|
||||
version = "dev"
|
||||
commit = ""
|
||||
date = ""
|
||||
builtBy = ""
|
||||
)
|
||||
|
||||
var log = logos.New("github.com/v8platform/onec-util")
|
||||
|
||||
func main() {
|
||||
|
||||
app := &cli.App{
|
||||
Name: "onec-util",
|
||||
Version: version,
|
||||
Compiled: time.Now(),
|
||||
Authors: []*cli.Author{
|
||||
{
|
||||
Name: "Aleksey Khorev",
|
||||
},
|
||||
},
|
||||
Usage: "Command line utilities for server 1C.Enterprise",
|
||||
UsageText: "onec-util command [command options] [arguments...]",
|
||||
Copyright: "(c) 2021 Khorevaa",
|
||||
//Description: "Command line utilities for server 1S.Enterprise",
|
||||
}
|
||||
|
||||
for _, command := range cmd.Commands {
|
||||
app.Commands = append(app.Commands, command.Cmd())
|
||||
}
|
||||
|
||||
err := app.Run(os.Args)
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// program implements svc.Service
|
||||
type program struct {
|
||||
wg sync.WaitGroup
|
||||
quit chan struct{}
|
||||
}
|
||||
|
||||
func main() {
|
||||
prg := &program{}
|
||||
|
||||
// Call svc.Run to start your program/service.
|
||||
if err := svc.Run(prg); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
// func main() {
|
||||
// prg := &program{}
|
||||
//
|
||||
// // Call svc.Run to start your program/service.
|
||||
// if err := svc.Run(prg); err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
// }
|
||||
|
||||
func (p *program) Init(env svc.Environment) error {
|
||||
log.Printf("is win service? %v\n", env.IsWindowsService())
|
||||
Reference in New Issue
Block a user