r4wpkgコマンドについて
r4wpkgは、Ros4Winのための簡易パッケージマネージャーです。リポジトリサイトと連携してパッケージのダウンロード、インストール、アンインストール、アップデートの確認などを行います。
リポジトリサイトとの連携処理
- get_pkg_hash_value
- pkg_hash.cgi_name=XXX
- get_package
- pkg_get.cgi?name=XXX
- get_pkg_dep
- pkg_dep.cgi?name=XXX&type=json
- get_pkg_list
- pkg_list.cgi?name=XXX
Sqlite関連処理
- create_db_table(name, schema, dbname)
- DBテーブル作成
- exec_sql(sql, dbname)
- SQLの実行
- insert_pkg_data
- packagesテーブルにアイテムを追加
- get_pkg_dara(name, dbname)
- packagesテーブルからnameに適合したアイテムの取得
- get_installed_pkgs_list(dbname)
- packagesテーブルのアイテムをすべて取得
- delete_pkg_data(name, dbname)
- packagesテーブルからnameに適合したアイテムを削除
- register_info(dbname, pkgname, fname)
- install_infoテーブルにアイテムを追加
- get_installed_files(name, dbname)
- install_infoテーブルからnameに適合したアイテムを取得
- delete_installed_file?entries(name, dbname)
- install_infoテーブルからnameに適合したアイテムを削除
- get_installed_packages(dbname)
- install_infoテーブルから重複していないnameのエントリを取得
untar関数について
実装したuntar関数では、tgzファイルの進捗付き解凍を行う。このコマンドは、dbの名前が指定されれば、Sqliteデータベースを作成して、install_pkg_dataでファイル名(パッケージ名に相当)を登録する。また、各ファイルの解凍時に、register_info関数で展開したファイル名を登録していく。この情報は、remove_pkg_file_all関数で使われる
remove_pkg_file_all関数
この関数は、Sqliteデータベースに登録されている情報を使って、パッケージにアンインストールを行う。引数は、パッケージ名とインストールされているドライブレターであることに注意。(本来は、要調整)
get_installed_filesコマンドでファイルリストを取得して、各ファイルと空になったディレクトリを削除する。ファイルの削除後に、delete_install_file_entries関数と、delete_pkg_data関数を呼び出して、データベースを更新する。