This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 41b2f82b9 feat(binding/dart): hide init && change to init (#5742)
41b2f82b9 is described below
commit 41b2f82b9a97362f0ac6dc000060d380502bc8e0
Author: Asuka Minato <[email protected]>
AuthorDate: Tue Mar 11 22:38:15 2025 +0900
feat(binding/dart): hide init && change to init (#5742)
* hide init && change to init
* reuse fromOperator
* var name
* change to storage api
* fix example
---
.github/workflows/ci_bindings_dart.yml | 1 +
bindings/dart/README.md | 10 +++++-----
bindings/dart/examples/basic.dart | 4 ++--
bindings/dart/lib/opendal.dart | 36 +++++++++++++++-------------------
bindings/dart/tests/opendal_test.dart | 15 +++++++-------
5 files changed, 31 insertions(+), 35 deletions(-)
diff --git a/.github/workflows/ci_bindings_dart.yml
b/.github/workflows/ci_bindings_dart.yml
index f874d9dda..5e9390c01 100644
--- a/.github/workflows/ci_bindings_dart.yml
+++ b/.github/workflows/ci_bindings_dart.yml
@@ -77,3 +77,4 @@ jobs:
working-directory: bindings/dart
run: |
dart run tests/opendal_test.dart
+ dart run examples/basic.dart
diff --git a/bindings/dart/README.md b/bindings/dart/README.md
index dd82802de..57e0d32ea 100644
--- a/bindings/dart/README.md
+++ b/bindings/dart/README.md
@@ -10,7 +10,7 @@ Api is designed to be like stdlib style.
This is stdlib
-```
+```dart
import 'dart:io';
void main() async {
@@ -22,12 +22,12 @@ void main() async {
This is opendal
-```
-import 'opendal.dart';
+```dart
+import 'package:opendal/opendal.dart';
void main() async {
- await RustLib.init();
- final File = FileManager.initOp(schemeStr: "fs", map: {"root": "/tmp"});
+ final storage = await Storage.init(schemeStr: "fs", map: {"root": "/tmp"});
+ final File = storage.initFile();
// drop-in
final file = File('file.txt');
var is_exists = await file.exists();
diff --git a/bindings/dart/examples/basic.dart
b/bindings/dart/examples/basic.dart
index 9ab8a5dfb..3ba47c5d7 100644
--- a/bindings/dart/examples/basic.dart
+++ b/bindings/dart/examples/basic.dart
@@ -18,8 +18,8 @@
import '../lib/opendal.dart';
void main() async {
- await RustLib.init();
- final File = FileManager.initOp(schemeStr: "fs", map: {"root": "/tmp"});
+ final storage = await Storage.init(schemeStr: "fs", map: {"root": "/tmp"});
+ final File = storage.initFile();
// drop-in style
var testFile = File("test_1.txt");
assert(!(await testFile.exists()));
diff --git a/bindings/dart/lib/opendal.dart b/bindings/dart/lib/opendal.dart
index d7ceefa11..0736c68b9 100644
--- a/bindings/dart/lib/opendal.dart
+++ b/bindings/dart/lib/opendal.dart
@@ -20,33 +20,29 @@ import 'src/rust/api/opendal_api.dart';
export 'src/rust/frb_generated.dart';
export 'src/rust/api/opendal_api.dart';
-class FileManager {
+class Storage {
final Operator _operator;
- FileManager._(this._operator);
+ Storage._(this._operator);
- static FileManager initOp(
- {required String schemeStr, required Map<String, String> map}) {
- return FileManager._(Operator(schemeStr: schemeStr, map: map));
+ static Future<Storage> init({
+ required String schemeStr,
+ required Map<String, String> map,
+ }) async {
+ if (!RustLib.instance.initialized) {
+ await RustLib.init();
+ }
+ return Storage._(Operator(schemeStr: schemeStr, map: map));
}
- File call(String path) {
- return File._(path: path, operator: _operator);
- }
-}
-
-class DirectoryManager {
- final Operator _operator;
-
- DirectoryManager._(this._operator);
-
- static DirectoryManager initOp(
- {required String schemeStr, required Map<String, String> map}) {
- return DirectoryManager._(Operator(schemeStr: schemeStr, map: map));
+ /// Creates a factory function for creating File objects
+ Function(String) initFile() {
+ return (String path) => File._(path: path, operator: _operator);
}
- Directory call(String path) {
- return Directory._(path: path, operator: _operator);
+ /// Creates a factory function for creating Directory objects
+ Function(String) initDir() {
+ return (String path) => Directory._(path: path, operator: _operator);
}
}
diff --git a/bindings/dart/tests/opendal_test.dart
b/bindings/dart/tests/opendal_test.dart
index ee1c57063..693b08af1 100644
--- a/bindings/dart/tests/opendal_test.dart
+++ b/bindings/dart/tests/opendal_test.dart
@@ -5,16 +5,16 @@ void main() {
group('opendal unit test', () {
group('opendal fs schema', () {
test('File and Directory functions in fs schema', () async {
- await RustLib.init();
- final File = FileManager.initOp(schemeStr: "fs", map: {"root":
"/tmp"});
+ final storage = await Storage.init(schemeStr: "fs", map: {"root":
"/tmp"});
+ final File = storage.initFile();
var testFile = File("test_1.txt");
expect(await testFile.exists(), false);
var anotherFile = File("test.txt");
expect(await anotherFile.exists(), false);
- final Directory =
- DirectoryManager.initOp(schemeStr: "fs", map: {"root": "/tmp"});
+ final Directory = storage.initDir();
+
var testDir = Directory("test_dir/");
await testDir.create();
expect(await testDir.exists(), true);
@@ -23,10 +23,9 @@ void main() {
group('opendal memory schema', () {
test('File and Directory functions in memory schema', () async {
- final File =
- FileManager.initOp(schemeStr: "memory", map: {"root": "/tmp"});
- final Directory =
- DirectoryManager.initOp(schemeStr: "memory", map: {"root":
"/tmp"});
+ final storage = await Storage.init(schemeStr: "memory", map: {"root":
"/tmp"});
+ final Directory = storage.initDir();
+
var testDir = Directory("test/");
await testDir.create();
expect(