-*- M2 -*-

-- new option called Configuration to newPackage, loadPackage, and
-- needsPackage, containing options for the package itself

newPackage( "Foo",
     Configuration => {
     	  "filename" => "bar",
	  "precision" => 30
	  },
     ...
     }

-- The value of the option should be a list or option table of options, not
-- involving symbols private to the package, since it's provided before.

-- The configuration provided (if it's nonempty) will be stashed in the file

     applicationDirectory() | "init-Foo.m2"

-- its name is stored in the package object under the key "configuration file name"
-- if the package is run and the file does not exist.

-- This file will be overwritten if a future version of the package has 
-- different options, but the values will be retained and a backup file
-- will be made.

-- the values there will be overriden by the values presented to loadPackage or
-- needsPackage, and they both override the default values presented to
-- newPackage.  (All keys provided must be present in newPackage.)

-- the user and the code in the package can access the configuration options
-- this way:

     (options Foo).Configuration

-- newPackage() will arrange for it to be present while the package is loading.

if -q is on commandLine don't load user's configuration settings, and don't
create a file!

