# Paths

Gemforge needs to know where to find your contract source code, library imports, build artifacts, and where to place all generated output.

The configuration options:

// gemforge.config.cjs
module.exports = {
  ...
  paths: {
    // contract built artifacts folder
    artifacts: 'out',
    // source files
    src: {
      // file patterns to include in facet parsing
      facets: [
        // include all .sol files in the facets directory ending "Facet"
        'src/facets/*Facet.sol'
      ],
    },
    // folders for gemforge-generated files
    generated: {
      // output folder for generated .sol files
      solidity: 'src/generated', 
      // output folder for support scripts and files
      support: '.gemforge',
      // deployments JSON file
      deployments: 'gemforge.deployments.json',
    },
    // library files
    lib: {
      // diamond library
      diamond: 'lib/diamond-2-hardhat',
    }
  },
  ...
}

# Generated files

The generated.solidity folder path should be inside the same folder containing your project's smart contracts so that everything gets compiled together.

The generated.solidity folder path is for holding files which are used by Gemforge internally.

The generated.deployments file will contain the details of deployed Diamond contracts, indexed by network chain id. You may wish to check this file into version control in order to store these details for consumption elsewhere.

# Library files

The lib.diamond folder path should point to where the contents of the diamond-2-hardhat repository can be found. This is required for the code which Gemforge generates.