Skip to content

Deprecated the usage of multiple variants in one command line argument#1094

Merged
morozov merged 1 commit intophpbrew:masterfrom
morozov:variant-parser
Dec 14, 2019
Merged

Deprecated the usage of multiple variants in one command line argument#1094
morozov merged 1 commit intophpbrew:masterfrom
morozov:variant-parser

Conversation

@morozov
Copy link
Contributor

@morozov morozov commented Dec 14, 2019

The syntax that allows specifying multiple variants in one CLI argument has the following downsides:

  1. It doesn't solve any real problem. The same configuration can be expressed using one variant per argument.
  2. The resulting syntax is ambiguous. What does +openssl=/usr-mysql mean? Is -mysql part of the openssl prefix or it disables the mysql variant?
    var_dump(
        VariantParser::parseCommandArguments(array('+openssl=/usr-mysql'))
    );
    /*
    array(3) {
      'enabled_variants' =>
      array(1) {
        'openssl' =>
        string(10) "/usr-mysql"
      }
      'disabled_variants' =>
      array(0) {
      }
      'extra_options' =>
      array(0) {
      }
    }
    */
  3. The parser is unnecessarily complex and doesn't handle syntax errors properly:
    var_dump(
        VariantParser::parseCommandArguments(array('+mysql followed+ by- *garbage'))
    );
    /*
    array(3) {
      'enabled_variants' =>
      array(1) {
        'mysql' =>
        bool(true)
      }
      'disabled_variants' =>
      array(0) {
      }
      'extra_options' =>
      array(0) {
      }
    }
    */
  4. The current implementation allows to specify path for a disabled variant which won't be used down the line:
    var_dump(
        VariantParser::parseCommandArguments(array('-openssl=/blah/blah'))
    );
    /*
    array(3) {
      'enabled_variants' =>
      array(0) {
      }
      'disabled_variants' =>
      array(1) {
        'openssl' =>
        string(10) "/blah/blah"
      }
      'extra_options' =>
      array(0) {
      }
    }
    */

@morozov morozov added this to the Release 1.25.0 milestone Dec 14, 2019
@morozov morozov self-assigned this Dec 14, 2019
@morozov morozov merged commit bca0d84 into phpbrew:master Dec 14, 2019
@morozov morozov deleted the variant-parser branch December 14, 2019 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant