# 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 \