From 8df1d8f9be6bb797de2b4a15e7426a023cc38095 Mon Sep 17 00:00:00 2001 From: Davies Liu Date: Wed, 11 May 2022 13:20:49 +0800 Subject: [PATCH] use ./cmd as a package (#1994) --- .github/workflows/wintest.yml | 2 +- .goreleaser.yml | 10 +++---- Makefile | 10 +++---- cmd/bench.go | 2 +- cmd/bench_test.go | 2 +- cmd/config.go | 4 +-- cmd/config_test.go | 2 +- cmd/destroy.go | 4 +-- cmd/dump.go | 2 +- cmd/dump_test.go | 2 +- cmd/flags.go | 2 +- cmd/format.go | 6 ++-- cmd/format_test.go | 2 +- cmd/fsck.go | 4 +-- cmd/fsck_test.go | 2 +- cmd/gateway.go | 4 +-- cmd/gateway_noop.go | 2 +- cmd/gc.go | 4 +-- cmd/gc_test.go | 2 +- cmd/info.go | 2 +- cmd/info_test.go | 2 +- cmd/integration_test.go | 2 +- cmd/load.go | 2 +- cmd/main.go | 9 +----- cmd/main_test.go | 2 +- cmd/mount.go | 4 +-- cmd/mount_test.go | 2 +- cmd/mount_unix.go | 2 +- cmd/mount_windows.go | 2 +- cmd/profile.go | 2 +- cmd/rmr.go | 2 +- cmd/rmr_test.go | 2 +- cmd/stats.go | 2 +- cmd/status.go | 2 +- cmd/status_test.go | 2 +- cmd/sync.go | 2 +- cmd/sync_test.go | 2 +- cmd/umount.go | 2 +- cmd/warmup.go | 2 +- cmd/warmup_test.go | 2 +- cmd/webdav.go | 2 +- cmd/webdav_noop.go | 2 +- docs/en/getting-started/installation.md | 2 +- docs/zh_cn/getting-started/installation.md | 2 +- main.go | 33 ++++++++++++++++++++++ sdk/java/libjfs/bridge.go | 8 ++---- sdk/java/libjfs/bridge_test.go | 3 +- sdk/java/libjfs/main.go | 29 ++++++------------- 48 files changed, 105 insertions(+), 95 deletions(-) create mode 100644 main.go diff --git a/.github/workflows/wintest.yml b/.github/workflows/wintest.yml index 45e0db6b5933..8762d32b4eb2 100644 --- a/.github/workflows/wintest.yml +++ b/.github/workflows/wintest.yml @@ -114,7 +114,7 @@ jobs: - name: Build Juicefs run: | - go build -ldflags="-s -w" -o juicefs.exe ./cmd + go build -ldflags="-s -w" -o juicefs.exe . - name: Juicefs Format run: | diff --git a/.goreleaser.yml b/.goreleaser.yml index 7e7eca611b96..07d38ea2967f 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -18,7 +18,7 @@ builds: flags: - -buildmode - exe - main: ./cmd + main: . goos: - windows goarch: @@ -28,7 +28,7 @@ builds: - CC=o64-clang - CXX=o64-clang++ ldflags: -s -w -X github.com/juicedata/juicefs/pkg/version.version={{.Version}} -X github.com/juicedata/juicefs/pkg/version.revision={{.ShortCommit}} -X github.com/juicedata/juicefs/pkg/version.revisionDate={{.Env.REVISIONDATE}} - main: ./cmd + main: . goos: - darwin goarch: @@ -38,7 +38,7 @@ builds: - CC=oa64-clang - CXX=oa64-clang++ ldflags: -s -w -X github.com/juicedata/juicefs/pkg/version.version={{.Version}} -X github.com/juicedata/juicefs/pkg/version.revision={{.ShortCommit}} -X github.com/juicedata/juicefs/pkg/version.revisionDate={{.Env.REVISIONDATE}} - main: ./cmd + main: . goos: - darwin goarch: @@ -47,7 +47,7 @@ builds: env: - CC=/usr/bin/musl-gcc ldflags: -s -w -X github.com/juicedata/juicefs/pkg/version.version={{.Version}} -X github.com/juicedata/juicefs/pkg/version.revision={{.ShortCommit}} -X github.com/juicedata/juicefs/pkg/version.revisionDate={{.Env.REVISIONDATE}} -linkmode external -extldflags '-static' - main: ./cmd + main: . goos: - linux goarch: @@ -56,7 +56,7 @@ builds: env: - CC=aarch64-linux-gnu-gcc ldflags: -s -w -X github.com/juicedata/juicefs/pkg/version.version={{.Version}} -X github.com/juicedata/juicefs/pkg/version.revision={{.ShortCommit}} -X github.com/juicedata/juicefs/pkg/version.revisionDate={{.Env.REVISIONDATE}} - main: ./cmd + main: . goos: - linux goarch: diff --git a/Makefile b/Makefile index 1d96a05f9a00..991cabc0cb2e 100644 --- a/Makefile +++ b/Makefile @@ -20,20 +20,20 @@ ifdef STATIC endif juicefs: Makefile cmd/*.go pkg/*/*.go go.* - go build -ldflags="$(LDFLAGS)" -o juicefs ./cmd + go build -ldflags="$(LDFLAGS)" -o juicefs . juicefs.lite: Makefile cmd/*.go pkg/*/*.go go build -tags nogateway,nowebdav,nocos,nobos,nohdfs,noibmcos,noobs,nooss,noqingstor,noscs,nosftp,noswift,noupyun,noazure,nogs,noufile,nob2,nosqlite,nomysql,nopg,notikv,nobadger,noetcd \ - -ldflags="$(LDFLAGS)" -o juicefs.lite ./cmd + -ldflags="$(LDFLAGS)" -o juicefs.lite . juicefs.ceph: Makefile cmd/*.go pkg/*/*.go - go build -tags ceph -ldflags="$(LDFLAGS)" -o juicefs.ceph ./cmd + go build -tags ceph -ldflags="$(LDFLAGS)" -o juicefs.ceph . # This is the script for compiling the Linux version on the MacOS platform. # Please execute the `brew install FiloSottile/musl-cross/musl-cross` command before using it. juicefs.linux: - CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build -ldflags="$(LDFLAGS)" -o juicefs ./cmd + CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC=x86_64-linux-musl-gcc CGO_LDFLAGS="-static" go build -ldflags="$(LDFLAGS)" -o juicefs . /usr/local/include/winfsp: sudo mkdir -p /usr/local/include/winfsp @@ -41,7 +41,7 @@ juicefs.linux: juicefs.exe: /usr/local/include/winfsp cmd/*.go pkg/*/*.go GOOS=windows CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc \ - go build -ldflags="$(LDFLAGS)" -buildmode exe -o juicefs.exe ./cmd + go build -ldflags="$(LDFLAGS)" -buildmode exe -o juicefs.exe . .PHONY: snapshot release test snapshot: diff --git a/cmd/bench.go b/cmd/bench.go index a3b8eced61a8..db2091a148b2 100644 --- a/cmd/bench.go +++ b/cmd/bench.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/bench_test.go b/cmd/bench_test.go index a8b75a0dcb97..f5f6e42bf486 100644 --- a/cmd/bench_test.go +++ b/cmd/bench_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "os" diff --git a/cmd/config.go b/cmd/config.go index e9a6eb2dde21..7c73c86569e7 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "bufio" @@ -207,7 +207,7 @@ func config(ctx *cli.Context) error { if !ctx.Bool("force") { if storage { - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { return err } diff --git a/cmd/config_test.go b/cmd/config_test.go index fbbba76d9139..51a04edd89e2 100644 --- a/cmd/config_test.go +++ b/cmd/config_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "encoding/json" diff --git a/cmd/destroy.go b/cmd/destroy.go index 7462991cbea5..edc307a57403 100644 --- a/cmd/destroy.go +++ b/cmd/destroy.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" @@ -119,7 +119,7 @@ func destroy(ctx *cli.Context) error { if uuid := ctx.Args().Get(1); uuid != format.UUID { logger.Fatalf("UUID %s != expected %s", uuid, format.UUID) } - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("create object storage: %s", err) } diff --git a/cmd/dump.go b/cmd/dump.go index 69ba6253b95a..ec54c6a0fa9a 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "io" diff --git a/cmd/dump_test.go b/cmd/dump_test.go index c26d81a0d778..d6f7cb8bf32e 100644 --- a/cmd/dump_test.go +++ b/cmd/dump_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "context" diff --git a/cmd/flags.go b/cmd/flags.go index 95216151da19..35cfdc908462 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "os" diff --git a/cmd/format.go b/cmd/format.go index 926eca351ee2..81a0dde2d172 100644 --- a/cmd/format.go +++ b/cmd/format.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "bytes" @@ -180,7 +180,7 @@ func fixObjectSize(s int) int { return s } -func createStorage(format meta.Format) (object.ObjectStorage, error) { +func CreateStorage(format meta.Format) (object.ObjectStorage, error) { if err := format.Decrypt(); err != nil { return nil, fmt.Errorf("format decrypt: %s", err) } @@ -405,7 +405,7 @@ func format(c *cli.Context) error { } } - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } diff --git a/cmd/format_test.go b/cmd/format_test.go index 5c47d5aa4370..67afc620d955 100644 --- a/cmd/format_test.go +++ b/cmd/format_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "context" diff --git a/cmd/fsck.go b/cmd/fsck.go index c001dfa4e729..9efc8e147626 100644 --- a/cmd/fsck.go +++ b/cmd/fsck.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" @@ -66,7 +66,7 @@ func fsck(ctx *cli.Context) error { CacheDir: "memory", } - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } diff --git a/cmd/fsck_test.go b/cmd/fsck_test.go index 7f92f5e2b0dd..ee9fc0306350 100644 --- a/cmd/fsck_test.go +++ b/cmd/fsck_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/gateway.go b/cmd/gateway.go index 71fade7594d6..8138b8c90e06 100644 --- a/cmd/gateway.go +++ b/cmd/gateway.go @@ -17,7 +17,7 @@ * limitations under the License. */ -package main +package cmd import ( _ "net/http/pprof" @@ -185,7 +185,7 @@ func initForSvc(c *cli.Context, mp string, metaUrl string) (meta.Meta, chunk.Chu } chunkConf := getChunkConf(c, format) - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } diff --git a/cmd/gateway_noop.go b/cmd/gateway_noop.go index fafb2622628b..83980fbc6ab1 100644 --- a/cmd/gateway_noop.go +++ b/cmd/gateway_noop.go @@ -16,7 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package main +package cmd import ( "errors" diff --git a/cmd/gc.go b/cmd/gc.go index 6ea81101dc87..514f8a8e9e00 100644 --- a/cmd/gc.go +++ b/cmd/gc.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "os" @@ -101,7 +101,7 @@ func gc(ctx *cli.Context) error { CacheDir: "memory", } - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } diff --git a/cmd/gc_test.go b/cmd/gc_test.go index 43d49ab0f989..f2a62f6ebdd8 100644 --- a/cmd/gc_test.go +++ b/cmd/gc_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/info.go b/cmd/info.go index b54ae6b9f757..a3207ae86109 100644 --- a/cmd/info.go +++ b/cmd/info.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/info_test.go b/cmd/info_test.go index 5311b987372c..b9de42509913 100644 --- a/cmd/info_test.go +++ b/cmd/info_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/integration_test.go b/cmd/integration_test.go index 1d5e8601da23..a537e4334854 100644 --- a/cmd/integration_test.go +++ b/cmd/integration_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "context" diff --git a/cmd/load.go b/cmd/load.go index d878ee2ac2e1..7d319a7ddb36 100644 --- a/cmd/load.go +++ b/cmd/load.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "io" diff --git a/cmd/main.go b/cmd/main.go index 5fcc84d4e8c7..2802dd3321e9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" @@ -80,13 +80,6 @@ func Main(args []string) error { } -func main() { - err := Main(os.Args) - if err != nil { - logger.Fatal(err) - } -} - func handleSysMountArgs(args []string) []string { optionToCmdFlag := map[string]string{ "attrcacheto": "attr-cache", diff --git a/cmd/main_test.go b/cmd/main_test.go index 60cdbc39a9eb..af4325e834a0 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "reflect" diff --git a/cmd/mount.go b/cmd/mount.go index a6ce338a8647..41c9d8767fdd 100644 --- a/cmd/mount.go +++ b/cmd/mount.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "net" @@ -282,7 +282,7 @@ func getMetaConf(c *cli.Context, mp string, readOnly bool) *meta.Config { } func newStore(format *meta.Format, chunkConf *chunk.Config, registerer prometheus.Registerer) (object.ObjectStorage, chunk.ChunkStore) { - blob, err := createStorage(*format) + blob, err := CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } diff --git a/cmd/mount_test.go b/cmd/mount_test.go index ad2fe76552fe..64dc996905d6 100644 --- a/cmd/mount_test.go +++ b/cmd/mount_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "context" diff --git a/cmd/mount_unix.go b/cmd/mount_unix.go index 862c8b9cdb19..56edcbf69ff7 100644 --- a/cmd/mount_unix.go +++ b/cmd/mount_unix.go @@ -17,7 +17,7 @@ * limitations under the License. */ -package main +package cmd import ( "bytes" diff --git a/cmd/mount_windows.go b/cmd/mount_windows.go index b9196f0e287f..f7fdee433262 100644 --- a/cmd/mount_windows.go +++ b/cmd/mount_windows.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "github.com/juicedata/juicefs/pkg/meta" diff --git a/cmd/profile.go b/cmd/profile.go index 51f5c4a2e542..1f0f7f1df9fc 100644 --- a/cmd/profile.go +++ b/cmd/profile.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "bufio" diff --git a/cmd/rmr.go b/cmd/rmr.go index 87055d37d998..ef1bbc0f30c4 100644 --- a/cmd/rmr.go +++ b/cmd/rmr.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/rmr_test.go b/cmd/rmr_test.go index 6c873d248593..073473e3d360 100644 --- a/cmd/rmr_test.go +++ b/cmd/rmr_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/stats.go b/cmd/stats.go index 55f79c904cfc..dcf933c52283 100644 --- a/cmd/stats.go +++ b/cmd/stats.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/status.go b/cmd/status.go index d83f1db89a44..0baec2b4457e 100644 --- a/cmd/status.go +++ b/cmd/status.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "encoding/json" diff --git a/cmd/status_test.go b/cmd/status_test.go index 7e5cd596f70d..46c19dbbd1ec 100644 --- a/cmd/status_test.go +++ b/cmd/status_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "encoding/json" diff --git a/cmd/sync.go b/cmd/sync.go index 50e19374f838..f08641395f2e 100644 --- a/cmd/sync.go +++ b/cmd/sync.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/sync_test.go b/cmd/sync_test.go index 78dea7998ac5..b809c1d53409 100644 --- a/cmd/sync_test.go +++ b/cmd/sync_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "bytes" diff --git a/cmd/umount.go b/cmd/umount.go index 3fea0ef45fed..764576889cb4 100644 --- a/cmd/umount.go +++ b/cmd/umount.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "errors" diff --git a/cmd/warmup.go b/cmd/warmup.go index 1fae75dfc227..1fa201910e20 100644 --- a/cmd/warmup.go +++ b/cmd/warmup.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "bufio" diff --git a/cmd/warmup_test.go b/cmd/warmup_test.go index 3e7e06868c8d..ac0255de17a5 100644 --- a/cmd/warmup_test.go +++ b/cmd/warmup_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/webdav.go b/cmd/webdav.go index f03f88e7bea0..00267168cfe8 100644 --- a/cmd/webdav.go +++ b/cmd/webdav.go @@ -18,7 +18,7 @@ * */ -package main +package cmd import ( "github.com/juicedata/juicefs/pkg/fs" diff --git a/cmd/webdav_noop.go b/cmd/webdav_noop.go index b339e4b0d33d..2a1e6f7fec33 100644 --- a/cmd/webdav_noop.go +++ b/cmd/webdav_noop.go @@ -17,7 +17,7 @@ * limitations under the License. */ -package main +package cmd import ( "errors" diff --git a/docs/en/getting-started/installation.md b/docs/en/getting-started/installation.md index e6f95d7ba8d9..8de5cdb024b5 100644 --- a/docs/en/getting-started/installation.md +++ b/docs/en/getting-started/installation.md @@ -231,7 +231,7 @@ Download MinGW-w64 and add its `bin` directory to the system environment variabl 3. Compile client ```shell - go build -ldflags="-s -w" -o juicefs.exe ./cmd + go build -ldflags="-s -w" -o juicefs.exe . ``` ### Cross-compiling Windows clients on Linux diff --git a/docs/zh_cn/getting-started/installation.md b/docs/zh_cn/getting-started/installation.md index 97b42145903c..4e4926179d5a 100644 --- a/docs/zh_cn/getting-started/installation.md +++ b/docs/zh_cn/getting-started/installation.md @@ -231,7 +231,7 @@ CMD [ "juicefs" ] 3. 编译客户端 ```shell - go build -ldflags="-s -w" -o juicefs.exe ./cmd + go build -ldflags="-s -w" -o juicefs.exe . ``` ### 在 Linux 中交叉编译 Windows 客户端 diff --git a/main.go b/main.go new file mode 100644 index 000000000000..194e8b1a524e --- /dev/null +++ b/main.go @@ -0,0 +1,33 @@ +/* + * JuiceFS, Copyright 2022 Juicedata, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "os" + + "github.com/juicedata/juicefs/cmd" + "github.com/juicedata/juicefs/pkg/utils" +) + +var logger = utils.GetLogger("juicefs") + +func main() { + err := cmd.Main(os.Args) + if err != nil { + logger.Fatal(err) + } +} diff --git a/sdk/java/libjfs/bridge.go b/sdk/java/libjfs/bridge.go index c8672b2b0326..337df520c2cf 100644 --- a/sdk/java/libjfs/bridge.go +++ b/sdk/java/libjfs/bridge.go @@ -22,18 +22,16 @@ import ( "context" "errors" "fmt" - "github.com/golang/protobuf/proto" "io" "net" "sort" "time" + "github.com/golang/protobuf/proto" + "github.com/prometheus/client_golang/prometheus" + dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" "github.com/prometheus/common/model" - - dto "github.com/prometheus/client_model/go" - - "github.com/prometheus/client_golang/prometheus" ) const ( diff --git a/sdk/java/libjfs/bridge_test.go b/sdk/java/libjfs/bridge_test.go index 06278643d30d..6059d3f54157 100644 --- a/sdk/java/libjfs/bridge_test.go +++ b/sdk/java/libjfs/bridge_test.go @@ -29,9 +29,8 @@ import ( "testing" "time" - "github.com/prometheus/common/model" - "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/common/model" ) func TestSanitize(t *testing.T) { diff --git a/sdk/java/libjfs/main.go b/sdk/java/libjfs/main.go index 7c7436e1e28c..518a31e0e787 100644 --- a/sdk/java/libjfs/main.go +++ b/sdk/java/libjfs/main.go @@ -42,6 +42,7 @@ import ( "time" "unsafe" + "github.com/juicedata/juicefs/cmd" "github.com/juicedata/juicefs/pkg/chunk" "github.com/juicedata/juicefs/pkg/fs" "github.com/juicedata/juicefs/pkg/meta" @@ -294,23 +295,6 @@ func getOrCreate(name, user, group, superuser, supergroup string, f func() *fs.F return h } -func createStorage(format meta.Format) (object.ObjectStorage, error) { - if err := format.Decrypt(); err != nil { - return nil, fmt.Errorf("format decrypt: %s", err) - } - var blob object.ObjectStorage - var err error - if format.Shards > 1 { - blob, err = object.NewSharded(strings.ToLower(format.Storage), format.Bucket, format.AccessKey, format.SecretKey, format.Shards) - } else { - blob, err = object.CreateStorage(strings.ToLower(format.Storage), format.Bucket, format.AccessKey, format.SecretKey) - } - if err != nil { - return nil, err - } - return object.WithPrefix(blob, format.Name+"/"), nil -} - func push2Gateway(pushGatewayAddr, pushAuth string, pushInterVal time.Duration, registry *prometheus.Registry, commonLabels map[string]string) { pusher := push.New(pushGatewayAddr, "juicefs").Gatherer(registry) for k, v := range commonLabels { @@ -374,7 +358,8 @@ func jfs_init(cname, jsonConf, user, group, superuser, supergroup *C.char) uintp var jConf javaConf err := json.Unmarshal([]byte(C.GoString(jsonConf)), &jConf) if err != nil { - logger.Fatalf("invalid json: %s", C.GoString(jsonConf)) + logger.Errorf("invalid json: %s", C.GoString(jsonConf)) + return nil } if jConf.Debug || os.Getenv("JUICEFS_DEBUG") != "" { utils.SetLogLevel(logrus.DebugLevel) @@ -407,7 +392,8 @@ func jfs_init(cname, jsonConf, user, group, superuser, supergroup *C.char) uintp m := meta.NewClient(jConf.MetaURL, metaConf) format, err := m.Load(true) if err != nil { - logger.Fatalf("load setting: %s", err) + logger.Errorf("load setting: %s", err) + return nil } var registerer prometheus.Registerer if jConf.PushGateway != "" || jConf.PushGraphite != "" { @@ -440,7 +426,7 @@ func jfs_init(cname, jsonConf, user, group, superuser, supergroup *C.char) uintp if jConf.Bucket != "" { format.Bucket = jConf.Bucket } - blob, err := createStorage(*format) + blob, err := cmd.CreateStorage(*format) if err != nil { logger.Fatalf("object storage: %s", err) } @@ -492,7 +478,8 @@ func jfs_init(cname, jsonConf, user, group, superuser, supergroup *C.char) uintp }) err = m.NewSession() if err != nil { - logger.Fatalf("new session: %s", err) + logger.Errorf("new session: %s", err) + return nil } conf := &vfs.Config{