ottijp blog

GitHubで開発が止まったリポジトリの引き継ぎ開発してそうなリポジトリを探す

ChromeをVimキーバインドで操作できるcvimを愛用しているのですが, 開発が止まってしまっているようで,バグフィックスなどがしばらく行われなくなっています.

そこで,誰かフォークして引き継ぎ開発してそうなリポジトリを探そうと思ったのですが, Forksのリストを表示すると,ずらっと一覧がでてきて,これを一つ一つ見ていくのは辛いな,という感じでした.

forks
https://github.com/1995eaton/chromium-vim/network/members

そこで,GitHub API(npmモジュールの@octokit/rest)を使い,最終push日時とスター数を抽出しました.

環境

  • Node.js 10.18.0
  • @octokit/rest 17.10.0

コード

こんなコードを書きました.

index.js
const { Octokit } = require("@octokit/rest")
const octokit = new Octokit()

const owner = '1995eaton'
const repo = 'chromium-vim'
const per_page = 100

;(async () => {

  // get number of Forks
  const forksCount = await octokit.repos
    .get({
      owner,
      repo,
    })
    .then(({ data }) => {
      return data.forks_count
    })

  // calc page count from number of forks
  const pages = Math.round(forksCount / per_page)

  // get information of forks
  const forks = []
  for (const p of [...Array(pages).keys()]) {
    await octokit.repos
      .listForks({ owner, repo, per_page, page: p + 1 })
      .then(({ data }) => {
        for (const r of data) {
          forks.push({
            full_name: r.full_name,
            stargazers_count: r.stargazers_count,
            watchers_count: r.watchers_count,
            pushed_at: r.pushed_at,
            html_url: r.html_url,
          })
        }
      })
  }

  // print information of forks
  console.log('full_name,stargazers_count,watchers_count,pushed_at,html_url')
  for (const fork of forks) {
    console.log(`${fork.full_name},${fork.stargazers_count},${fork.watchers_count},${fork.pushed_at},${fork.html_url}`)
  }
})()

次のように実行します.

$ npm i @octokit/rest
$ node .

次のようなcsvが出力されます.

full_name,stargazers_count,watchers_count,pushed_at,html_url
sahwar/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/sahwar/chromium-vim
pdanem/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/pdanem/chromium-vim
emoturtle/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/emoturtle/chromium-vim
StevenBalogh/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/StevenBalogh/chromium-vim
Clunt/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/Clunt/chromium-vim
fromasmtodisasm/chromium-vim,0,0,2020-04-25T09:18:55Z,https://github.com/fromasmtodisasm/chromium-vim
Armog/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/Armog/chromium-vim
cedarjp/chromium-vim,0,0,2020-04-13T07:21:19Z,https://github.com/cedarjp/chromium-vim
NoisomePossum/chromium-vim,0,0,2020-03-10T02:14:36Z,https://github.com/NoisomePossum/chromium-vim

これをスプレッドシートで開き,stargazers_countpushed_atなどでソートして, 引き継ぎ開発してそうなリポジトリの候補を見ていきました.

注意

  • octokit.repos.listForks()で渡すpageは1始まりなので注意!
  • octokit.repos.get()で取ったforks_countは275なのに,3ページ目の結果が61で,全部で261件しか取れていない・・・ので,どこか間違っているかもです

結果

cvimを引き継ぎ開発してそうなリポジトリは見つかりませんでした.残念. 代替ツールで良さげなのを知っている人は教えて下さい.


ottijp
都内でアプリケーションエンジニアをしています
© 2024, ottijp