GitHub連携でQiita記事を素敵な執筆環境で! #Python - Qiita で、
qiita-syncという素敵な執筆環境があることを知り、便利に使わせてもらっています。
(使う方は、記事のコメント欄にある「Github Actions の読み書きの許可」も併せてやりましょう)
しかし、自分の執筆フローに一部合わないところがありました。特に、次のことを実現する方法が紹介されていませんでした。
- 執筆中の記事は公開せず、限定公開にもしたくない
- ある程度記事が書けたら公開したい
- 執筆のためのマシンは複数あるので、執筆中の記事もgithubで管理したい
qiita-syncのソースコードを読み、実現方法が分かりましたので、本記事ではそれを紹介します。
結論
次の条件にマッチするファイル名は、qiita-syncのsync対象外になる。
- ドットから始まるフォルダ名の配下にある、任意のファイル名
例
- qiita-content/.draft/draft-file.md
- qiita-content/.draft/folder1/draft-file.md
※qiita-content
はリポジトリフォルダです。(qiita-content/.github フォルダが存在する形)
解説
ryokat3/qiita-syncのソースコード( https://github.com/ryokat3/qiita-sync/blob/339db7f95a18c3e77a9a59ef4d4f65ee6f5781fe/qiita_sync/qiita_sync.py#L112 )を見ると、次のように定義されています。
DEFAULT_EXCLUDE_GLOB = ['**/README.md', '.*/**/*.md']
この変数は、最終的に、sync対象外とするファイルを決定するために使われているので、
これを活用すれば良いこととなります。
他の方法1
DEFAULT_INCLUDE_GLOB = ['**/*.md']
という変数が定義されているので、これにマッチしなければ同期対象外となります。
つまり、拡張子をmd以外にすればよいのです。
例
- draft-file.md.draft
ほかの方法2
DEFAULT_EXCLUDE_GLOB は、qiita-syncコマンドラインオプション-e
に対応しているので、
.github/workflows/qiita_sync.yml
ファイルと.github/workflows/qiita_sync_check.yml
ファイルを次のように編集すればよいでしょう。
- README.md と qiita-content/draft フォルダ配下のファイルは同期対象外にしたい場合
- name: Run qiita-sync
run: |
qiita_sync sync .
env:
QIITA_ACCESS_TOKEN: ${{ secrets.QIITA_ACCESS_TOKEN }}
- name: Run qiita-sync
run: |
qiita_sync sync -e '**/README.md' 'draft/*' .
env:
QIITA_ACCESS_TOKEN: ${{ secrets.QIITA_ACCESS_TOKEN }}
- name: Run qiita-sync check
run: |
qiita_sync check . > ./qiita_sync_output.txt
cat ./qiita_sync_output.txt
[ ! -s "qiita_sync_output.txt" ] || exit 1
- name: Run qiita-sync check
run: |
qiita_sync check -e '**/README.md' 'draft/*' . > ./qiita_sync_output.txt
cat ./qiita_sync_output.txt
[ ! -s "qiita_sync_output.txt" ] || exit 1