github-reporadar 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist-cli/cli.js +15 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,41 @@
|
|
|
3
3
|
多数の個人リポジトリを並行開発する人のための「どこで何を作っていたか」想起ダッシュボード。
|
|
4
4
|
GitHub の活動(commit / PR / issue)を期間指定で集約し、Web UI とターミナルの両方から確認できます。
|
|
5
5
|
|
|
6
|
+
## 毎日の使い方(自分用の早見表)
|
|
7
|
+
|
|
8
|
+
平日11:00-19:00は自動で動きます。詳しくは [docs/毎日の運用.md](docs/毎日の運用.md)。
|
|
9
|
+
|
|
10
|
+
最初に1回だけ。
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
echo "alias radar='~/dev/env/github-reporadar/ops/reporadar-workday.sh'" >> ~/.zshrc && source ~/.zshrc
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
以後打つのは3つだけ。
|
|
17
|
+
|
|
18
|
+
| 打つもの | いつ |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `radar start` | 土日・深夜・時間外に見たいとき |
|
|
21
|
+
| `radar status` | 動いているか |
|
|
22
|
+
| `radar stop` | 止めるとき |
|
|
23
|
+
|
|
24
|
+
見る場所は2つだけ。
|
|
25
|
+
|
|
26
|
+
| 見るもの | 場所 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| 画面 | http://127.0.0.1:5177/ |
|
|
29
|
+
| うまくいかないとき | `tail -20 ~/.local/state/github-reporadar/workday.log` |
|
|
30
|
+
|
|
31
|
+
新しいPCではこの3行。`gh auth login`が済んでいれば、設定ファイルも自動で作られます。
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git clone https://github.com/BoxPistols/github-reporadar.git ~/dev/env/github-reporadar
|
|
35
|
+
cd ~/dev/env/github-reporadar
|
|
36
|
+
./ops/install.sh
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
はじめての起動だけ、同期が終わるまで1分ほど画面が開きません。2回目からは1秒で開き、同期は裏で走ります。
|
|
40
|
+
|
|
6
41
|
## 機能
|
|
7
42
|
|
|
8
43
|
Web UI はヘッダーで 3 モードを切り替えます。
|
package/dist-cli/cli.js
CHANGED
|
@@ -851,17 +851,22 @@ async function main() {
|
|
|
851
851
|
return;
|
|
852
852
|
}
|
|
853
853
|
const dataDir = args.dataDir ?? defaultDataDir(process.env, homedir());
|
|
854
|
-
if (args.command === "sync"
|
|
854
|
+
if (args.command === "sync") {
|
|
855
855
|
await runSync({ dataDir, days: args.days, orgs: args.orgs });
|
|
856
|
+
return;
|
|
856
857
|
}
|
|
857
|
-
if (args.command === "sync") return;
|
|
858
858
|
if (args.command === "brief") {
|
|
859
859
|
runBrief({ dataDir, days: args.days, sort: args.sort, limit: args.limit, includePrivate: args.includePrivate });
|
|
860
860
|
return;
|
|
861
861
|
}
|
|
862
|
-
|
|
863
|
-
|
|
862
|
+
const hasData = existsSync(join(dataDir, "meta.json"));
|
|
863
|
+
if (!hasData) {
|
|
864
|
+
if (!args.sync) {
|
|
865
|
+
throw new Error(`データがありません: ${dataDir}
|
|
864
866
|
先に \`github-reporadar sync\`を実行するか、--no-syncを外してください`);
|
|
867
|
+
}
|
|
868
|
+
console.log("はじめての同期です。1分ほどかかります");
|
|
869
|
+
await runSync({ dataDir, days: args.days, orgs: args.orgs });
|
|
865
870
|
}
|
|
866
871
|
const dist = distDir();
|
|
867
872
|
if (!existsSync(join(dist, "index.html"))) {
|
|
@@ -873,6 +878,12 @@ async function main() {
|
|
|
873
878
|
console.log(`GitHub RepoRadar: ${url} (データ: ${dataDir})`);
|
|
874
879
|
console.log("止めるにはCtrl+C");
|
|
875
880
|
if (args.open) openBrowser(url);
|
|
881
|
+
if (hasData && args.sync) {
|
|
882
|
+
console.log("裏で同期しています");
|
|
883
|
+
runSync({ dataDir, days: args.days, orgs: args.orgs, log: (line) => console.log(`[sync] ${line}`) }).catch(
|
|
884
|
+
(err) => console.error(`同期に失敗: ${err instanceof Error ? err.message : String(err)}`)
|
|
885
|
+
);
|
|
886
|
+
}
|
|
876
887
|
let timer = null;
|
|
877
888
|
if (args.watchSeconds) {
|
|
878
889
|
const FULL_EVERY_MS = 30 * 60 * 1e3;
|