Compare commits

...

8 Commits

Author SHA1 Message Date
2a3f1d7818 Merge pull request #46 from unistack-org/master
merge stable
2021-11-18 16:07:31 +03:00
f8b972b51a allow to override path in save/load/watch
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-11-18 16:06:25 +03:00
65c867a6b4 Merge pull request #45 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.7
Bump go.unistack.org/micro/v3 from 3.8.6 to 3.8.7
2021-10-28 20:16:28 +03:00
dependabot[bot]
7701ef5f8b Bump go.unistack.org/micro/v3 from 3.8.6 to 3.8.7
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.6 to 3.8.7.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.6...v3.8.7)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 17:16:10 +00:00
ef7349c7c6 Merge pull request #44 from unistack-org/dependabot/go_modules/go.unistack.org/micro/v3-3.8.6
Bump go.unistack.org/micro/v3 from 3.8.5 to 3.8.6
2021-10-27 20:20:13 +03:00
dependabot[bot]
c5a3e3b358 Bump go.unistack.org/micro/v3 from 3.8.5 to 3.8.6
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.8.5 to 3.8.6.
- [Release notes](https://github.com/unistack-org/micro/releases)
- [Commits](https://github.com/unistack-org/micro/compare/v3.8.5...v3.8.6)

---
updated-dependencies:
- dependency-name: go.unistack.org/micro/v3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 17:19:53 +00:00
945eb0b69c update workflows
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-27 19:03:49 +03:00
80462220e2 update import paths
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-10-26 23:00:25 +03:00
8 changed files with 89 additions and 86 deletions

View File

@@ -9,7 +9,7 @@
# the `language` matrix defined below to confirm you have the correct set of # the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages. # supported CodeQL languages.
# #
name: "CodeQL" name: "codeql"
on: on:
workflow_run: workflow_run:
@@ -17,16 +17,16 @@ on:
types: types:
- completed - completed
push: push:
branches: [ master ] branches: [ master, v3 ]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ master ] branches: [ master, v3 ]
schedule: schedule:
- cron: '34 1 * * 0' - cron: '34 1 * * 0'
jobs: jobs:
analyze: analyze:
name: Analyze name: analyze
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
actions: read actions: read
@@ -42,11 +42,14 @@ jobs:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps: steps:
- name: Checkout repository - name: checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: setup
uses: actions/setup-go@v2
with:
go-version: 1.16
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: init
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v1
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
@@ -57,7 +60,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: autobuild
uses: github/codeql-action/autobuild@v1 uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell. # Command-line programs to run using the OS shell.
@@ -71,5 +74,5 @@ jobs:
# make bootstrap # make bootstrap
# make release # make release
- name: Perform CodeQL Analysis - name: analyze
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v1

View File

@@ -1,66 +1,31 @@
name: "prautomerge" name: "prautomerge"
on: on:
workflow_run: pull_request_target:
workflows: ["prbuild"] types: [assigned, opened, synchronize, reopened]
types:
- completed
permissions: permissions:
contents: write
pull-requests: write pull-requests: write
contents: write
jobs: jobs:
Dependabot-Automerge: dependabot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Contains workaround to execute if dependabot updates the PR by checking for the base branch in the linked PR if: ${{ github.actor == 'dependabot[bot]' }}
# The the github.event.workflow_run.event value is 'push' and not 'pull_request'
# dont work with multiple workflows when last returns success
if: >-
github.event.workflow_run.conclusion == 'success'
&& github.actor == 'dependabot[bot]'
&& github.event.sender.login == 'dependabot[bot]'
&& github.event.sender.type == 'Bot'
&& (github.event.workflow_run.event == 'pull_request'
|| (github.event.workflow_run.event == 'push' && github.event.workflow_run.pull_requests[0].base.ref == github.event.repository.default_branch ))
steps: steps:
- name: Approve Changes and Merge changes if label 'dependencies' is set - name: metadata
uses: actions/github-script@v5 id: metadata
uses: dependabot/fetch-metadata@v1.1.1
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: "${{ secrets.TOKEN }}"
script: | - name: approve
console.log(context.payload.workflow_run); run: gh pr review --approve "$PR_URL"
env:
var labelNames = await github.paginate( PR_URL: ${{github.event.pull_request.html_url}}
github.issues.listLabelsOnIssue, GITHUB_TOKEN: ${{secrets.TOKEN}}
{ - name: merge
repo: context.repo.repo, if: ${{contains(steps.metadata.outputs.dependency-names, 'go.unistack.org')}}
owner: context.repo.owner, run: gh pr merge --auto --merge "$PR_URL"
issue_number: context.payload.workflow_run.pull_requests[0].number, env:
}, PR_URL: ${{github.event.pull_request.html_url}}
(response) => response.data.map( GITHUB_TOKEN: ${{secrets.TOKEN}}
(label) => label.name
)
);
console.log(labelNames);
if (labelNames.includes('dependencies')) {
console.log('Found label');
await github.pulls.createReview({
repo: context.repo.repo,
owner: context.repo.owner,
pull_number: context.payload.workflow_run.pull_requests[0].number,
event: 'APPROVE'
});
console.log('Approved PR');
await github.pulls.merge({
repo: context.repo.repo,
owner: context.repo.owner,
pull_number: context.payload.workflow_run.pull_requests[0].number,
});
console.log('Merged PR');
}

View File

@@ -1,4 +1,4 @@
package consul package consul // import "go.unistack.org/micro-config-consul/v3"
import ( import (
"context" "context"
@@ -6,8 +6,8 @@ import (
"github.com/hashicorp/consul/api" "github.com/hashicorp/consul/api"
"github.com/imdario/mergo" "github.com/imdario/mergo"
"github.com/unistack-org/micro/v3/config" "go.unistack.org/micro/v3/config"
rutil "github.com/unistack-org/micro/v3/util/reflect" rutil "go.unistack.org/micro/v3/util/reflect"
) )
var DefaultStructTag = "consul" var DefaultStructTag = "consul"
@@ -82,15 +82,23 @@ func (c *consulConfig) Init(opts ...config.Option) error {
} }
func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) error { func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) error {
path := c.path
options := config.NewLoadOptions(opts...)
if options.Context != nil {
if v, ok := options.Context.Value(pathKey{}).(string); ok && v != "" {
path = v
}
}
if err := config.DefaultBeforeLoad(ctx, c); err != nil { if err := config.DefaultBeforeLoad(ctx, c); err != nil {
return err return err
} }
pair, _, err := c.cli.KV().Get(c.path, nil) pair, _, err := c.cli.KV().Get(path, nil)
if err != nil { if err != nil {
err = fmt.Errorf("consul path %s load error: %w", c.path, err) err = fmt.Errorf("consul path %s load error: %w", path, err)
} else if pair == nil { } else if pair == nil {
err = fmt.Errorf("consul path %s load error: not found", c.path) err = fmt.Errorf("consul path %s load error: not found", path)
} }
if err != nil { if err != nil {
@@ -101,7 +109,6 @@ func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) erro
return config.DefaultAfterLoad(ctx, c) return config.DefaultAfterLoad(ctx, c)
} }
options := config.NewLoadOptions(opts...)
mopts := []func(*mergo.Config){mergo.WithTypeCheck} mopts := []func(*mergo.Config){mergo.WithTypeCheck}
if options.Override { if options.Override {
mopts = append(mopts, mergo.WithOverride) mopts = append(mopts, mergo.WithOverride)
@@ -138,19 +145,27 @@ func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) erro
} }
func (c *consulConfig) Save(ctx context.Context, opts ...config.SaveOption) error { func (c *consulConfig) Save(ctx context.Context, opts ...config.SaveOption) error {
path := c.path
options := config.NewSaveOptions(opts...)
if options.Context != nil {
if v, ok := options.Context.Value(pathKey{}).(string); ok && v != "" {
path = v
}
}
if err := config.DefaultBeforeSave(ctx, c); err != nil { if err := config.DefaultBeforeSave(ctx, c); err != nil {
return err return err
} }
buf, err := c.opts.Codec.Marshal(c.opts.Struct) buf, err := c.opts.Codec.Marshal(c.opts.Struct)
if err == nil { if err == nil {
_, err = c.cli.KV().Put(&api.KVPair{Key: c.path, Value: buf}, nil) _, err = c.cli.KV().Put(&api.KVPair{Key: path, Value: buf}, nil)
} }
if err != nil { if err != nil {
c.opts.Logger.Errorf(c.opts.Context, "consul path %s save error: %v", c.path, err) c.opts.Logger.Errorf(c.opts.Context, "consul path %s save error: %v", path, err)
if !c.opts.AllowFail { if !c.opts.AllowFail {
return fmt.Errorf("consul path %s save error: %v", c.path, err) return fmt.Errorf("consul path %s save error: %v", path, err)
} }
} }
@@ -170,9 +185,17 @@ func (c *consulConfig) Name() string {
} }
func (c *consulConfig) Watch(ctx context.Context, opts ...config.WatchOption) (config.Watcher, error) { func (c *consulConfig) Watch(ctx context.Context, opts ...config.WatchOption) (config.Watcher, error) {
path := c.path
options := config.NewWatchOptions(opts...)
if options.Context != nil {
if v, ok := options.Context.Value(pathKey{}).(string); ok && v != "" {
path = v
}
}
w := &consulWatcher{ w := &consulWatcher{
cli: c.cli, cli: c.cli,
path: c.path, path: path,
opts: c.opts, opts: c.opts,
wopts: config.NewWatchOptions(opts...), wopts: config.NewWatchOptions(opts...),
done: make(chan struct{}), done: make(chan struct{}),

4
go.mod
View File

@@ -1,4 +1,4 @@
module github.com/unistack-org/micro-config-consul/v3 module go.unistack.org/micro-config-consul/v3
go 1.16 go 1.16
@@ -16,5 +16,5 @@ require (
github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/mitchellh/mapstructure v1.4.2 // indirect
github.com/pkg/errors v0.9.1 // indirect github.com/pkg/errors v0.9.1 // indirect
github.com/stretchr/testify v1.7.0 // indirect github.com/stretchr/testify v1.7.0 // indirect
github.com/unistack-org/micro/v3 v3.7.6 go.unistack.org/micro/v3 v3.8.9
) )

8
go.sum
View File

@@ -162,10 +162,10 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/unistack-org/micro-proto v0.0.9 h1:KrWLS4FUX7UAWNAilQf70uad6ZPf/0EudeddCXllRVc= go.unistack.org/micro-proto/v3 v3.1.0 h1:q39FwjFiRZn+Ux/tt+d3bJTmDtsQQWa+3SLYVo1vLfA=
github.com/unistack-org/micro-proto v0.0.9/go.mod h1:Cckwmzd89gvS7ThxzZp9kQR/EOdksFQcsTAtDDyKwrg= go.unistack.org/micro-proto/v3 v3.1.0/go.mod h1:DpRhYCBXlmSJ/AAXTmntvlh7kQkYU6eFvlmYAx4BQS8=
github.com/unistack-org/micro/v3 v3.7.6 h1:cobNkaicZR+8nbDWRUmX3/CSLh6ZNSytK2zWth4s4IM= go.unistack.org/micro/v3 v3.8.9 h1:F+HAQSHI86F8Xx5D6XKvvuN0TtOuVvJM+OBV8aYTg0Y=
github.com/unistack-org/micro/v3 v3.7.6/go.mod h1:Ke/8WJlNZi4ZYwL9HcsANAbQ66/HocTBEZM+od99/mM= go.unistack.org/micro/v3 v3.8.9/go.mod h1:KMMmOmbgo/D52/rCAbqeKbBsgEEbSKM69he54J3ZIuA=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=

View File

@@ -9,7 +9,7 @@ import (
"os" "os"
hclog "github.com/hashicorp/go-hclog" hclog "github.com/hashicorp/go-hclog"
"github.com/unistack-org/micro/v3/logger" "go.unistack.org/micro/v3/logger"
) )
// to check implementation // to check implementation

View File

@@ -4,7 +4,7 @@ import (
"time" "time"
"github.com/hashicorp/consul/api" "github.com/hashicorp/consul/api"
"github.com/unistack-org/micro/v3/config" "go.unistack.org/micro/v3/config"
) )
type configKey struct{} type configKey struct{}
@@ -44,3 +44,15 @@ type timeoutKey struct{}
func Timeout(td time.Duration) config.Option { func Timeout(td time.Duration) config.Option {
return config.SetOption(timeoutKey{}, td) return config.SetOption(timeoutKey{}, td)
} }
func LoadPath(path string) config.LoadOption {
return config.SetLoadOption(pathKey{}, path)
}
func SavePath(path string) config.SaveOption {
return config.SetSaveOption(pathKey{}, path)
}
func WatchPath(path string) config.WatchOption {
return config.SetWatchOption(pathKey{}, path)
}

View File

@@ -5,9 +5,9 @@ import (
"reflect" "reflect"
"github.com/hashicorp/consul/api" "github.com/hashicorp/consul/api"
"github.com/unistack-org/micro/v3/config" "go.unistack.org/micro/v3/config"
"github.com/unistack-org/micro/v3/util/jitter" "go.unistack.org/micro/v3/util/jitter"
rutil "github.com/unistack-org/micro/v3/util/reflect" rutil "go.unistack.org/micro/v3/util/reflect"
) )
type consulWatcher struct { type consulWatcher struct {