使用 Gitlab Alfred workflow 浏览 Gitlab

V2ex 上的这个帖子里 – 撸了一个 Alfred Gitlab Workflow,浏览 Gitlab 的问题上,为生命省 3s 发现了一个新的 gitlab alfred workflow,试用了一下感觉不错,mark 下。

下载

Alfred Gitlab Tool Release

配置

设置 api url

glurl ${GITLAB_BASE_URL}/api/v4

设置 token

token 在 gitlab 的 Settings –> Access Tokens 里生成或查找,参考 URL: ${GITLAB_BASE_URL/profile/personal_access_tokens}

gltoken ${YOUR_TOKEN}

问题

如果重新设置了 glurl,即使 token 相同,也要重新使用 gltoken 再设置一下

Steward 进阶之 plugin 开发

从 V3.5.1 以后,Steward 开放了 api,并提供了 plugin 编辑器。

插件开发说明

数据结构

  • steward 对象

代码包裹在 module.exports = function(steward) {} 中,steward 为注入的 api

1
2
3
4
5
6
7
8
9
10
11
{
mode, // steward application mode: 'newTab' | 'popup' | 'content'
config, // user config
data, // steward data: { page: Object }
chrome, // chrome api
util, // 工具 api
dayjs, // 日期库
$, // jquery
axios, // http 库
constant // 常量
}
  • plugin 组成结构
1
2
3
4
5
6
7
8
9
10
11
{
author, // 开发者 id,比如邮箱或 github 账号
version, // 版本号
name, // 插件名,与 author 一起组成唯一识别 id(uid)
category: 'other', // 插件类别,填 ‘other’ 就好,暂时没用
icon, // 插件 icon
title, // 插件标题
commands, // 插件命令列表,不能为空
onInput, // 核心 api, 输入事件函数
onEnter // 核心 api,选中事件函数
}
  • command 数据结构
1
2
3
4
5
6
7
8
9
{
// command
key, // { String } command 的 trigger
type, // { String } command 的类型,枚举值,包含['always', 'regexp', 'keyword', 'other', 'search']
// 对应不同的查询类型及阶段,通常填 `keyword` 就好
title, // { String } command 的标题
subtitle, // { String } command 的副标题/描述
icon // { String } command 的图标 url
}
  • 查询结果 item 数据结构
1
2
3
4
5
6
7
8
9
10
11
12
13
{
// item
key, // { String} 条目类型`CONSTANT.BASE.ITEM_TYPE`,枚举值有['plugins', 'url', 'copy', 'action', 'app']
// 为 plugins 时,将 item.id 作为新的命令应用
// 为 url 时,在新标签页打开 item.url
// 为 copy 时,将 item.title 拷贝到剪贴板
// 为 action 时,emit 'action' 事件,通常由页面模式的 website 接收处理,此处文档待完善
// 为 app 时,emit ''app:handle' 事件,比如 'Backup' 备份
universal, // { Boolean } 是否为通用条目,为 true 时,onEnter 将由 Steward 根据item.key 值处理
icon, // { String } 条目图标 url,通常与 plugin / commands 图标相同
title, // { String } 条目标题
desc // { String } 条目副标题/描述
}

函数方法

plugin

  • onInput

核心 api,用户输入 trigger + space 后触发

1
2
3
4
5
6
7
8
/**
* @param { String } query 用户输入的字符串,比如输入框中为 `ip 192.168.1.1`,那么 `query` 就是 `192.168.1.1`
* @param { Object } command 用户当前触发的命令,由于 plugin 支持多 commands,因此可用此参数来具体识别
* @return { Promise[Array] | Array } 查询结果,支持 Promise 以及普通 Array 数组
*/
function onInput(query, command) {
return Promise.resolve([Array[Item]]);
}
  • onEnter

核心 api,用户按 Enter/Return 键或点击某条查询结果时调用

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* @param { Object } item 选中的查询结果条目
* @param { Object } command 当前触发的命令
* @param { String } query 当前的查询字符串
* @param { Boolean } shiftKey 用户是否同时按下 shift 键
* @param { Array } list 全部的查询结果
* @return { Promise[String | Boolean]}
* Promise[String] 作为新的命令被应用到输入框中
* Promise[Boolean] 只对页面模式有效,在Boolean 为 false 时,Steward 弹框将延迟关闭
*/
function onEnter(item, command, query, shiftKey, list) {
return Promise.resolve([String | Boolean]);
}

steward.util

  • getDefaultResult
1
2
3
4
5
6
7
/**
* 根据 command 生成默认查询结果
* @param { Object } command 在 plugin 里定义的 command
* @return { Array[Item] } 包含一条对 onEnter 透明的默认查询结果
*/
function getDefaultResult(command) {
}
  • getEmptyResult

    1
    2
    3
    4
    5
    6
    7
    8
    /**
    * 根据 command 生成默认空查询结果
    * @param { Object } command 在 plugin 里定义的 command
    * @param { String | Optional } msg 空查询提示
    * @return { Array[Item] } 包含一条对 onEnter 透明的默认空查询结果
    */
    function getEmptyResult(command, msg) {
    }
  • copyToClipboard

1
2
3
4
5
6
7
8
/**
* 将 text 拷贝到剪贴板
* @param { String } text 将要拷贝的文本
* @param { Boolean } showMsg 是否弹出提示
* @return
*/
function copyToClipboard(text, showMsg) {
}
  • getParameterByName
1
2
3
4
5
6
7
/**
* @param { String } name param name
* @param { String } search 默认为 window.location.search
* @return { String }
*/
function getParameterByName(name, search = window.location.search) {
}

steward.axios – http库

https://github.com/axios/axios

steward.$ – jquery

steward.dayjs – 日期库

https://github.com/iamkun/dayjs

steward.constant – steward 内置常量

具体可以自行 console.log 查看

图示

示例

https://github.com/Steward-launcher/steward-plugins/tree/master/plugins

浏览器启动器 Steward 攻略之属于你自己的新标签页

作为浏览器用户,你也许对启动器不太了解,但相信你对新标签页扩展并不陌生,如 Speed Dial 2MomentumInfinity 等热门扩展,让你可以在新标签页快速记录、查看天气、更换壁纸、打开常用网址等等。

为了让更多人更好地体验到启动器的强大,我为 Steward 加上了新标签页模式,使之立刻就拥有新标签页扩展的常用功能,甚至更多,同时还兼具其它扩展没有的强大自定义以及启动器快捷高效的操作方式。

Steward 免费开源,你可以选择需要的版本下载:

More...

Steward 攻略之扩展管理篇

Steward 作为一个浏览器启动器,你可以通过输入某些命令,就能完成扩展、书签、标签页管理等大部分浏览器操作。

而开发 Steward 的初衷其实是为了方便禁用、启用扩展,当然对扩展的管理不只这二种,这篇攻略将为大家详细介绍一下。

Steward 是开源项目,代码托管在 Github 上,从 Chrome应用商店 安装,或 离线下载,官网是oksteward.com,论坛是bbs.oksteward.com

More...

Chrome 命令启动器 Steward 的进阶用法:Workflow 批量操作

此 Workflow 非大家熟知的 iOS 自动化工具,而是 Chrome 效率插件 Steward 里的一个进阶功能,可以用一条简单的命令代替原先繁琐、重复的操作,节省大量时间,同时还能拯救鼠标。

之前的文章里,我介绍了 Steward 的三种模式,而有了 Workflow,Steward 的使用就更简单了。

Steward 是开源项目,代码托管在 Github 上,从 Chrome应用商店 安装,或 离线下载,官网是oksteward.com

Steward 的 Workflow 是什么

开发 Workflow 功能的动力就来自我自己的生活。每天我都会打开相对固定的几个网页浏览资讯,而作为一个 Chrome 用户,我还安装了许多插件,根据不同使用场景频繁禁用、启用。按传统的方式,这些操作总是免不得每次都得用鼠标点击多次或者按多个快捷键,操作一多,感觉手累还容易有所遗忘。

之前我就做了一个 Chrome 效率插件 Steward,在觉察到频繁操作的痛点后,我重构了程序的主流程,使之能一次执行多条命令,并给出相应的提示,Workflow 功能就这样诞生了。

Workflow 能做什么

在讲解 Workflow 怎么用之前,先通过几个很常见的场景来告诉大家 Workflow 能做什么,具体命令请看文章末尾的附录部分。

More...

Steward -- 一款 Chrome 上的类 Alfred / Wox 启动器,键盘党的效率神器

说到启动器,最有名的当属 Mac 上的神器 Alfred ,以及 Windows 上的 Wox。那什么是启动器呢,它是由一个命令输入框,以及一个查询结果下拉列表组成。只需要一个命令就能让电脑去完成一系列操作,如同你的管家一样,自然是很多人心目中的神器。

比如我输入 Chrome 然后回车,启动器会自动帮我找到 Chrome 并打开它;又如遇到命令 yd steward 后,启动器立刻去查询有道词典然后把 管家 的释义列出来。

而 Steward 便是 Chrome 浏览器里的类 Alfred 启动器,在某些方面甚至是 Alfred Plus。

More...