# 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. Generate-Ide-Env-Example: - Generate environment variables on linux from IDE projects. 4. Versioning: - Injects Git version information into the build, including the latest tag, commit hash, and dirty state (if there are uncommitted changes). 5. 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 ``` ### Generate IDE ENV Example ```bash source <(sylixos-uploader gen-ide-env --workspace ~/sylixos-workspace) ``` ### 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 \: Install the binary to the specified directory. ### Examples #### Build for the local platform ```bash ./build.sh ``` #### Build for all platforms ```bash ./build.sh --all ``` #### Build local platform and Install to a directory ```bash ./build.sh --install-dir /usr/local/bin ``` ## Supported Platforms - Linux: - amd64 - arm64 - Windows: - amd64 - arm64 - macOS: - amd64 - arm64 - SylixOS: - arm64 ## Known Issues 1. Currently, only FTP is supported for uploads. ## Known Behaviors 1. Uploads projects to the specified remote device. 2. On the remote device: - ELF executables or shared objects are set to chmod 0755. - Known executable scripts are set to chmod 0755. 3. Generates a YAML file from the actual SylixOS project. ## Contributing Feel free to submit pull requests or report issues on the project’s repository. Ensure that your code adheres to the project guidelines and includes relevant tests. ## License This project is licensed under the MIT License. See the LICENSE file for details. ## Contact For any issues, questions, or feature requests, reach out to the maintainers via Gitea.