Ring パッケージ管理プログラム (RingPM)

Ring パッケージ管理プログラム (RingPM) の用法です。

このツールは Ring パッケージの検索、インストール、および更新をします。

また、パッケージの互換性の確認で意味つきバージョン管理を使います。

コマンドラインオプション

書式:

ringpm [コマンド]

コマンド:

コマンド

説明

search [キーワード...]

新しいパッケージを検索

refresh

レジストリを更新 (パッケージリスト)

install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]

パッケージをインストール

list [-u : 更新の確認]

インストール済みパッケージのリストを表示

run [パッケージ名]

パッケージスクリプトを実行

update <パッケージ名>

パッケージを更新

remove <パッケージ名>

パッケージを削除

format

すべてのパッケージを一括削除

new

パッケージテンプレートを新規作成

package

現在のフォルダにパッケージを作成

注釈

パッケージの開発検証作業には GitHub アカウント、またはローカル Git サーバが必要です。 package.ring による ringpm install でのローカルインストールはできません。

パッケージの検索

search コマンドは新しいパッケージを検索します。

このコマンドは RingPM レジストリ (パッケージのインデックス) を検索します。

RingPM レジストリは登録済み全パッケージのローカルコピーです。

ringpm search [キーワード...]

用例:

ringpm search notepad

実行結果:

Package : ringnotepad (Ring Notepad)
Package : notepadppeditorextension (Notepad++ Editor Extension package)

RingPM レジストリにあるパッケージをすべて表示するには、キーワード無指定で Search コマンドを使用してください。

用例:

ringpm search

RingPM レジストリの更新

refresh コマンドはローカルコピーを更新します。

RingPM レジストリは登録済み全パッケージのローカルコピーです。

用例:

ringpm refresh

実行結果:

No updates to the Registry, Nothing to do!

または

The Registry is updated from revision 110 (2019/01/13) to revision 112 (2019/01/15)

パッケージのインストール

Install コマンドは新しいパッケージをインストールします。

ringpm install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]

RingPM レジストリからパッケージ情報を取得するには、パッケージ名のみ打鍵します。 または、ユーザ名 (GitHub) と GitHub プロジェクトのブランチ名を決定します。

カレントフォルダがパッケージフォルダならば、パッケージ名の記述は不要です。

用例 (1) :

ringpm install ringnotepad

用例 (2) :

ringpm install goldmagic800

用例 (3) :

ringpm install gameoflife

RingPM レジストリにパッケージが追加されていない場合は、 GitHub ユーザからインストールできます

用例 (4) :

ringpm install firstpackage from mahmoudfayed

インストール後にパッケージスクリプト (main.ring) を実行するには

ringpm run firstpackage

カレントフォルダのパッケージをインストールするには

用例 (5) :

ringpm install

インストール済みパッケージのリスト表示

list コマンドはインストール済みパッケージを表示・確認します。

ringpm list [-u : 更新の確認]

用例:

ringpm list

実行結果:

(analogclock)          : The AnalogClock Package [master]         -- (1.0.0)
(androidringlibsdl)    : The AndroidRingLibSDL Package [master]   -- (1.0.0)
(androidringqt)        : The AndroidRingQt Package [master]       -- (1.0.0)
(atomeditorextension)  : The AtomEditorExtension Package [master] -- (1.0.0)
(bignumber)            : The BigNumber Package [master]           -- (1.0.0)
(calculator)           : The Calculator Package [master]          -- (1.0.0)
(cards)                : The Cards Package [master]               -- (1.0.0)
(checkers)             : The Checkers Package [master]            -- (1.0.0)
(chess)                : The Chess Package [master]               -- (1.0.0)
....

新しい更新を確認するには

ringpm list -u

パッケージスクリプトの実行

run コマンドはインストール後にパッケージスクリプト (main.ring) を実行します。これはインストール後の後処理などで使います。

ringpm run [パッケージ名]

用例(1):

ringpm run ringnotepad

用例(2):

ringpm run goldmagic800

用例(3):

ringpm run gameoflife

カレントフォルダでパッケージスクリプトを実行するには

用例(4):

ringpm run

注釈

ローカルインストールに対応したいときは run.ring と zip ファイルを使います。 詳しくは /tools/ringpm/webassemblyringqt を参照してください。

パッケージの更新

update コマンドはパッケージを更新します。

ringpm update <パッケージ名>

用例:

ringpm update ringnotepad

パッケージの削除

remove コマンドはパッケージを削除します。

ringpm remove <パッケージ名>

用例:

ringpm remove ringnotepad

パッケージの全削除

format コマンドはパッケージをすべて削除します。

用例:

ringpm format

パッケージテンプレートの新規作成

new コマンドはパッケージテンプレートを新規作成します。

ringpm new <パッケージ名>

用例:

ringpm new myapp

これは新しいフォルダ myapp を作成します。

このようなファイルが新しいフォルダにあります。

  • package.ring : パッケージの概要とファイル

  • main.ring : メインプログラム (Run コマンドで使用)

  • lib.ring : パッケージと関連するライブラリファイル

ファイル : main.ring

# メインファイル

load "lib.ring"

func main

        ? "Hello, World!"

ファイル : lib.ring

# ライブラリファイル

ファイル : package.ring

aPackageInfo = [
        :name = "The myapp Package",
        :description = "Our myapp package using the Ring programming language",
        :folder = "myapp",
        :developer = "",
        :email = "",
        :license = "MIT License",
        :version = "1.0.0",
        :ringversion = "1.10",
        :versions =     [
                [
                        :version = "1.0.0",
                        :branch = "master"
                ]
        ],
        :libs =         [
                [
                        :name = "",
                        :version = "",
                        :providerusername = ""
                ]
        ],
        :files =        [
                "lib.ring",
                "main.ring"
        ],
        :ringfolderfiles =      [

        ],
        :windowsfiles =         [

        ],
        :linuxfiles =   [

        ],
        :ubuntufiles =  [

        ],
        :fedorafiles =  [

        ],
        :macosfiles =   [

        ],
        :windowsringfolderfiles =       [

        ],
        :linuxringfolderfiles =         [

        ],
        :ubunturingfolderfiles =        [

        ],
        :fedoraringfolderfiles =        [

        ],
        :macosringfolderfiles =         [

        ],
        :run = "ring main.ring",
        :windowsrun = "",
        :linuxrun = "",
        :macosrun = "",
        :ubunturun = "",
        :fedorarun = "",
        :setup = "",
        :windowssetup = "",
        :linuxsetup = "",
        :macossetup = "",
        :ubuntusetup = "",
        :fedorasetup = "",
        :remove = "",
        :windowsremove = "",
        :linuxremove = "",
        :macosremove = "",
        :ubunturemove = "",
        :fedoraremove = ""
]

ちなみに

リモートのファイル構成については https://github.com/ringpackages/ を参照してください。

パッケージ概要ファイル

パッケージ概要ファイル (package.ring) には、 aPackageInfo のリストで定義されたパッケージ情報があります。

属性

説明

Name

パッケージ名

Description

パッケージの概要

Folder

フォルダ名 (ring/ringpm/packages へ作成)

Developer

パッケージ開発者名

Email

パッケージ開発者の電子メールアドレス

License

パッケージの使用許諾条件

Version

パッケージの現行バージョン (最新版数)

RingVersion

必要とされる Ring 言語のバージョン (最小版数)

Versions

GitHub プロジェクトの別ブランチにより提示されるバージョンのリスト

Libs

依存性リスト (名前、バージョンと GitHub のユーザ名)

Files

ファイルリスト (ring/ringpm/packages/[フォルダ] へインストール)

RingFolderFiles

ファイルリスト (Ring のフォルダへインストール)

WindowsFiles

Files と同じですが Microsoft Windows のみで行う処理を指定

LinuxFiles

Files と同じですが Linux のみで行う処理を指定

MacOSFiles

Files と同じですが macOS のみで行う処理を指定

UbuntuFiles

Files と同じですが Ubuntu のみで行う処理を指定

FedoraFiles

Files と同じですが Fedora のみで行う処理を指定

WindowsRingFolderFiles

RingFolderFiles と同じですが Microsoft Windows のみで行う処理を指定

LinuxRingFolderFiles

RingFolderFiles と同じですが Linux のみで行う処理を指定

MacOSRingFolderFiles

RingFolderFiles と同じですが macOS のみで行う処理を指定

UbuntuRingFolderFiles

RingFolderFiles と同じですが Ubuntu のみで行う処理を指定

FedoraRingFolderFiles

RingFolderFiles と同じですが Fedora のみで行う処理を指定

Run

パッケージで実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsRun

Run と同じですが Microsoft Windows のみで行う処理を指定

LinuxRun

Run と同じですが Linux のみで行う処理を指定

MacOSRun

Run と同じですが macOS のみで行う処理を指定

UbuntuRun

Run と同じですが Ubuntu のみで行う処理を指定

FedoraRun

Run と同じですが Fedora のみで行う処理を指定

Setup

パッケージファイルのダウンロード後に実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsSetup

Setup と同じですが Microsoft Windows のみで行う処理を指定

LinuxSetup

Setup と同じですが Linux のみで行う処理を指定

MacOSSetup

Setup と同じですが macOS のみで行う処理を指定

UbuntuSetup

Setup と同じですが Ubuntu のみで行う処理を指定

FedoraSetup

Setup と同じですが Fedora のみで行う処理を指定

Remove

パッケージファイルの削除前に実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsRemove

Remove と同じですが Microsoft Windows のみで行う処理を指定

LinuxRemove

Remove と同じですが Linux のみで行う処理を指定

MacOSRemove

Remove と同じですが macOS のみで行う処理を指定

UbuntuRemove

Remove と同じですが Ubuntu のみで行う処理を指定

FedoraRemove

Remove と同じですが Fedora のみで行う処理を指定

カレントフォルダでのパッケージ作成

package コマンドは既存アプリケーションのパッケージを作成します

アプリケーションのフォルダへ移動後に、

ringpm package

を実行するとパッケージ定義ファイル (package.ring) の作成後、パッケージ定義へアプリケーションのファイルリストをすべて追加します。

RingPM で作成したパッケージには、パッケージ情報とファイルリストを記したパッケージ定義ファイル (package.ring) を生成します。

用例:

Ring ノートパッドのパッケージファイル定義は

aPackageInfo = [
        :name = "The RingNotepad Package",
        :description = "Our RingNotepad package using the Ring programming language",
        :folder = "ringnotepad",
        :developer = "Mahmoud Fayed",
        :email = "msfclipper@yahoo.com",
        :license = "MIT License",
        :version = "1.0.0",
        :ringversion = "1.10",
        :versions =     [
                [
                        :version = "1.0.0",
                        :branch = "master"
                ]
        ],
        :libs =         [
                [
                        :name = "stdlib",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "ringqt",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "findinfiles",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "formdesigner",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "libdepwin_apache",
                        :version = "1.0",
                        :providerusername = ""
                ]
        ],
        :files =        [
                "main.ring",
                "README.md"
        ],
        :ringfolderfiles =      [
                "applications/rnote/batch/killwebserver.bat",
                "applications/rnote/batch/run.bat",
                "applications/rnote/batch/run2.bat",
                "applications/rnote/image/back.jpg",
                "applications/rnote/image/back2.jpg",
                "applications/rnote/image/close.png",
                "applications/rnote/image/colors.png",
                "applications/rnote/image/copy.png",
                "applications/rnote/image/cut.png",
                "applications/rnote/image/debug.png",
                "applications/rnote/image/font.png",
                "applications/rnote/image/formdesigner.png",
                "applications/rnote/image/new.png",
                "applications/rnote/image/notepad.png",
                "applications/rnote/image/open.png",
                "applications/rnote/image/paste.png",
                "applications/rnote/image/print.png",
                "applications/rnote/image/project.png",
                "applications/rnote/image/richtext.png",
                "applications/rnote/image/run.png",
                "applications/rnote/image/rungui.png",
                "applications/rnote/image/save.png",
                "applications/rnote/image/saveas.png",
                "applications/rnote/image/search.png",
                "applications/rnote/image/source.png",
                "applications/rnote/image/undo.png",
                "applications/rnote/image/web.png",
                "applications/rnote/README.md",
                "applications/rnote/rnote.ring",
                "applications/rnote/rnoteactivefile.ring",
                "applications/rnote/rnoteactivefolder.ring",
                "applications/rnote/rnoteautocomplete.ring",
                "applications/rnote/rnotebase.ring",
                "applications/rnote/rnotecontroller.ring",
                "applications/rnote/rnotedistribute.ring",
                "applications/rnote/rnoteeditmenu.ring",
                "applications/rnote/rnoteeditorevents.ring",
                "applications/rnote/rnotefilemenu.ring",
                "applications/rnote/rnotefiles.ring",
                "applications/rnote/rnotefilestabs.ring",
                "applications/rnote/rnotefind.ring",
                "applications/rnote/rnotefindinfiles.ring",
                "applications/rnote/rnoteformdesigner.ring",
                "applications/rnote/rnotegoto.ring",
                "applications/rnote/rnotehelp.ring",
                "applications/rnote/rnotelists.ring",
                "applications/rnote/rnotemainfiletoolbar.ring",
                "applications/rnote/rnotemainwindow.ring",
                "applications/rnote/rnotemode.ring",
                "applications/rnote/rnoteoutputwindow.ring",
                "applications/rnote/rnoteprogrammenu.ring",
                "applications/rnote/rnoterun.ring",
                "applications/rnote/rnotesettings.ring",
                "applications/rnote/rnotestyle.ring",
                "applications/rnote/rnotetabwidth.ring",
                "applications/rnote/rnotetools.ring",
                "applications/rnote/rnotetreeviewevents.ring",
                "applications/rnote/rnoteviewmenu.ring",
                "applications/rnote/rnotewebbrowser.ring"
        ],
        :run = "ring main.ring"
]

RingPM レジストリファイル

RingPM レジストリは、登録済み全パッケージのローカルコピーです。

aPackagesRegistry = [
        [ :name = "ringpresentation",
          :description = "Powerpoint presentation for the Ring programming language",
          :ProviderUserName = "ringpackages"
        ]
        # ...
]

このリストでパッケージを定義しています。

  • パッケージ名

  • パッケージの概要

  • 開発者のユーザ名 (GitHub ユーザ名)

新しいパッケージを登録するには、レジストリファイルを更新後に Pull リクエストを送信します。

URL : https://github.com/ring-lang/ring/blob/master/tools/ringpm/registry/registry.ring