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 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" || args.command === "serve" && args.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
- if (!existsSync(join(dataDir, "meta.json"))) {
863
- throw new Error(`データがありません: ${dataDir}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-reporadar",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "自分のGitHub活動を一晩ぶん眺める計器盤。npx github-reporadarでローカルに開く",
5
5
  "license": "MIT",
6
6
  "bin": {