ARK-Builders / ARK-Builders/ark-core
Implement a Plugin System for App-Specific Resource Kinds and Commands
- Dominant language
- Rust
- Stars
- 10
- Forks
- 6
- PR merge metrics
- No merged PRs in 30d
Description
## Description
Currently, `ark-cli` defines methods and commands to handle links in the ark managed storage folder. We should consider a cleaner and more generic approach to allow applications depending on `ark-rust` to define app-specific resource kinds and related commands, handling them uniformly.
A potential solution is a plugin system. This would enable any app developer to create not only wrappers for each platform but also CLI commands related to the resource kinds they introduce. For example, `.link` is a custom file format defined by us that contains a `Link to Web` resource. It consists only of a URL, but we also define some metadata and possible properties for it, such as domain and title.
Related discussion: https://github.com/ARK-Builders/ark-rust/pull/67#discussion_r1614597497
## Proposed Tasks
- Develop a plugin system to support app-specific resource kinds and commands.
- Test this feature within the `ark-cli link` command.
- Ensure the result is less code in `ark-cli` and a more straightforward approach.
------
This will enhance reusability by allowing easy reuse of app-specific resource kinds and commands, improve maintainability with cleaner and more manageable code, and increase extensibility by enabling developers to define their own resource kinds and commands.
_Note: This proposal is open for discussion, and we do not have a full plan for it yet._
Contributor guide
Research direction
Start by reading the existing resource-handling methods and commands in ark-cli, especially the ark-cli link command, then review the related discussion in PR 67. Define the plugin-system design for app-specific resource kinds and commands, test it through ark-cli link, and verify that the result reduces duplicated code in ark-cli.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100