`noteplan-cli plugin:create` fails because of "missing" .gitconfig, and using different email addresses
まだ誰も着手していません。
- 主要言語
- JavaScript
- スター
- 204
- フォーク
- 82
- 平均マージ
- 22時間 27分
- マージ済み PR(30日)
- 3
説明
Describe the bug
I wanted to explore plugin development for fun but ran into a issues
noteplan-cli plugin:create
(node:72118) UnhandledPromiseRejectionWarning: Error: [git-user-local]: cannot find .gitconfig file on the system`
And additionally
(node:96392) UnhandledPromiseRejectionWarning: Error: Couldn't find username for `my.email@domain.com`
(with my.email@domain.com being a placeholder for my actual one)
noteplan-cli implicitly relies on the existence of the $HOME/.gitconfig in two places [3], [4], to then use the extracted email to lookup the Github username. It fails when it can't find the .gitconfig and it fails if it can't find a username.
As far as I can see that username is used at [5] to greet the user and at [6] as a default as plugin author.
Basically
This approach creates some issues for my setup
Technical issue
In my opinion the used git-user-local module has two issues:
- The file resolution of the used module is not really correct (at least in my case). See [1] It looks under a given path, defaulting to
$HOMEfor a.gitconfig. - Furthermore it parses the config file as an ini file, ignoring gitconfig constructs like
includeandincludeIfwhich in my opinion are often used to switch out usernames and email addresses based on the current working directory.
My git config lives at $HOME/.config/git/config as it makes dot files managment a bit easier and makes my $HOME a lot cleaner. As outlined at [2] that location is a valid "second user-specific configuration file".
"Email" issue
I use different email addresses for projects using the git config includeIf future to switch out my email address and defaulting to my work address when I am not in any git repository. That means noteplan-cli tries to find the Github account based on my work email address which doesn't work.
"Organizational" issue
I might want to just locally experiment on a plugin without having a Github account. Since I think it's only used for [3], and [4] I don't see the hard requirement on it. A fallback on just asking for a name at [4] might be enough.
"Offline" issue
Furthermore I can't create a plugin when I am not online.
Workaround
I can work around it by symlinking ln -s $HOME/.config/git/config $HOME/.gitconfig by I would rather avoid that.
Additionally I have to change my default email address in $HOME/.config/git/config
Solutions space
I wanted to ask what a good approach would be to make it more friendly to different git config structures and "offline" usage. I see these options
- Instead of using the
git-user-localmodule call git directlygit config --global user.emailfrom within node. - Allow to pass a parameter to noteplan-cli
- Don't fail on missing git email address or Github username. Ask when it's needed
I personally would prefer a combination of 1 (addressing the technical downsides of git-user-local and 3 for the email and offline issue.
[1] https://github.com/LasaleFamine/git-user-local/blob/master/src/index.js#L8
[2] https://git-scm.com/docs/git-config#Documentation/git-config.txt-XDGCONFIGHOMEgitconfig
[3] https://github.com/NotePlan/plugins/blob/760d4e746b9d9706607ad08bda3cdf1375cc6f39/src/commands/support/plugin-create.js#L22
[4] https://github.com/NotePlan/plugins/blob/760d4e746b9d9706607ad08bda3cdf1375cc6f39/src/commands/PluginCreate.js#L60
[5] https://github.com/NotePlan/plugins/blob/760d4e746b9d9706607ad08bda3cdf1375cc6f39/src/commands/support/plugin-create.js#L25
[6] https://github.com/NotePlan/plugins/blob/760d4e746b9d9706607ad08bda3cdf1375cc6f39/src/commands/support/plugin-create.js#L44
To Reproduce
Have your git config in a XDG_CONFIG_HOME compatible location, or be offline, or don't have a Github account (at this point). Try to create plugin.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
src/commands/support/plugin-create.js と src/commands/PluginCreate.js から始め、XDG Git 設定、GitHub アカウントなし、またはネットワークアクセスなしの状態で noteplan-cli plugin:create を再現します。Git 設定がない場合、プロジェクト固有のメールアドレス、利用できない GitHub ユーザー名、オフラインでの使用について、選択したアプローチを実装してテストする前に、期待される動作を定義します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- git, github, javascript, node.js
- 領域
- cli, developer-experience
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 35/100