[feature] add gen-ide-env cmd.
This commit is contained in:
parent
fff4825cf5
commit
2b21e934e7
14
README.md
14
README.md
|
@ -15,11 +15,15 @@ SylixOS Uploader is a command-line tool designed for uploading SylixOS projects
|
||||||
|
|
||||||
- Generate structured YAML configuration files for SylixOS projects, ensuring easier management and deployment.
|
- Generate structured YAML configuration files for SylixOS projects, ensuring easier management and deployment.
|
||||||
|
|
||||||
3. Versioning:
|
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).
|
- 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:
|
5. Flexible Build Options:
|
||||||
|
|
||||||
- Default: Build only for the local platform.
|
- Default: Build only for the local platform.
|
||||||
- Optionally: Cross-compile for multiple platforms (Linux, Windows, macOS, SylixOS).
|
- Optionally: Cross-compile for multiple platforms (Linux, Windows, macOS, SylixOS).
|
||||||
|
@ -39,6 +43,12 @@ sylixos-uploader upload --path ~/sylixos-workspace/base-project --device 10.13.1
|
||||||
sylixos-uploader gen-yaml --path ~/sylixos-workspace/base-project
|
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 File Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
67
cmd/gen_ide_env.go
Normal file
67
cmd/gen_ide_env.go
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"sylixos-uploader/detector"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
var genIdeEnvCmd = &cobra.Command{
|
||||||
|
Use: "gen-ide-env",
|
||||||
|
Short: "usage: source <(sylixos-uploader gen-ide-env --workspace <path>)",
|
||||||
|
Long: `usage: source <(sylixos-uploader gen-ide-env --workspace <path>)
|
||||||
|
|
||||||
|
Generate environment variables from IDE projects.`,
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
// 遍历根目录下的第一级子目录
|
||||||
|
if WorkSpacePath == "" {
|
||||||
|
WorkSpacePath = "."
|
||||||
|
}
|
||||||
|
|
||||||
|
err := filepath.Walk(WorkSpacePath, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只处理第一级子目录
|
||||||
|
if info.IsDir() && path != WorkSpacePath {
|
||||||
|
relativePath, err := filepath.Rel(WorkSpacePath, path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 替换路径中的特殊字符,确保变量名合法
|
||||||
|
envVarNameOrgin := strings.ReplaceAll(relativePath, string(os.PathSeparator), "_")
|
||||||
|
envVarName := strings.ReplaceAll(envVarNameOrgin, "-", "_")
|
||||||
|
|
||||||
|
s := detector.NewSylixOSPrj(path)
|
||||||
|
if s.IsSylixOSPrj() {
|
||||||
|
// 输出结果
|
||||||
|
fmt.Printf("export WORKSPACE_%s=%s\n", envVarName, path)
|
||||||
|
if strings.Contains(relativePath, "-") {
|
||||||
|
fmt.Printf("echo \"you have to change \\$(WORKSPACE_%s) to \\$(WORKSPACE_%s) in all config.mk\"\n", envVarNameOrgin, envVarName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 阻止深入子目录
|
||||||
|
return filepath.SkipDir
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error: %v\n", err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
RootCmd.AddCommand(genIdeEnvCmd)
|
||||||
|
|
||||||
|
// Adding flags with long names
|
||||||
|
genIdeEnvCmd.Flags().StringVar(&WorkSpacePath, "workspace", "", "Workspace path")
|
||||||
|
}
|
|
@ -28,6 +28,7 @@ Konwn-Behavior:
|
||||||
2. On Remote device, ELF executable or shared object file will be chmod to 0755.
|
2. On Remote device, ELF executable or shared object file will be chmod to 0755.
|
||||||
3. On Remote device, konwn executable script (e.g. .sh, .py, .lua, etc) will be chmod to 0755.
|
3. On Remote device, konwn executable script (e.g. .sh, .py, .lua, etc) will be chmod to 0755.
|
||||||
4. Generate upload yaml file from real evo project.
|
4. Generate upload yaml file from real evo project.
|
||||||
|
5. Generate environment variables on linux from IDE projects.
|
||||||
|
|
||||||
Upload-Example:
|
Upload-Example:
|
||||||
sylixos-uploader upload --path ~/sylixos-workspace/base-project --device 10.13.16.250 --method ftp
|
sylixos-uploader upload --path ~/sylixos-workspace/base-project --device 10.13.16.250 --method ftp
|
||||||
|
@ -35,6 +36,9 @@ Upload-Example:
|
||||||
Generate-Yaml-Example:
|
Generate-Yaml-Example:
|
||||||
sylixos-uploader gen-yaml --path ~/sylixos-workspace/base-project
|
sylixos-uploader gen-yaml --path ~/sylixos-workspace/base-project
|
||||||
|
|
||||||
|
Generate-Ide-Env-Example:
|
||||||
|
source <(sylixos-uploader gen-ide-env --workspace ~/sylixos-workspace)
|
||||||
|
|
||||||
Yaml-file-Demo:
|
Yaml-file-Demo:
|
||||||
"
|
"
|
||||||
base-settings:
|
base-settings:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user