upd: makefile, readme, and license updated
This commit is contained in:
parent
7ad4e6d6b6
commit
8992f5f19d
16
.gitignore
vendored
16
.gitignore
vendored
@ -0,0 +1,16 @@
|
||||
# Software
|
||||
.obrimbasecli
|
||||
|
||||
# Environment
|
||||
.env
|
||||
.env/
|
||||
|
||||
# Temporary
|
||||
.tmp
|
||||
*.tmp
|
||||
.tmp/
|
||||
|
||||
# Backup
|
||||
.bkp
|
||||
*.bkp
|
||||
.bkp/
|
||||
@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Startupore
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
282
Makefile
282
Makefile
@ -0,0 +1,282 @@
|
||||
# =========================================================
|
||||
# Variable
|
||||
# =========================================================
|
||||
|
||||
# Framework
|
||||
# Identity and metadata of framework. Human-readable name, machine-readable names(lower and upper), and semantic version.
|
||||
FRAMEWORK_REGULAR=Framework Regular
|
||||
FRAMEWORK_LOWER=frameworklower
|
||||
FRAMEWORK_UPPER=FRAMEWORKUPPER
|
||||
FRAMEWORK_VERSION=0.0.0
|
||||
|
||||
# Software
|
||||
# Identity and metadata of software. Human-readable name, machine-readable names(lower and upper), and semantic version.
|
||||
SOFTWARE_REGULAR=Software Regular
|
||||
SOFTWARE_LOWER=softwarelower
|
||||
SOFTWARE_UPPER=SOFTWAREUPPER
|
||||
SOFTWARE_VERSION=0.0.0
|
||||
|
||||
# Go Module
|
||||
# App module and import path used by go.mod and source imports. Valid Go module path.
|
||||
GO_MODULE=go/module
|
||||
|
||||
# Directory
|
||||
# Locations used by build and management commands. Relative or absolute paths.
|
||||
SOURCE_DIR=./run/main
|
||||
RELEASE_DIR=./release
|
||||
FRAMEWORK_METADATA_DIR=./data/framework/metadata
|
||||
SOFTWARE_METADATA_DIR=./data/software/metadata
|
||||
|
||||
# File
|
||||
# Metadata file names without extension. File name only.
|
||||
FRAMEWORK_METADATA_FLE=resource
|
||||
SOFTWARE_METADATA_FLE=resource
|
||||
|
||||
# Derived Path
|
||||
# Automatically generated from directory and file variables. Do not edit.
|
||||
FRAMEWORK_METADATA_PATH=$(FRAMEWORK_METADATA_DIR)/$(FRAMEWORK_METADATA_FLE)
|
||||
SOFTWARE_METADATA_PATH=$(SOFTWARE_METADATA_DIR)/$(SOFTWARE_METADATA_FLE)
|
||||
|
||||
# Target File Type
|
||||
# File types scanned by update commands. Valid find expression.
|
||||
TARGET_FILE_TYPE=\
|
||||
-name "*.go" \
|
||||
-o -name "*.json" \
|
||||
-o -name "*.yaml" \
|
||||
-o -name "*.yml"
|
||||
|
||||
# Go Module Placeholder
|
||||
# Replacement rules applied by upd-go-mod. Valid sed replacement expressions.
|
||||
GO_MODULE_REPLACEMENT=\
|
||||
-e 's|gomodule|$(GO_MODULE)|g' \
|
||||
-e 's|go/module|$(GO_MODULE)|g' \
|
||||
-e 's|go-module|$(GO_MODULE)|g' \
|
||||
-e 's|go_module|$(GO_MODULE)|g'
|
||||
|
||||
# =========================================================
|
||||
# Command
|
||||
# =========================================================
|
||||
|
||||
# PHONY Target
|
||||
.PHONY: \
|
||||
help \
|
||||
go-ini \
|
||||
upd-go-mod \
|
||||
upd-fw-imd \
|
||||
upd-sw-imd \
|
||||
go-tid \
|
||||
go-stp \
|
||||
pre-rel \
|
||||
go-bld \
|
||||
go-bld-lin \
|
||||
go-bld-win \
|
||||
go-bld-mac \
|
||||
bld-lin-amd \
|
||||
bld-lin-arm \
|
||||
bld-win-amd \
|
||||
bld-win-arm \
|
||||
bld-mac-amd \
|
||||
bld-mac-arm
|
||||
|
||||
# Default Command
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# =========================================================
|
||||
# Help
|
||||
# =========================================================
|
||||
|
||||
help:
|
||||
@echo ""
|
||||
@echo "Available Command:"
|
||||
@echo ""
|
||||
@echo " make go-stp Initialize Go module and tidy dependencies"
|
||||
@echo ""
|
||||
@echo " make upd-go-mod Update Go module placeholders"
|
||||
@echo " make upd-fw-imd Update framework metadata"
|
||||
@echo " make upd-sw-imd Update software metadata"
|
||||
@echo ""
|
||||
@echo " make go-bld Build all platform binaries"
|
||||
@echo " make go-bld-lin Build all Linux binaries"
|
||||
@echo " make go-bld-win Build all Windows binaries"
|
||||
@echo " make go-bld-mac Build all macOS binaries"
|
||||
@echo ""
|
||||
@echo " make bld-lin-amd Build Linux AMD64 binary"
|
||||
@echo " make bld-lin-arm Build Linux ARM64 binary"
|
||||
@echo ""
|
||||
@echo " make bld-win-amd Build Windows AMD64 binary"
|
||||
@echo " make bld-win-arm Build Windows ARM64 binary"
|
||||
@echo ""
|
||||
@echo " make bld-mac-amd Build macOS AMD64 binary"
|
||||
@echo " make bld-mac-arm Build macOS ARM64 binary"
|
||||
@echo ""
|
||||
|
||||
# =========================================================
|
||||
# Initialize
|
||||
# =========================================================
|
||||
|
||||
go-ini:
|
||||
@test -f go.mod || go mod init $(GO_MODULE)
|
||||
|
||||
go-tid:
|
||||
go mod tidy
|
||||
|
||||
go-stp: \
|
||||
go-ini \
|
||||
go-tid
|
||||
|
||||
# =========================================================
|
||||
# Update
|
||||
# =========================================================
|
||||
|
||||
upd-go-mod:
|
||||
|
||||
@find . -type f \
|
||||
\( $(TARGET_FILE_TYPE) \) \
|
||||
-exec sed -i \
|
||||
$(GO_MODULE_REPLACEMENT) \
|
||||
{} +
|
||||
|
||||
@if [ -f go.mod ]; then \
|
||||
sed -i \
|
||||
$(GO_MODULE_REPLACEMENT) \
|
||||
go.mod; \
|
||||
fi
|
||||
|
||||
@go mod tidy
|
||||
|
||||
@echo "Go Module Updated!"
|
||||
|
||||
upd-fw-imd:
|
||||
|
||||
@jq \
|
||||
--arg framework_regular "$(FRAMEWORK_REGULAR)" \
|
||||
--arg framework_lower "$(FRAMEWORK_LOWER)" \
|
||||
--arg framework_upper "$(FRAMEWORK_UPPER)" \
|
||||
--arg framework_version "$(FRAMEWORK_VERSION)" \
|
||||
'.framework.regular=$$framework_regular|.framework.lower=$$framework_lower|.framework.upper=$$framework_upper|.framework.version=$$framework_version' \
|
||||
$(FRAMEWORK_METADATA_PATH).json \
|
||||
> $(FRAMEWORK_METADATA_PATH).json.tmp
|
||||
|
||||
@mv $(FRAMEWORK_METADATA_PATH).json.tmp $(FRAMEWORK_METADATA_PATH).json
|
||||
|
||||
@echo "Framework Metadata Updated!"
|
||||
|
||||
upd-sw-imd:
|
||||
|
||||
@jq \
|
||||
--arg software_regular "$(SOFTWARE_REGULAR)" \
|
||||
--arg software_lower "$(SOFTWARE_LOWER)" \
|
||||
--arg software_upper "$(SOFTWARE_UPPER)" \
|
||||
--arg software_version "$(SOFTWARE_VERSION)" \
|
||||
'.software.regular=$$software_regular|.software.lower=$$software_lower|.software.upper=$$software_upper|.software.version=$$software_version' \
|
||||
$(SOFTWARE_METADATA_PATH).json \
|
||||
> $(SOFTWARE_METADATA_PATH).json.tmp
|
||||
|
||||
@mv $(SOFTWARE_METADATA_PATH).json.tmp $(SOFTWARE_METADATA_PATH).json
|
||||
|
||||
@echo "Software Metadata Updated!"
|
||||
|
||||
# =========================================================
|
||||
# Release
|
||||
# =========================================================
|
||||
|
||||
pre-rel:
|
||||
@test -n "$(RELEASE_DIR)"
|
||||
@mkdir -p "$(RELEASE_DIR)"
|
||||
@find "$(RELEASE_DIR)" -mindepth 1 -delete
|
||||
|
||||
# =========================================================
|
||||
# Build Group
|
||||
# =========================================================
|
||||
|
||||
go-bld: \
|
||||
pre-rel \
|
||||
go-tid \
|
||||
bld-lin-amd \
|
||||
bld-lin-arm \
|
||||
bld-win-amd \
|
||||
bld-win-arm \
|
||||
bld-mac-amd \
|
||||
bld-mac-arm
|
||||
|
||||
go-bld-lin: \
|
||||
pre-rel \
|
||||
go-tid \
|
||||
bld-lin-amd \
|
||||
bld-lin-arm
|
||||
|
||||
go-bld-win: \
|
||||
pre-rel \
|
||||
go-tid \
|
||||
bld-win-amd \
|
||||
bld-win-arm
|
||||
|
||||
go-bld-mac: \
|
||||
pre-rel \
|
||||
go-tid \
|
||||
bld-mac-amd \
|
||||
bld-mac-arm
|
||||
|
||||
# =========================================================
|
||||
# Build Target
|
||||
# =========================================================
|
||||
|
||||
# Linux AMD64
|
||||
bld-lin-amd:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-linux-amd64 \
|
||||
$(SOURCE_DIR)
|
||||
|
||||
# Linux ARM64
|
||||
bld-lin-arm:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-linux-arm64 \
|
||||
$(SOURCE_DIR)
|
||||
|
||||
# Windows AMD64
|
||||
bld-win-amd:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-windows-amd64.exe \
|
||||
$(SOURCE_DIR)
|
||||
|
||||
# Windows ARM64
|
||||
bld-win-arm:
|
||||
CGO_ENABLED=0 GOOS=windows GOARCH=arm64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-windows-arm64.exe \
|
||||
$(SOURCE_DIR)
|
||||
|
||||
# macOS AMD64
|
||||
bld-mac-amd:
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-macos-amd64 \
|
||||
$(SOURCE_DIR)
|
||||
|
||||
# macOS ARM64
|
||||
bld-mac-arm:
|
||||
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 \
|
||||
go build \
|
||||
-trimpath \
|
||||
-buildvcs=false \
|
||||
-ldflags="-s -w" \
|
||||
-o $(RELEASE_DIR)/$(SOFTWARE_LOWER)-v$(SOFTWARE_VERSION)-macos-arm64 \
|
||||
$(SOURCE_DIR)
|
||||
434
README.md
434
README.md
@ -0,0 +1,434 @@
|
||||
# CLI Framework
|
||||
|
||||
## Description
|
||||
|
||||
CLI Framework is a layered command-line software framework designed to provide a structured foundation for building maintainable, extensible, and scalable terminal softwares.
|
||||
|
||||
The framework separates framework capabilities, software capabilities, resource management, and runtime execution into clearly defined architectural layers. It provides standardized interaction processing, reusable utility services, runtime orchestration, and controlled extension points for software developers.
|
||||
|
||||
The framework supports multiple interaction styles including:
|
||||
|
||||
- Interactive workflows
|
||||
- Imperative command execution
|
||||
- Directive-driven execution
|
||||
- Request routing and dispatching
|
||||
|
||||
Built-in integrations with external terminal software libraries are isolated behind framework-managed interfaces, allowing softwares to benefit from third-party tooling without becoming tightly coupled to vendor implementations.
|
||||
|
||||
The architecture is organized into four primary layers:
|
||||
|
||||
- **Data** — Framework and software resources.
|
||||
- **Essential** — Reusable framework capabilities and infrastructure.
|
||||
- **Operational** — Software-specific business capabilities.
|
||||
- **Run** — Runtime initialization, routing, and execution.
|
||||
|
||||
This separation enables developers to focus on software behavior while relying on a consistent framework foundation for interaction processing, utility services, resource management, and runtime coordination.
|
||||
|
||||
---
|
||||
|
||||
## Purpose
|
||||
|
||||
CLI Framework exists to provide a consistent, maintainable, and extensible architecture for building command-line softwares while establishing clear boundaries between framework responsibilities and software responsibilities.
|
||||
|
||||
### Objectives
|
||||
|
||||
- Establish clear separation of concerns.
|
||||
- Standardize command-line interaction processing.
|
||||
- Distinguish framework-owned and software-owned resources.
|
||||
- Provide reusable infrastructure and utility capabilities.
|
||||
- Simplify software development through a structured architecture.
|
||||
- Improve maintainability and scalability.
|
||||
- Enable controlled software extensibility.
|
||||
- Protect internal framework implementation details.
|
||||
- Reduce coupling to third-party dependencies.
|
||||
|
||||
### Design Principles
|
||||
|
||||
#### Layered Architecture
|
||||
|
||||
Each architectural layer is responsible for a specific concern and communicates through clearly defined boundaries.
|
||||
|
||||
#### Ownership Separation
|
||||
|
||||
Framework-owned capabilities remain separate from software-owned capabilities to prevent implementation leakage and architectural drift.
|
||||
|
||||
#### Extensibility
|
||||
|
||||
Softwares extend the framework through approved extension surfaces without modifying framework internals.
|
||||
|
||||
#### Reusability
|
||||
|
||||
Common functionality is implemented once and reused throughout both framework and software layers.
|
||||
|
||||
#### Encapsulation
|
||||
|
||||
Internal framework implementation details remain hidden behind stable interfaces.
|
||||
|
||||
#### Consistency
|
||||
|
||||
Interaction processing, execution patterns, and resource management follow standardized conventions throughout the framework.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
### High-Level Structure
|
||||
|
||||
```text
|
||||
source
|
||||
├── data
|
||||
├── essential
|
||||
├── operational
|
||||
└── run
|
||||
```
|
||||
|
||||
The architecture is organized into four primary layers that collectively provide resource management, reusable framework capabilities, software capabilities, and runtime execution.
|
||||
|
||||
---
|
||||
|
||||
### Data Layer
|
||||
|
||||
The Data Layer stores all framework-owned and software-owned resources.
|
||||
|
||||
```text
|
||||
source/data
|
||||
├── framework
|
||||
│ ├── metadata
|
||||
│ └── glossary
|
||||
└── software
|
||||
├── metadata
|
||||
└── glossary
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Store framework metadata and configuration resources.
|
||||
- Store framework glossary and terminology resources.
|
||||
- Store software metadata and configuration resources.
|
||||
- Store software glossary and terminology resources.
|
||||
- Provide centralized resource ownership boundaries.
|
||||
|
||||
#### Ownership
|
||||
|
||||
| Area | Owner |
|
||||
|--------|--------|
|
||||
| data/framework | Framework |
|
||||
| data/software | Software |
|
||||
|
||||
---
|
||||
|
||||
### Essential Layer
|
||||
|
||||
The Essential Layer contains reusable framework capabilities, infrastructure services, integrations, and shared functionality.
|
||||
|
||||
```text
|
||||
source/essential
|
||||
├── exchange
|
||||
├── hidden
|
||||
└── visible
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Essential Exchange
|
||||
|
||||
Provides the framework interaction model.
|
||||
|
||||
```text
|
||||
exchange
|
||||
├── router
|
||||
├── interactive
|
||||
├── imperative
|
||||
└── directive
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Request routing.
|
||||
- Interactive workflow processing.
|
||||
- Imperative command execution.
|
||||
- Directive execution.
|
||||
- Framework-level interaction orchestration.
|
||||
|
||||
---
|
||||
|
||||
### Essential Hidden
|
||||
|
||||
Contains internal framework capabilities that are not intended for software consumption.
|
||||
|
||||
```text
|
||||
hidden
|
||||
└── service
|
||||
├── management
|
||||
└── bridge
|
||||
```
|
||||
|
||||
#### Management
|
||||
|
||||
Framework lifecycle and maintenance capabilities.
|
||||
|
||||
```text
|
||||
management
|
||||
├── install
|
||||
├── support
|
||||
└── uninstall
|
||||
```
|
||||
|
||||
Responsibilities:
|
||||
|
||||
- Framework installation.
|
||||
- Framework maintenance.
|
||||
- Framework support operations.
|
||||
- Framework removal.
|
||||
|
||||
#### Bridge
|
||||
|
||||
Third-party integration isolation layer.
|
||||
|
||||
```text
|
||||
bridge
|
||||
├── cobra
|
||||
├── bubbletea
|
||||
└── lipgloss
|
||||
```
|
||||
|
||||
Responsibilities:
|
||||
|
||||
- Encapsulate external dependencies.
|
||||
- Provide framework-controlled integration interfaces.
|
||||
- Prevent direct software dependency on vendor implementations.
|
||||
|
||||
---
|
||||
|
||||
### Essential Visible
|
||||
|
||||
Contains reusable framework capabilities available to softwares.
|
||||
|
||||
```text
|
||||
visible
|
||||
└── service
|
||||
└── helper
|
||||
```
|
||||
|
||||
Available helper capabilities include:
|
||||
|
||||
```text
|
||||
retriever
|
||||
status
|
||||
log
|
||||
progress
|
||||
filesystem
|
||||
datetime
|
||||
marker
|
||||
key
|
||||
hash
|
||||
cipher
|
||||
codec
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Resource retrieval.
|
||||
- Status reporting.
|
||||
- Structured logging.
|
||||
- Progress tracking.
|
||||
- Filesystem operations.
|
||||
- Date and time utilities.
|
||||
- Identifier generation.
|
||||
- Key generation.
|
||||
- Hash calculation and comparison.
|
||||
- Encryption and decryption.
|
||||
- Encoding and decoding.
|
||||
|
||||
---
|
||||
|
||||
### Operational Layer
|
||||
|
||||
The Operational Layer contains all software-specific behavior and business capabilities.
|
||||
|
||||
```text
|
||||
source/operational
|
||||
├── exchange
|
||||
└── service
|
||||
```
|
||||
|
||||
This is the primary software development area.
|
||||
|
||||
---
|
||||
|
||||
### Operational Exchange
|
||||
|
||||
Provides the software interaction model.
|
||||
|
||||
```text
|
||||
exchange
|
||||
├── router
|
||||
├── interactive
|
||||
├── imperative
|
||||
└── directive
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Software request routing.
|
||||
- Interactive workflow execution.
|
||||
- Imperative command execution.
|
||||
- Directive execution.
|
||||
- Software-level interaction processing.
|
||||
|
||||
---
|
||||
|
||||
### Operational Service
|
||||
|
||||
Contains software-specific business capabilities.
|
||||
|
||||
```text
|
||||
service
|
||||
└── [service]
|
||||
└── [feature]
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
service
|
||||
├── project
|
||||
│ ├── create
|
||||
│ └── delete
|
||||
├── customer
|
||||
│ └── register
|
||||
└── invoice
|
||||
└── generate
|
||||
```
|
||||
|
||||
Feature structure:
|
||||
|
||||
```text
|
||||
service
|
||||
└── project
|
||||
└── create
|
||||
├── function.go
|
||||
└── function-data.json
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Implement business rules.
|
||||
- Manage software workflows.
|
||||
- Execute domain-specific operations.
|
||||
- Consume reusable framework capabilities.
|
||||
|
||||
---
|
||||
|
||||
### Runtime Layer
|
||||
|
||||
The Runtime Layer initializes and coordinates framework and software execution.
|
||||
|
||||
```text
|
||||
source/run
|
||||
├── exchange
|
||||
└── main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Runtime Exchange
|
||||
|
||||
Receives incoming requests and dispatches execution.
|
||||
|
||||
```text
|
||||
exchange
|
||||
├── router
|
||||
├── interactive
|
||||
├── imperative
|
||||
└── directive
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Runtime request processing.
|
||||
- Command dispatching.
|
||||
- Interactive execution routing.
|
||||
- Directive execution routing.
|
||||
- Execution coordination.
|
||||
|
||||
---
|
||||
|
||||
### Runtime Main
|
||||
|
||||
Software bootstrap and startup.
|
||||
|
||||
```text
|
||||
main
|
||||
└── main.go
|
||||
```
|
||||
|
||||
#### Responsibilities
|
||||
|
||||
- Framework initialization.
|
||||
- Software initialization.
|
||||
- Runtime startup.
|
||||
- Lifecycle coordination.
|
||||
- Execution entry point.
|
||||
|
||||
---
|
||||
|
||||
### Interaction Flow
|
||||
|
||||
The framework follows a layered execution model.
|
||||
|
||||
```text
|
||||
User Input
|
||||
│
|
||||
▼
|
||||
Runtime Exchange
|
||||
│
|
||||
▼
|
||||
Software Exchange
|
||||
│
|
||||
▼
|
||||
Software Service
|
||||
│
|
||||
▼
|
||||
Framework Services
|
||||
│
|
||||
▼
|
||||
Resource Layer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Ownership Model
|
||||
|
||||
| Layer | Owner | Responsibility |
|
||||
|---------|---------|---------|
|
||||
| data/framework | Framework | Framework resources |
|
||||
| data/software | Software | Software resources |
|
||||
| essential | Framework | Reusable framework capabilities |
|
||||
| operational | Software | Business capabilities |
|
||||
| run | Framework | Runtime execution and orchestration |
|
||||
|
||||
---
|
||||
|
||||
### Extension Surface
|
||||
|
||||
Softwares are expected to extend the framework through the following locations:
|
||||
|
||||
```text
|
||||
source/data/software
|
||||
source/operational
|
||||
```
|
||||
|
||||
Softwares should consume reusable framework capabilities from:
|
||||
|
||||
```text
|
||||
source/essential/visible
|
||||
```
|
||||
|
||||
Softwares should not directly depend on:
|
||||
|
||||
```text
|
||||
source/essential/hidden
|
||||
```
|
||||
|
||||
as these components are considered internal framework implementation details and may change without notice.
|
||||
Loading…
Reference in New Issue
Block a user