app-manager --update and --setup are documented to take URIs but they are not treated as such
authorJ. Ali Harlow <ali@juiblex.co.uk>
Wed Jul 15 16:04:47 2020 +0100 (2020-07-15)
changeset 9871127797ca73
parent 97 55ae076f393c
child 99 0121592e2512
app-manager --update and --setup are documented to take URIs but they are not treated as such
app-manager/setup.c
app-manager/update.c
plover-gtk/transactionhelper.c
plover-gtk/transactionhelper.h
     1.1 --- a/app-manager/setup.c	Tue Jul 14 18:03:26 2020 +0100
     1.2 +++ b/app-manager/setup.c	Wed Jul 15 16:04:47 2020 +0100
     1.3 @@ -38,7 +38,7 @@
     1.4      if (!helper)
     1.5      {
     1.6  	helper=plover_transaction_helper_new(ui);
     1.7 -	plover_transaction_helper_set_base(helper,base);
     1.8 +	plover_transaction_helper_set_base_uri(helper,base);
     1.9  	prefix=plover_transaction_helper_get_prefix(helper,&error);
    1.10  	if (error)
    1.11  	    g_clear_error(&error);
     2.1 --- a/app-manager/update.c	Tue Jul 14 18:03:26 2020 +0100
     2.2 +++ b/app-manager/update.c	Wed Jul 15 16:04:47 2020 +0100
     2.3 @@ -39,7 +39,7 @@
     2.4      if (!helper)
     2.5      {
     2.6  	helper=plover_transaction_helper_new(ui);
     2.7 -	plover_transaction_helper_set_base(helper,base);
     2.8 +	plover_transaction_helper_set_base_uri(helper,base);
     2.9  	prefix=plover_transaction_helper_get_prefix(helper,&error);
    2.10  	if (error)
    2.11  	    g_clear_error(&error);
     3.1 --- a/plover-gtk/transactionhelper.c	Tue Jul 14 18:03:26 2020 +0100
     3.2 +++ b/plover-gtk/transactionhelper.c	Wed Jul 15 16:04:47 2020 +0100
     3.3 @@ -68,6 +68,7 @@
     3.4      g_free(priv->default_prefix);
     3.5      g_free(helper->error_primary_text);
     3.6      g_free(helper->base);
     3.7 +    g_free(helper->base_uri);
     3.8      g_free(helper->unsatisfied);
     3.9      if (helper->comps)
    3.10  	plover_comps_free(helper->comps);
    3.11 @@ -583,12 +584,12 @@
    3.12    plover_transaction_helper_get_upstream(PloverTransactionHelper *helper,
    3.13    GError **error)
    3.14  {
    3.15 -    const char *base;
    3.16 +    const char *base_uri;
    3.17      g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
    3.18      if (!helper->upstream)
    3.19      {
    3.20 -	base=plover_transaction_helper_get_base(helper);
    3.21 -	helper->upstream=plover_repository_new_from_yum(base,error);
    3.22 +	base_uri=plover_transaction_helper_get_base_uri(helper);
    3.23 +	helper->upstream=plover_repository_new_from_yum_uri(base_uri,error);
    3.24      }
    3.25      return helper->upstream;
    3.26  }
    3.27 @@ -602,18 +603,53 @@
    3.28      helper->upstream=g_object_ref(upstream);
    3.29  }
    3.30  
    3.31 +const char *
    3.32 +  plover_transaction_helper_get_base_uri(PloverTransactionHelper *helper)
    3.33 +{
    3.34 +    g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
    3.35 +    return helper->base_uri;
    3.36 +}
    3.37 +
    3.38 +static gboolean plover_gtk__uri_validate(const char *uri)
    3.39 +{
    3.40 +    char *s;
    3.41 +    s=razor_path_relative_to_uri(uri,".",NULL);
    3.42 +    free(s);
    3.43 +    return !!s;
    3.44 +}
    3.45 +
    3.46 +void plover_transaction_helper_set_base_uri(PloverTransactionHelper *helper,
    3.47 +  const char *base_uri)
    3.48 +{
    3.49 +    g_return_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper));
    3.50 +    g_return_if_fail(helper->transactions == NULL);
    3.51 +    g_return_if_fail(plover_gtk__uri_validate(base_uri));
    3.52 +    g_free(helper->base_uri);
    3.53 +    helper->base_uri=g_strdup(base_uri);
    3.54 +    g_free(helper->base);
    3.55 +    helper->base=NULL;
    3.56 +}
    3.57 +
    3.58  const char *plover_transaction_helper_get_base(PloverTransactionHelper *helper)
    3.59  {
    3.60      g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
    3.61 +    if (helper->base_uri && !helper->base)
    3.62 +	helper->base=razor_path_from_uri(helper->base_uri,NULL);
    3.63      return helper->base;
    3.64  }
    3.65  
    3.66  void plover_transaction_helper_set_base(PloverTransactionHelper *helper,
    3.67    const char *base)
    3.68  {
    3.69 +    gchar *base_uri;
    3.70      g_return_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper));
    3.71      g_return_if_fail(helper->transactions == NULL);
    3.72 -    g_free(helper->base);
    3.73 +    if (base)
    3.74 +	base_uri=razor_path_to_uri(base);
    3.75 +    else
    3.76 +	base_uri=NULL;
    3.77 +    plover_transaction_helper_set_base_uri(helper,base_uri);
    3.78 +    g_free(base_uri);
    3.79      helper->base=g_strdup(base);
    3.80  }
    3.81  
    3.82 @@ -623,13 +659,10 @@
    3.83  {
    3.84      gchar *s;
    3.85      g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
    3.86 -    if (!helper->comps && helper->base)
    3.87 +    if (!helper->comps && helper->base_uri)
    3.88      {
    3.89 -	s=g_strconcat(helper->base,"/repodata/comps.xml",NULL);
    3.90 -	helper->comps=plover_comps_new_from_file(s);
    3.91 -	if (!helper->comps)
    3.92 -	    g_set_error(error,PLOVER_GENERAL_ERROR,
    3.93 -	      PLOVER_GENERAL_ERROR_FAILED,"%s: %s",s,g_strerror(errno));
    3.94 +	s=g_strconcat(helper->base_uri,"/repodata/comps.xml",NULL);
    3.95 +	helper->comps=plover_comps_new_from_uri(s,error);
    3.96  	g_free(s);
    3.97      }
    3.98      return helper->comps;
    3.99 @@ -643,9 +676,9 @@
   3.100      struct comps *comps;
   3.101      PloverTransactionHelperPrivate *priv;
   3.102      g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
   3.103 -    g_return_val_if_fail(helper->base != NULL || plover_transaction_helper_get_installed(helper) != NULL,NULL);
   3.104 +    g_return_val_if_fail(helper->base_uri != NULL || plover_transaction_helper_get_installed(helper) != NULL,NULL);
   3.105      priv=PLOVER_TRANSACTION_HELPER_GET_PRIVATE(helper);
   3.106 -    if (helper->base)
   3.107 +    if (helper->base_uri)
   3.108      {
   3.109  	comps=plover_transaction_helper_get_comps(helper,error);
   3.110  	if (!comps)
   3.111 @@ -951,7 +984,7 @@
   3.112    GError **error)
   3.113  {
   3.114      gboolean ok;
   3.115 -    const char *base,*prefix;
   3.116 +    const char *base_uri,*prefix;
   3.117      GError *tmp_error=NULL;
   3.118      PloverTransaction *transaction;
   3.119      g_return_val_if_fail(PLOVER_IS_TRANSACTION_HELPER(helper),NULL);
   3.120 @@ -969,8 +1002,9 @@
   3.121  	ok=plover_transaction_set_upstream(transaction,helper->upstream,error);
   3.122      else
   3.123      {
   3.124 -	base=plover_transaction_helper_get_base(helper);
   3.125 -	ok=plover_transaction_set_upstream_from_yum(transaction,base,error);
   3.126 +	base_uri=plover_transaction_helper_get_base_uri(helper);
   3.127 +	ok=plover_transaction_set_upstream_from_yum_uri(transaction,base_uri,
   3.128 +	  error);
   3.129      }
   3.130      if (!ok)
   3.131      {
     4.1 --- a/plover-gtk/transactionhelper.h	Tue Jul 14 18:03:26 2020 +0100
     4.2 +++ b/plover-gtk/transactionhelper.h	Wed Jul 15 16:04:47 2020 +0100
     4.3 @@ -36,7 +36,7 @@
     4.4      PloverPackageSet *alternate_installed,*installed;
     4.5      PloverRepository *upstream;
     4.6      PloverPackageSet *relocated_upstream;
     4.7 -    gchar *base;
     4.8 +    gchar *base_uri,*base;
     4.9      gchar *unsatisfied;
    4.10      struct comps *comps;
    4.11      gboolean check_vendor;
    4.12 @@ -67,6 +67,10 @@
    4.13    GError **error);
    4.14  void plover_transaction_helper_set_upstream(PloverTransactionHelper *helper,
    4.15    PloverRepository *upstream);
    4.16 +const char *
    4.17 +  plover_transaction_helper_get_base_uri(PloverTransactionHelper *helper);
    4.18 +void plover_transaction_helper_set_base_uri(PloverTransactionHelper *helper,
    4.19 +  const char *base);
    4.20  const char *plover_transaction_helper_get_base(PloverTransactionHelper *helper);
    4.21  void plover_transaction_helper_set_base(PloverTransactionHelper *helper,
    4.22    const char *base);