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

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

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

特徴

パッケージ管理プログラムではパッケージ間の互換性確認のために意味つきバージョン管理を使用しています。

このようなオプションがパッケージ管理プログラムにあります。

用法 : ringpm [コマンド]
コマンド : search  [キーワード...]
コマンド : refresh : レジストリの更新 (パッケージリスト)
コマンド : install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]
コマンド : list    [-u : 更新の確認]
コマンド : run     [パッケージ名]
コマンド : update  <パッケージ名>
コマンド : remove  <パッケージ名>
コマンド : format  : すべてのパッケージを削除
コマンド : new     <パッケージ名>
コマンド : package : 現在のフォルダにパッケージを作成

パッケージの検索

新しいパッケージを検索するには Search コマンドを使用します。

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

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

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

用例:

ringpm search notepad

実行結果:

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

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

用例:

ringpm search

RingPM レジストリの更新

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

ローカルコピーを更新するには Refresh コマンドを使用します。

用例:

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

インストール後にパッケージを実行するには

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 コマンドを使用します。

ringpm run [パッケージ名]

用例(1):

ringpm run ringnotepad

用例(2):

ringpm run goldmagic800

用例(3):

ringpm run gameoflife

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

用例(4):

ringpm run

パッケージの更新

パッケージを更新するには 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 = ""
]

パッケージ概要ファイル

パッケージ概要ファイルには、 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 のみで行う処理を指定

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

既存アプリケーションでパッケージを作成するには、このコマンドをアプリケーションのフォルダへ移動後に実行します。

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/ringpm/registry/registry.ring