シンプルなスクリプトパッケージマネージャーを作ってみた

[原文はこちら](https://medium.com/mkdir-awesome/a-new-simple-package-manager-for-script-languages-a1228fd0972a)
![awesome.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/8be8d1b1-6d86-77c7-36c1-6bae8e3d627d.gif)
最近Awesome Package Managerというものを作ったのでその紹介です。他の人にも使ってもらえたらなーと思っています。

ほぼ全てのProgramming LanguageにはPackage ManagerがありますがScript Language用のが見当たらないので作ってみました。

UNIX-LIKEのOSで動きます。（MacOSとUbuntuだけで確認しただけですが他で動く様であればご連絡を。）

# Installation

まずはInstallationから

```
curl -s https://raw.githubusercontent.com/shinokada/awesome/main/install | bash -s install
```

wgetでもいけるはず

```
wget -qO - https://raw.githubusercontent.com/shinokada/awesome/main/install | bash -s install
```

PATHをterminal config　ファイルへ　(.zshrcとか.bashrc)

```
export PATH=$HOME/bin:$PATH
```

もしくはこれをターミナルで叩いてください。(.zshrcは必要に応じて変えてね）

```
echo 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
```

config fileをsourceしましょう。

```
source ~/.zshrc
```


# Uninstallしたいときは

```
curl -s https://raw.githubusercontent.com/shinokada/awesome/main/install > tmp1 && bash tmp1 uninstall && rm tmp1
```

wgetなら

```
wget -qO - https://raw.githubusercontent.com/shinokada/awesome/main/install > tmp1 && bash tmp1 uninstall && rm tmp1
```

# Installing a package

さて早速パッケージをインストールしてみましょう。

## Repoの名前とmain scriptの名前が同じ時

Repoの名前とmain scriptの名前が同じ時は`username/repo-name`でインストールできます。

```
awesome install shinokada/manop
```

[`manop`はこちらを参照してください。](https://github.com/shinokada/manop)

URLもしくはHTTPSでもインストールできます。

```
awesome install https://github.com/shinokada/manop
# or
awesome install https://github.com/shinokada/manop.git
```

## Repoの名前とmain scriptの名前が違う時

Repoの名前とmain scriptの名前が違う時は`username/repo-name main-script`でインストール。

```
awesome install raylee/tldr-sh-client tldr
```

## Sub folderがある時

[Bash-Snippets](https://github.com/alexanderepstein/Bash-Snippets)には色々ScriptsがありますがSub folderに分かれてます。

その時は`username/repo-name folder/main-script`でインストールできます。

```
awesome install alexanderepstein/Bash-Snippets cheat/cheat
```

```
awesome install alexanderepstein/Bash-Snippets weather/weather
```

# パッケージの消去

パッケージを取り除きたいときは`rm` コマンドで。

```
awesome rm manop
```

# パッケージのリスト

パッケージのリストを見たいときは`ls`コマンドで。

```
awesome ls
```

# パッケージをアップデート

パッケージをアップデートしたい時は`update`コマンドで。


```
awesome update tldr
```

# 開発中にGit pushを

スクリプトを開発中にRepoにPushしたい時はこれ。これは`update`もするのでlocalのscriptも同時にupdateしてくれます。（便利）

```
awesome push "message"
```

# script languages

Script languages には[色々ありまして](https://en.wikipedia.org/wiki/Scripting_language)node, perl, php, python, rubyなどもっとあります。
PHP scriptをinstallしてみましょう。

```
awesome install shinokada/script-examples php-example.php
```

で`php-example.php`をrunして。

```
php-example.php
Hello world from PHP!%
```

`shinokada/script-examples`には他のScriptsがあるので`alias`を使かって見ましょう。

```
aawesome alias ne script-examples node-example.js
```

`ne`が使えます。

```
ne
Hello World! from Node.
```


# Other commands

```
-h | --help
-v | --version
url
```

# "どんなscriptが使えるの？"という質問に。

[もっとあるのでこのリストを見てね。](https://github.com/shinokada/awesome/blob/main/list.md)
他に使えるものがあればPull request願います。

| Name                                                              | Installation                            | Description                                                                                 |
| ----------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------- |
| [tldr](https://github.com/raylee/tldr-sh-client)                  | awesome -i raylee/tldr-sh-client tldr   | a collection of community-maintained help pages for command-line tools                      |
| [has](https://github.com/kdabir/has)                              | awesome -i kdabir/has                   | Helps you to check the presence of various command line tools and their versions on a path. |
| [ddgr](https://github.com/jarun/ddgr)                             | awesome -i jarun/ddgr                   | DuckDuckGo from the terminal.                                                               |
| [desk](https://github.com/jamesob/desk)                           | awesome -i jamesob/desk                 | Lightweight workspace manager for the shell.                                                |
| [gitstart](https://github.com/shinokada/gitstart)                 | awesome -i shinokada/gitstart           | GitHub repository automation.                                                               |
| [gitig](https://github.com/shinokada/gitig)                       | awesome -i shinokada/gitig              | Fix a gitignore problem.                                                                    |
| [googler](https://github.com/jarun/googler)                       | awesome -i jarun/googler                | Google Search, Google Site Search, Google News from the terminal.                           |
| [hhighlighter](https://github.com/paoloantinori/hhighlighter)     | awesome -i paoloantinori/hhighlighter h | Colorize words in a command output.                                                         |
| [backpack_install](https://github.com/shinokada/backpack_install) | awesome -i shinokada/backpack_install   | Backpack for Laravel installer.                                                             |
| [hr](https://github.com/paoloantinori/hhighlighter)               | awesome -i LuRsT/hr                     | A horizontal ruler for your terminal.                                                       |
| [manop](https://github.com/shinokada/manop)                       | awesome -i shinokada/manop              | Man page description and option viewer.                                                     |
| [shml](https://github.com/odb/shml)                               | awesome -i odb/shml shml.sh             | A shell framework for faster and easier script development.                                 |
| [slugify](https://github.com/benlinton/slugify)                   | awesome -i benlinton/slugify            | A bash command that converts filenames and directories to a web friendly format.            |
| [spark](https://github.com/holman/spark)                          | awesome -i holman/spark                 | ▁▂▃▅▂▇ in your shell.                                                                       |
| [spot](https://github.com/rauchg/spot)                            | awesome -i rauchg/spot                  | Tiny file search utility.                                                                   |
| [v](https://github.com/rupa/v)                                    | awesome -i rupa/v                       | z for vim.                                                                                  |
| [ansiweather](https://github.com/fcambus/ansiweather)             | awesome -i fcambus/ansiweather          | Display the current weather conditions.                                                     |


# Repo

[GitHub Repoです。](https://github.com/shinokada/awesome)


ぜひ使ってみてください。Feedback願います。