andrey
12 months ago
6 changed files with 0 additions and 1157 deletions
@ -1,58 +0,0 @@ |
|||||
package ini |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"strings" |
|
||||
|
|
||||
"gitoa.ru/go-4devs/config" |
|
||||
"gitoa.ru/go-4devs/config/value" |
|
||||
"gopkg.in/ini.v1" |
|
||||
) |
|
||||
|
|
||||
const ( |
|
||||
Name = "ini" |
|
||||
Separator = "." |
|
||||
) |
|
||||
|
|
||||
var _ config.Provider = (*Provider)(nil) |
|
||||
|
|
||||
func New(data *ini.File) *Provider { |
|
||||
return &Provider{ |
|
||||
data: data, |
|
||||
resolve: func(path []string) (string, string) { |
|
||||
if len(path) == 1 { |
|
||||
return "", path[0] |
|
||||
} |
|
||||
|
|
||||
return strings.Join(path[:len(path)-1], Separator), strings.ToUpper(path[len(path)-1]) |
|
||||
}, |
|
||||
name: Name, |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
type Provider struct { |
|
||||
data *ini.File |
|
||||
resolve func(path []string) (string, string) |
|
||||
name string |
|
||||
} |
|
||||
|
|
||||
func (p *Provider) Name() string { |
|
||||
return p.name |
|
||||
} |
|
||||
|
|
||||
func (p *Provider) Value(ctx context.Context, path ...string) (config.Value, error) { |
|
||||
section, name := p.resolve(path) |
|
||||
|
|
||||
iniSection, err := p.data.GetSection(section) |
|
||||
if err != nil { |
|
||||
return nil, fmt.Errorf("%w: %s: %w", config.ErrValueNotFound, p.Name(), err) |
|
||||
} |
|
||||
|
|
||||
iniKey, err := iniSection.GetKey(name) |
|
||||
if err != nil { |
|
||||
return nil, fmt.Errorf("%w: %s: %w", config.ErrValueNotFound, p.Name(), err) |
|
||||
} |
|
||||
|
|
||||
return value.JString(iniKey.String()), nil |
|
||||
} |
|
@ -1,28 +0,0 @@ |
|||||
package ini_test |
|
||||
|
|
||||
import ( |
|
||||
"testing" |
|
||||
"time" |
|
||||
|
|
||||
"gitoa.ru/go-4devs/config/provider/ini" |
|
||||
"gitoa.ru/go-4devs/config/test" |
|
||||
) |
|
||||
|
|
||||
func TestProvider(t *testing.T) { |
|
||||
t.Parallel() |
|
||||
|
|
||||
file := test.NewINI() |
|
||||
|
|
||||
read := []test.Read{ |
|
||||
test.NewRead("To Do, In Progress, Done", "project", "PROJECT_BOARD_BASIC_KANBAN_TYPE"), |
|
||||
test.NewRead("markdown", "repository.editor", "PREVIEWABLE_FILE_MODES"), |
|
||||
test.NewRead("http://0.0.0.0:3000/", "server", "LOCAL_ROOT_URL"), |
|
||||
test.NewRead(20*time.Minute, "server", "LFS_HTTP_AUTH_EXPIRY"), |
|
||||
test.NewRead(5120, "repository.pull-request", "DEFAULT_MERGE_MESSAGE_SIZE"), |
|
||||
test.NewRead(true, "ui", "SHOW_USER_EMAIL"), |
|
||||
test.NewRead(false, "cors", "enabled"), |
|
||||
} |
|
||||
|
|
||||
prov := ini.New(file) |
|
||||
test.Run(t, prov, read) |
|
||||
} |
|
File diff suppressed because it is too large
@ -1,16 +0,0 @@ |
|||||
package test |
|
||||
|
|
||||
import ( |
|
||||
"log" |
|
||||
|
|
||||
"gopkg.in/ini.v1" |
|
||||
) |
|
||||
|
|
||||
func NewINI() *ini.File { |
|
||||
f, err := ini.Load(FixturePath("config.ini")) |
|
||||
if err != nil { |
|
||||
log.Fatal(err) |
|
||||
} |
|
||||
|
|
||||
return f |
|
||||
} |
|
Loading…
Reference in new issue