使用Alfred在浏览器中打开GitHub存储库

2020-11-09 00:51:00

我每天做的一件事就是浏览我公司的GitHub组织存储库。我在浏览器中打开这些存储库的过程如下:

此流程对于我作为书签使用的存储库或我最近浏览过的…存储库都很有效。…。但是因为我对Alfred非常着迷,所以今天我浪费了将近一个小时将这个过程转移到Alfred的工作流程中。

我不能在每次调用Alfred工作流时发出API请求来过滤存储库。

因此,我决定1)将整个存储库列表下载到一个JSON文件中,2)将其转换为Alred兼容的格式,3)使用Alfred的模糊搜索助手来过滤结果。

TIL:选择所有“repo”子作用域与选择整个作用域不同-这是使用API令牌获取所有私有存储库列表所必需的。

GitHub API分页限制为每页200个项目。我需要获取200多个存储库,所以我修改了这个很酷(但已过时)的bash脚本,以便在一个命令中获取所有存储库,并将它们打印到控制台:

#!/bin/bash if[${#@}-lt2];则";用法:$0[您的GitHub凭据为';用户:令牌';][REST表达式]";1;fi GitHub_Credentials=$1 GitHub_API_REST=$2 GitHub_API_Header_Accept=";Accept:Application/vnd.gib.v3+json";Temp=`basename$0`TMPFILE=`mktemp/tmp/${temp}.XXXXXX`|1函数{curl-s-u$GitHub_Credentials$1-H";${GitHub_API_HEADER_ACCEPT}";>;>;$TMPFILE}#单页结果-s(无分页),没有链接:节,grep结果为空last_。Https://api.github.com${GITHUB_API_REST}?PER_PAGE=200";-H";${GITHUB_API_HEADER_ACCEPT}";|grep&39;^链接:';|sed-e';s/^链接:.*PAGE=//g&39;-e';s/>;.*$//g';`#此结果是否使用分页?如果[-z";$LAST_PAGE";];则#no-此结果只有一个页面REST_CALL";https://api.github.com${GITHUB_API_REST}?PER_PAGE=200P";否则#YES-此结果在多个页面上,位于`SEQ 1$LAST_PAGE`;DO REST_CALL";https://api.github.com${GITHUB_API_REST}?PER_PAGE=200&;PAGE=$p";完成FI目录$TMPFILE。

仅供参考,您也可以通过这种方式运行它,以获取您有权访问的所有存储库(包括您的个人帐户和其他组织帐户):

UID:项目的唯一标识符,允许Alfred了解该项目,以便随后对用户的操作结果进行排序和排序。我使用了存储库ID(Id)。

Arg:传递给工作流以在浏览器中打开它的参数。我使用了存储库URL(Html_Url)。

Cat~/my-company-repos.txt|jq-s';.[]|MAP({arg:.html_url,uid:.id,Title:.name,SubTitle:.Description})|{Items:。}';>;~/my-company-repos.json。

JQ脚本生成一个与Alfred脚本过滤器JSON格式兼容的~/my-company-repos.json文件。

Alfred标准脚本过滤没有很好的模糊搜索选项--考虑到大量的存储库,这是我非常想要的。

作为一种解决办法,我使用了Alfred-Fuzzy,这是Alfred的一个Python助手脚本,它用模糊搜索取代了“Alfred Filters Results”选项。

在工作流中,将“脚本过滤器”连接到“打开URL”操作:

就是这样,我现在可以使用“脚本过滤器”操作中设置的关键字调用工作流,并模糊搜索我感兴趣的repo。

阿尔弗雷德也足够聪明,可以跟踪我的工作流使用情况,将点击率最高的结果显示在列表💥的顶部。

可以,可以通过几种方式改进工作流(例如:n天后自动更新存储库列表)…。但我对目前的结果已经很满意了。