Atomでパッケージを公開・更新する

自分がAtomでパッケージを公開・更新するまでにした操作を書き並べた記事です。

##環境
```
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.6
BuildVersion:	17G65
$ atom -v
Atom    : 1.29.0
Electron: 2.0.5
Chrome  : 61.0.3163.100
Node    : 8.9.3
```

##GitHubの準備
###アカウントの情報
settings → Emails の　☑️ Keep my email address private でダミーメアドを用意

- user名：`horyu`
- ダミーメアド：`horyu@users.noreply.github.com`

###新しいリポジトリの作成
ファイルがあると手間が増えたので、以下の設定で作成

- ☑️ Public
- Aadd .gitignore : `None`
- Add a license : `None`
- Repository name：`latex-itemizer`

##gitの準備

```shell:
$ git --version
git version 2.13.6 (Apple Git-96)
```

###~/.gitconfigへ設定

```shell:
$ git config --global user.name "horyu"
$ git config --global user.email "horyu@users.noreply.github.com"
```

##Atomでパッケージの作成
参考：[前の記事](https://qiita.com/_-----------_/items/d3c326f546e5ee9f3333)
`/Users/aaaa/github/latex-itemizer`にパッケージを作ったとします。

## パッケージの公開
```shell:
$ cd /Users/aaaa/github/latex-itemizer
# 前の記事のGIF(demo.gif)をこのディレクトリに持ってくる
```

- README.mdの作成

```markdown:README.md
# latex-itemizer

For latex-itemizer

## Usage

| Command Name                   | Key Binding               |
|--------------------------------|---------------------------|
| latex-itemizer:newline-item    | ```Alt         + Enter``` |
| latex-itemizer:newline-itemize | ```Alt + Shift + Enter``` |


## Demo

![demo](demo.gif)

## Installation

Install from the Atom Package manager or the command line:

```$ apm install latex-itemizer```

```

- `package.json`の更新

```diff:package.json
-  "repository": "https://github.com/atom/latex-itemizer",
+  "repository": "https://github.com/horyu/latex-itemizer",
```

- 現在の構成

```shell:
$ tree
.
|-- README.md
|-- demo.gif
|-- keymaps
|   `-- latex-itemizer.cson
|-- lib
|   `-- latex-itemizer.coffee
`-- package.json
```

- リモートリポジトリに反映させる

```shell:
$ git init
Initialized empty Git repository in /Users/aaaa/github/latex-itemizer/.git/
$ git add -A
$ git commit -m "first commit"
[master (root-commit) 20fa3a4] first commit
 6 files changed, 85 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 README.md
 create mode 100644 demo.gif
 create mode 100644 keymaps/latex-itemizer.cson
 create mode 100644 lib/latex-itemizer.coffee
 create mode 100644 package.json
$ git remote add origin https://github.com/horyu/latex-itemizer.git
$ git push -u origin master
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (10/10), 52.67 KiB | 13.17 MiB/s, done.
Total 10 (delta 0), reused 0 (delta 0)
To https://github.com/horyu/latex-itemizer.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
```

- パッケージを登録する

```shell:
# publishする時、アカウント情報の入力を省略するため apm login しておく
$ apm login
Welcome to Atom!

Before you can publish packages, you’ll need an API token.

Visit your account page on Atom.io https://atom.io/account,
copy the token and paste it below when prompted.

Press [Enter] to open your account page on Atom.io. # [Enter]でブラウザを開く
Token> # ブラウザのトークンをここにペーストして[Enter]
Saving token to Keychain ✓

# apm publish は major/minor/patch のいずれか
$ apm publish patch
Registering latex-itemizer ✓
Preparing and tagging a new version ✓
Pushing v0.0.1 tag ✓
Publishing latex-itemizer@v0.0.1 ✓
Congrats on publishing a new package! 👍  📦  🎉
Check it out at https://atom.io/packages/latex-itemizer

```

- 別環境からチェック

![スクショ.png](https://qiita-image-store.s3.amazonaws.com/0/186959/fc39a882-9332-774c-8639-3329017b140a.png)
![スクショ2.png](https://qiita-image-store.s3.amazonaws.com/0/186959/cbd1ac94-5cfe-ae00-00ca-2e23b6800ccd.png)

- `demo.gif`は表示できてないけど、インストールできて動いた

##パッケージの更新

- 他のパッケージを眺めていると、`GIF`の表示はリモートリポジトリのファイルにリンクすれば読み込めるらしい

```diff:README.md
- ![demo](demo.gif)
+ ![demo](https://raw.githubusercontent.com/horyu/latex-itemizer/master/demo.gif)
```

- リモートリポジトリに反映させる

```shell:
$ git add -A
$ git commit -m "update README.md"
[master 56bc9a9] update README.md
 1 file changed, 1 insertion(+), 1 deletion(-)
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 362 bytes | 362.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/horyu/latex-itemizer.git
   0611822..56bc9a9  master -> master
```

- apmで更新する

```shell
$ apm publish patch
Preparing and tagging a new version ✓
Pushing v0.0.2 tag ✓
Publishing latex-itemizer@v0.0.2 ✓
```

- さっきの別環境はキャッシュが残っていたのか正しく表示できなかったが、さらに別の環境で見たら読み込めていた

##ライセンスの追加
Atomのパッケージ画面で`View on Atom.io`をクリックしたページの`License`で`package.json`に飛ばされるのは味気ない（`package.json`には`"license": "MIT"`と書いてある）&& リポジトリに`LICENSE`がないので追加する。

[GitHubで後からライセンスを指定する方法](https://qiita.com/medi-y-sato/items/c3d5c357ab020290dccc)を参考に、ブラウザ上で操作する。

```shell:
$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/horyu/latex-itemizer
   56bc9a9..ec8c313  master     -> origin/master
Updating 3d9002d..ec8c313
Fast-forward
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE
$ apm publish patch
Preparing and tagging a new version ✓
Pushing v0.0.3 tag ✓
Publishing latex-itemizer@v0.0.3 ✓
```

`View on Atom.io`→`License`でリモートリポジトリのLicenseに移動するようになった。