文档章节

code-push 交互式命令行脚本

郁也风
 郁也风
发布于 2016/06/25 14:14
字数 377
阅读 341
收藏 0

一直觉得 RN 的升级方式挺酷的(交互式命令行),研究了一下,搞了个 code-push 的交换脚本。

准备工作

npm install inquirer --save-dev npm install shelljs --save-dev npm install chalk --save-dev

当然,code-push 环境必须已经设置好了。

脚本内容

名称: tools/codepush-cli.js

/**
 * code-push 交互式命令行发布工具, 可以根据相应提示进行选择或输入, 更加便利。
 */
/* eslint-disable */
var shell = require("shelljs");
var inquirer = require('inquirer');
var chalk = require("chalk");

console.log(chalk.cyan("  _____        __  " + chalk.green("  ___           __ ")));
console.log(chalk.cyan(" / ___/__  ___/ /__" + chalk.green(" / _ \\__ _____ / / ")));
console.log(chalk.cyan("/ /__/ _ \\/ _  / -_)" + chalk.green(" ___/ // (_-</ _ \\")));
console.log(chalk.cyan("\\___/\\___/\\_,_/\\__/" + chalk.green("_/   \\_,_/___/_//_/")));
console.log(chalk.cyan("======================================"));

console.log(chalk.bold.cyan('\n欢迎使用 code-push 交互式命令行发布工具\n'));

var questions = [{
    type: 'list',
    name: 'platform',
    message: '请选择发布平台',
    choices: ['iOS', 'Android'],
    filter: function (val) {
        return val.toLowerCase();
    }
}, {
    type: 'list',
    name: 'deploymentName',
    message: '请选择发布目标',
    choices: ['Staging', 'Production']
}, {
    type: 'input',
    name: 'targetBinaryVersion',
    message: '请输入 iOS 或 Android 代码当前版本号(格式为: 1.0.0):',
    validate: function (value) {
        var pass = value.match(/^[\d]+\.[\d]+\.[\d]+$/i);
        if (pass) {
            return true;
        }

        return '请输入有效版本号(格式为: 1.0.0)';
    }
}, {
    type: 'input',
    name: 'description',
    message: '请输入更新信息, [\\n]换行',
    default: '修正一些 Bug'
}, {
    type: 'confirm',
    name: 'confirm',
    message: '确定发布?',
    default: false
}];

inquirer.prompt(questions).then(function (answers) {
    console.log();

    if (!answers.confirm) {
        console.log(chalk.bold.red('放弃发布!'));
    } else {
        var cmd = `code-push release-react YOUR_APP_NAME ${answers.platform} --deploymentName ${answers.deploymentName}  --targetBinaryVersion "${answers.targetBinaryVersion}" --description "${answers.description}"`;
        console.log(chalk.cyan('> ' + cmd));
        console.log();

        shell.exec(cmd);
    }

    console.log();
});

效果图

效果1

效果2

最后

可以根据自己的项目需要修改上面的 YOUR_APP_NAME, 当然,也可以很方便扩充命令,例如提供 Mandatory 设置。

还可以在 package.jsonscript 里面配置一行:

"codepush": "node tools/codepush-cli.js"

© 著作权归作者所有

郁也风
粉丝 16
博文 31
码字总数 17009
作品 0
长宁
项目经理
私信 提问
DevExtreme 18.2 发布,响应式 Web 开发 JS 组件

DevExtreme 宣布他们的新半年度发布。DevExtreme 是用于响应式 Web 开发的 HTML5 JavaScript 组件套件,跨平台组件套件包含为触摸设备和传统桌面创建响应式 Web 应用所需的全部内容:数据网格...

DevExtreme
2018/11/09
531
0
第三章:Creating Utilities--24.一个交互式的计算器

之前写了第九个脚本,允许命令行调用bc进行浮点计算,所以现在必然要写一个交互式的,基于命令行的计算器封装脚本。它有一个优点:即使加上帮助信息,也很短。 #!/bin/sh calc.sh -- 一个看起...

十舍七匹狼
2013/01/09
46
0
使用 Impala Shell(翻译)

使用 Impala Shell 你可以使用 Impala shell 工具 (impala-shell) 配置数据库和表、插入数据和执行查询。你可以在交互式会话里提交 SQL 语句进行即席查询和探测(For ad hoc queries and exp...

weiqingbin
2014/01/07
790
0
创建交互式rpm包

所谓交互式的rpm包,就是说在安装过程中接受用户输入,来完成诸如许可证确认、创建配置文件等工作。 首先要说明,不推荐使用rpm创建交互式安装包。rpm的设计目标就是在完全不需要用户干涉的前...

Norman_li
2016/06/03
0
0
IPython 5.2.0 发布,Python 命令行交互

IPython 5.2.0 发布了,IPython 是 Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算;主要使用它提供的交互性帮助,比如代码着色、改进了的命令行...

凝小紫
2017/01/30
730
1

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(五)——接口默认方法

Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod {default void say() {System.out.println("hello...

猿敲月下码
17分钟前
8
0
weed3-2.3.3.查询之缓存控制

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 缓存控制,是查询中的重点 框架提供的是控制服务。而非缓存服务本身...

刘之西东
20分钟前
9
0
Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
今天
33
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
今天
33
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部