Parse cli and stowrc files separately
commit4d1167ffd72c77748a22a8dc1646a0d944be1441
authorCharles LeDoux <charles.a.ledoux@gmail.com>
Sat, 2 Jul 2016 01:07:28 +0000 (1 20:07 -0500)
committerAdam Spiers <stow@adamspiers.org>
Tue, 25 Jun 2019 18:38:25 +0000 (25 19:38 +0100)
treeffe5acf382a6996b32ea86ffd771b09554e3f2bd
parentfeb885fda6ce3e8adb455f9aad638da56722bf10
Parse cli and stowrc files separately

Why:

* We want to selectively apply expansion to:
    * Only options from stowrc files.
    * Only options that take a path.
* This requires ability to:
    * Differentiate cli options from stowrc options
    * Distinguish between individual stowrc options.

This change addresses the need by:

* Options from ARGV and stowrc files are separately parsed, resulting in
  two options hashes.
    * Creating an option hash from stowrc files allows modification of
      specific arguments without having to rely on something like regex
      parsing of the options.

* get_config_file_options modified to return options hash.
    * Uses the same parse_options function that parses ARGV

* Add Hash:Merge to dependencies in order to merge the two option
  hashes.

* process_options() merges the two option hashes.
    * Get option hash for ARGV
    * Get option hash from get_config_file_options().
    * Merge the two hashes with Hash::Merge.
    * Sanitation and checks are ran on the merged options.

* The options -S, -D, and -R are ignored in stowrc files.
    * Due to the way argument parsing happens, the effect of these
      actions is not carried from stowrc into parsing of cli options.
    * It doesn't seem to make sense to put these options in stowrc
      anyway.
Build.PL
META.json
META.yml
bin/stow.in