[Libosinfo] [PATCH 07/10] tools, install-script: Allow arg to be a media file
Christophe Fergeau
cfergeau at redhat.com
Tue May 12 12:37:43 UTC 2015
On Thu, May 07, 2015 at 05:36:42PM +0100, Zeeshan Ali (Khattak) wrote:
> Now that we have API to generate scripts for specific media and since
> its the recommended path to generating scripts, let's allow users of
"it is", not "its"
> this tool to provide an installer or live media as argument.
> ---
> tools/osinfo-install-script.c | 56 ++++++++++++++++++++++++++++++-------------
> 1 file changed, 40 insertions(+), 16 deletions(-)
>
> diff --git a/tools/osinfo-install-script.c b/tools/osinfo-install-script.c
> index 5d5f0e2..96f7bc4 100644
> --- a/tools/osinfo-install-script.c
> +++ b/tools/osinfo-install-script.c
> @@ -220,7 +220,7 @@ static gboolean list_script_inj_method(OsinfoOs *os)
> }
>
>
> -static gboolean generate_script(OsinfoOs *os)
> +static gboolean generate_script(OsinfoOs *os, OsinfoMedia *media)
> {
> OsinfoInstallScriptList *scripts = osinfo_os_get_install_script_list(os);
> OsinfoInstallScriptList *profile_scripts;
> @@ -253,12 +253,21 @@ static gboolean generate_script(OsinfoOs *os)
> if (prefix)
> osinfo_install_script_set_output_prefix(script, prefix);
>
> - osinfo_install_script_generate_output(script,
> - os,
> - config,
> - dir,
> - NULL,
> - &error);
> + if (media != NULL) {
> + osinfo_install_script_generate_output_for_media(script,
> + media,
> + config,
> + dir,
> + NULL,
> + &error);
> + } else {
> + osinfo_install_script_generate_output(script,
> + os,
> + config,
> + dir,
> + NULL,
> + &error);
> + }
> if (error != NULL) {
> g_printerr(_("Unable to generate install script: %s\n"),
> error->message ? error->message : "unknown");
> @@ -287,6 +296,7 @@ gint main(gint argc, gchar **argv)
> OsinfoLoader *loader = NULL;
> OsinfoDb *db = NULL;
> OsinfoOs *os = NULL;
> + OsinfoMedia *media = NULL;
> gint ret = 0;
>
> setlocale(LC_ALL, "");
> @@ -338,11 +348,22 @@ gint main(gint argc, gchar **argv)
> }
>
> db = osinfo_loader_get_db(loader);
> - os = find_os(db, argv[1]);
> - if (!os) {
> - g_printerr(_("Error finding OS: %s\n"), argv[1]);
> - ret = -4;
> - goto EXIT;
> +
> + /* First assume its a path to a media that can be indentified */
s/its/it is/
s/indentified/identified/
> + media = osinfo_media_create_from_location(argv[1], NULL, NULL);
> + if (media != NULL)
> + if (!osinfo_db_identify_media (db, media))
> + media = NULL;
You are leaking 'media' here.
> +
> + if (media == NULL) {
> + os = find_os(db, argv[1]);
> + if (!os) {
> + g_printerr(_("Error finding OS: %s\n"), argv[1]);
> + ret = -4;
> + goto EXIT;
> + }
> + } else {
> + os = osinfo_media_get_os (media);
> }
>
> if (list_config) {
> @@ -361,7 +382,7 @@ gint main(gint argc, gchar **argv)
> goto EXIT;
> }
> } else {
> - if (!generate_script(os)) {
> + if (!generate_script(os, media)) {
> ret = -5;
> goto EXIT;
> }
> @@ -370,6 +391,8 @@ gint main(gint argc, gchar **argv)
> EXIT:
> if (config)
> g_object_unref(config);
> + if (media != NULL)
> + g_object_unref(media);
> g_clear_error(&error);
> g_clear_object(&loader);
> g_option_context_free(context);
> @@ -386,13 +409,14 @@ osinfo-install-script - generate a script for automated installation
>
> =head1 SYNOPSIS
>
> -osinfo-install-script [OPTIONS...] OS-ID
> +osinfo-install-script [OPTIONS...] MEDIA-FILE|OS-ID
>
> =head1 DESCRIPTION
>
> Generate a script suitable for performing an automated installation
> -of C<OS-ID>. C<OS-ID> should be a URI identifying the operating
> -system, or its short ID.
> +for C<MEDIA_FILE> or C<OS-ID>. C<MEDIA_FILE> should be a path to an
I'd tend to keep "of <MEDIA_FILES>" rather than "for", but very not
sure, both sound acceptable to me.
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libosinfo/attachments/20150512/d540acdf/attachment.sig>
More information about the Libosinfo
mailing list