This commit is contained in:
A.Unger
2020-01-31 13:09:07 +01:00
parent 29f4ba30cb
commit 351694d22d
6 changed files with 183 additions and 10 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
coverage.out
/bin
/dist

139
Makefile Normal file
View File

@@ -0,0 +1,139 @@
SHELL := bash
NAME := ocis-accounts
IMPORT := github.com/owncloud/$(NAME)
BIN := bin
DIST := dist
ifeq ($(OS), Windows_NT)
EXECUTABLE := $(NAME).exe
UNAME := Windows
else
EXECUTABLE := $(NAME)
UNAME := $(shell uname -s)
endif
ifeq ($(UNAME), Darwin)
GOBUILD ?= go build -i
else
GOBUILD ?= go build
endif
PACKAGES ?= $(shell go list ./...)
SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*")
GENERATE ?= $(PACKAGES)
TAGS ?=
ifndef OUTPUT
ifneq ($(DRONE_TAG),)
OUTPUT ?= $(subst v,,$(DRONE_TAG))
else
OUTPUT ?= testing
endif
endif
ifndef VERSION
ifneq ($(DRONE_TAG),)
VERSION ?= $(subst v,,$(DRONE_TAG))
else
VERSION ?= $(shell git rev-parse --short HEAD)
endif
endif
ifndef DATE
DATE := $(shell date -u '+%Y%m%d')
endif
LDFLAGS += -s -w -X "$(IMPORT)/pkg/version.String=$(VERSION)" -X "$(IMPORT)/pkg/version.Date=$(DATE)"
GCFLAGS += all=-N -l
.PHONY: all
all: build
.PHONY: sync
sync:
go mod download
.PHONY: clean
clean:
go clean -i ./...
rm -rf $(BIN) $(DIST)
.PHONY: fmt
fmt:
gofmt -s -w $(SOURCES)
.PHONY: vet
vet:
go vet $(PACKAGES)
.PHONY: staticcheck
staticcheck:
go run honnef.co/go/tools/cmd/staticcheck -tags '$(TAGS)' $(PACKAGES)
.PHONY: lint
lint:
for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done;
.PHONY: generate
generate:
go generate $(GENERATE)
.PHONY: changelog
changelog:
go run github.com/restic/calens >| CHANGELOG.md
.PHONY: test
test:
go run github.com/haya14busa/goverage -v -coverprofile coverage.out $(PACKAGES)
.PHONY: install
install: $(SOURCES)
go install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$(NAME)
.PHONY: build
build: $(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE)-debug
$(BIN)/$(EXECUTABLE): $(SOURCES)
$(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ ./cmd/$(NAME)
$(BIN)/$(EXECUTABLE)-debug: $(SOURCES)
$(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME)
.PHONY: release
release: release-dirs release-linux release-windows release-darwin release-copy release-check
.PHONY: release-dirs
release-dirs:
mkdir -p $(DIST)/binaries $(DIST)/release
.PHONY: release-linux
release-linux: release-dirs
go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'linux' -arch 'amd64 386 arm64 arm' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME)
.PHONY: release-windows
release-windows: release-dirs
go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'windows' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME)
.PHONY: release-darwin
release-darwin: release-dirs
go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -os 'darwin' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME)
.PHONY: release-copy
release-copy:
$(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));)
.PHONY: release-check
release-check:
cd $(DIST)/release; $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;)
.PHONY: release-finish
release-finish: release-copy release-check
.PHONY: docs
docs:
cd docs; hugo
.PHONY: watch
watch:
go run github.com/cespare/reflex -c reflex.conf

1
cmd/ocis-accounts/ffs Normal file
View File

@@ -0,0 +1 @@
{"phoenix":{"theme":"lights"}}

View File

@@ -24,7 +24,6 @@ func (s Service) Set(c context.Context, req *proto.Record, res *proto.Record) er
settingsJSON, err := json.Marshal(req.Payload)
if err != nil {
// TODO log the error
return err
}

View File

@@ -4,24 +4,34 @@ package store
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
mstore "github.com/micro/go-micro/v2/store"
olog "github.com/owncloud/ocis-pkg/log"
)
// DefaultPath assumes UNIX
var DefaultPath string = "/var/tmp/ocis-store"
// Logger is a global logger
var Logger olog.Logger
// Store interacts with the filesystem to manage account information
type Store struct {
logger olog.Logger
mountPath string
}
// New returns a new file system store manager
// TODO add mountPath as a flag
// TODO add mountPath as a flag. Accept a *config argument
func New() Store {
// default to the current working directory if not configured
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
// TODO log error
// TODO deal with this
}
return Store{
mountPath: DefaultPath,
mountPath: dir,
logger: olog.NewLogger(),
}
}
@@ -42,16 +52,17 @@ func (s *Store) Read(key string, opts ...mstore.ReadOption) ([]*mstore.Record, e
func (s *Store) Write(rec *mstore.Record) error {
path := filepath.Join(s.mountPath, rec.Key)
if filepath.IsAbs(path) {
// TODO WARN, storage is relative to the service directory
}
if len(rec.Key) < 1 {
// TODO log error: empty key
return fmt.Errorf("%v", "key is empty")
}
return ioutil.WriteFile(path, rec.Value, 0644)
if err := ioutil.WriteFile(path, rec.Value, 0644); err != nil {
return err
}
s.logger.Info().Msgf("%v bytes written to %v", len(rec.Value), path)
return nil
}
// Delete implements the store interface

19
pkg/version/version.go Normal file
View File

@@ -0,0 +1,19 @@
package version
import (
"time"
)
var (
// String gets defined by the build system.
String = "0.0.0"
// Date indicates the build date.
Date = "00000000"
)
// Compiled returns the compile time of this service.
func Compiled() time.Time {
t, _ := time.Parse("20060102", Date)
return t
}