# san_cli **Repository Path**: sandaohaizi/san_cli ## Basic Information - **Project Name**: san_cli - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-06 - **Last Updated**: 2024-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # san CLI * [工具库引用](#工具库引用) * [功能列表](#功能列表) * [资源构建](#资源构建) * [Json转Dart类](#json转dart类) * [国际化工具](#国际化工具) * [国际化工具 Web](#国际化工具-web) ## 工具库引用 ```yaml dev_dependencies: san_cli: git: url: git@bitbucket.org:sanbackend/ci_san_cli.git ref: master ``` ## 功能列表 使用命令查看全部功能 ``` dart run san_cli -h ``` ```text Building package executable... Built san_cli:san_cli. san Dart 构建工具 Usage: san_cli [arguments] Global options: -h, --help Print this usage information. Available commands: asset 资源构建 build Flutter产物构建 json Json 转Dart类 ``` ### 资源构建 ```shell dart run san_cli asset [config] ``` 使用`asset`(或`a`)命令构建资源文件。 可添加参数 `--config`(或`-c`)指定自定义配置文件,不指定时使用默认文件 #### 构建规则 ##### 默认配置 默认支持深色模式,并且根据GTThemeProvider匹配深色模式判断。 默认深色模式使用同文件名+'_dark',对应资源文件加 `_dark`后缀。 #### 自定义配置 自定义配置中,可配置对应的深色文件路径,匹配到的配置路径将按照自定义配置输出。 若存在未匹配到的数据,将按照默认文件输出。 ```yaml asset: package: lib/resource # 自动创建包位置 name: resources # 资源引用文件 source: - path: assets/images/ dark: path: assets/images_dark/ enable: true import: "import 'package:lib_uikit/theme/gt_theme_provider.dart';" # 导入深色包名 condition: "GTThemeProvider.instance.isDark()" # 深色判断条件 - path: assets/svg/ dark: enable: true ``` ### Json转Dart类 ```shell dart run san_cli json [config] ``` 使用`json`(或`j`)命令将json文件转model文件。 可添加参数`--config`(或`c`)指定自定义配置文件,不指定时使用默认文件 #### 构建规则 根据配置文件构建json转model。默认文件如下 ```yaml json: resource: lib/json # Json文件目录 package: lib/models # 创建类输出目录 json_key: true # 使用JsonKey注解 camel_case: true # 属性使用驼峰命名 skip_if_exit: false # 文件存在时跳过 safely_convert: false # 使用GTConverter来解析数据类型 keys: # 自定义关键词,自定义关键词类名映射 - list: MyList - map: MyMap ``` 若json中存在某些关键词转为类后冲突,可以自定义关键词映射解决。 例如,json中存在list,map等,转为类时默认为List,Map和系统关键词冲突,可自定义如MyList,MyMap,以替换防止冲突 > 注意:若`json_key`为true,flutter工程需要引用build_runner,json_serializable,json_annotation ### 国际化工具 ```shell dart run san_cli intl [-a] ``` #### analyse命令 `-a` 或 `--analyse` 国际化文件分析 会将其他国际化文件和默认语言文件(当前为`intl_en.arb`),若存在差异将会输出,可通过命令检查翻译是否正常。 可添加参数`--config`(或`c`)指定自定义配置文件,不指定时使用默认文件 #### 配置推荐 ```yaml intl: path: lib/l10n # 国际化目录路径 default_lang: intl_en # 默认语言,用于对比其他文件的参照 ignore_lang: # 忽略的文件 - intl_ko - intl_nl ignore_key: # 忽略的key - strategy_return_0 - strategy_return_10 - strategy_return_50 - strategy_drawdown_0 - strategy_drawdown_20 - strategy_drawdown_40 - strategy_atr_future - copy_aum ``` 输出格式 ``` 文件名 符号[+,-,*] 翻译key : 内容 ``` 符号解释: - `+` 当前语言相对默认语言文件多余的翻译 - `-` 当前语言相对默认语言文件缺少的翻译 - `*` 当前语言未翻译的文案 (和默认语言的key,value相同认为未翻译) > 格式案例: > \+ key_un_remove : 多余的翻译 > \- key_remove : 缺少的翻译 > \* key_trans : 未翻译的小语种 #### translate命令 `-t` 或 `--translate` 国际化文件翻译 简体中文翻译成繁体中文 自动补全繁体中文翻译,若存在翻译则不会覆盖 ```shell dart run san_cli intl -t ``` ### 国际化工具 Web ```shell dart run san_cli intl view ``` #### 功能 - 查看项目中缺少的翻译 - 从项目文件中识别未国际化的文本 - 使用 Gemini 生成国际化文本对应的 Key - 提交翻译文本至 smartling_flutter 并生成摘要 - 从 smartling_flutter 中导入翻译文本