diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..96a3961 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [2024] [chengsiyuan@acoinfo.com] + +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. diff --git a/README b/README new file mode 100644 index 0000000..919a25b --- /dev/null +++ b/README @@ -0,0 +1,137 @@ +# SylixOS Uploader + +SylixOS Uploader is a command-line tool designed for uploading SylixOS projects via CORBA. It simplifies the process of transferring files to remote devices, setting appropriate permissions, and generating configuration YAML files for project uploads. + +## Features + +1. File Uploads: + + - Upload project files to remote devices using FTP. + - Automatically set permissions (chmod 0755) for: + - ELF executables or shared object files. + - Known executable scripts (e.g., .sh, .py, .lua, etc.). + +2. YAML Generation: + + - Generate structured YAML configuration files for SylixOS projects, ensuring easier management and deployment. + +3. Versioning: + + - Injects Git version information into the build, including the latest tag, commit hash, and dirty state (if there are uncommitted changes). + +4. Flexible Build Options: + + - Default: Build only for the local platform. + - Optionally: Cross-compile for multiple platforms (Linux, Windows, macOS, SylixOS). + - Supports installation to a specified directory. + +## Usage + +### Upload Example + +```bash +sylixos-uploader upload --path ~/sylixos-workspace/base-project --device 10.13.16.250 --method ftp +``` + +### Generate YAML Example + +```bash +sylixos-uploader gen-yaml --path ~/sylixos-workspace/base-project +``` + +### YAML File Example + +```yaml +base-settings: + project-name: app_test + project-type: SylixOSAppProject + $(ProjectPath): /home/user/sylixos-workspace/app_test + $(Output): Release +remote-settings: + ipaddr: 10.7.130.102 + work-path: /apps/app_test + protocol: ftp +upload-pair: + - local-path: $(ProjectPath)/$(Output)/strip + remote-path: /usr/bin +``` + +## Building SylixOS Uploader + +### Requirements + +- Golang installed and configured with GOOS=sylixos support. +- Git available in the environment. + +### Build Script + +Use the build.sh script to compile the tool. The script determines the version based on Git tags and the latest commit, providing flexible options. + +### Script Options + +- --all: Build for all supported platforms (Linux, Windows, macOS, SylixOS). +- --install-dir \