cappyzawa
cappyzawa
Mar 17 · 5 min read

少し前にcappyzawa/medium-resource: A concourse resource for posting a story to medium を実装して、concourseのcomunity resourcesに追加してもらった。

Community Resources

そして最近今更なぜかvimにハマりだしてしまい、InteliJ IDEAではなく、vimでの作業が増えてきた。 便利なpluginとかを探して追加していくだけで楽しかったのだが、なんか自分でもplugin作りたいなと思い、練習がてらcappyzawa/fly-lint.vim: Vim Plugin for flyを実装した。

今日は2つについてまとめてみようと思う。

Medium-Resource

cappyzawa/medium-resource: A concourse resource for posting a story to medium

いうまでもなく、このブログはMediumに記載している。ただ、Mediumはweb上で書くにはちょっと癖があり、やはりローカル環境で執筆してまとめて公開したい思いがあった。

そこでMedium-Resourceを実装した。これを導入すれば、ローカルで執筆 -> GitHubにpush -> Mediumにupload というフローが作れる。

Resourceの振る舞いについて紹介

check/in

なし。というのもMedium/medium-api-docs: Documentation for Medium’s OAuth2 API では特定のアカウントのStoriesの取得をサポートしていないのだ。RSSを使っての取得はできるそうなんだが、それであればstarkandwayne/rss-resource: A Concourse resource to grab RSS feeds and their contents を利用するのが妥当であると判断し、無理はしないことにした。

out

Storyをpostすることができる。ただ、都度指定されたfileのuploadをしてしまうためあまり使い勝手がよくないwww

上で紹介したMediumのAPIにPUTメソッドがあればいいんだが、、、、なくてもStoryの取得ができれば頑張れたんだが(ry

ないことを嘆いて仕方がないのでとりあえずparameterでも列挙する。

parameters

  • content_file: 必須。postするファイル。markdown形式かhtml形式であれば良い。
  • tags: 任意。Storyに紐づけるtag。
  • canonical_url: 任意。canonical url。(参考: https://service.plan-b.co.jp/blog/seo/4878/)
  • status: 任意。defaultはdraftdraft, unlisted, publicのうちのどれかを選択できる。ただ、都度postされてしまう都合上draftが望ましいとは思う。
  • licence: 任意。お好みで。

タイトルはmarkdownであれば一行目、htmlであればtitleタグの中身が採用される。

fly-lint.vim

cappyzawa/fly-lint.vim: Vim Plugin for fly

名前の通りflyコマンドを利用してConcourseのPipelineの設定ファイルをlintしてくれる。

Commands

  • ValidatePipeline: fly validate-pipleineを実行
  • FormatPipeline: fly format-pipelineを実行
  • ForceFormatPipeline: fly format-pipelineの結果を元に強制的に編集中のpipelineファイルを更新。(エラーの場合は除く)
  • EnableAutoValidatePipeline: 一度実行するとpipelineファイルが保存されるたびに、fly validate-pipelineを実行して結果を教えてくれる。
  • DisableAutoValidatePipeline: 上記のEnableAutoValidatePipelineを無効にしたい場合に利用。Concourse pipelineでないyamlファイルも変更している場合などに利用。

Mappings

  • <Leader>vp: ValidatePipeline
  • <Leader>fp: FormatPipeline
  • <Leader>ffp: ForceFormatPipeline
  • <Leader>ea: EnableAutoValidatePipeline
  • <Leader>da: DisableAutoValidatePipeline

vim pluginを作ったのは初めてだったからコードの出来は自信はないが、とりあえずものとしては割と便利だと思う。たぶん。

cappyzawa

Written by

cappyzawa

#golang #concourse #vim

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade