ifc

module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2026 License: Apache-2.0

README

IFC7 Logo

[Ifc]


GitHub License

One simple tool for all your API and Schema needs.


Installation

With Go 1.26 installed, make install will build and copy the ifc binary to your $GOPATH/bin directory.


Quickstart

  1. At the root of your project run ifc init --interactive. This will:

    • Create an ifc.yaml file defining the interfaces your project cares about
    • Create a .ifc folder for storing local copies of interfaces
    • Add the appropriate lines to your .gitignore file, if needed
    • Scan your repo for interfaces to manage
  2. Use an existing interface in your project, for example: ifc use ifc7.dev/orgs/ifc7/restapi

  3. Now fetch the latest copies of interfaces you are using: ifc fetch You will have a local copy of the external interface you are using in .ifc/ifc7.dev/orgs/ifc7/restapi/latest.yaml

    For owned interfaces, update working-tree files from the fetched manifest with ifc checkout.

  4. If you have an account at ifc7.dev, you can push local copies of interfaces you own to the hub: ifc login && ifc push


Commands

Use ifc --help for detailed explanations of commands.

ifc init - Initialize your repository with an ifc.yaml file.

ifc login - Get credentials for the ifc7.dev interface hub.

ifc fetch - Fetch copies of external interfaces you are tracking from a remote hub.

ifc commit - Commit changes to local interface manifest.

ifc push - Push the latest copies of interfaces managed by this project to a remote hub.

ifc use - Use an externally owned interface in your project.

ifc add - Add a locally owned interface to your project.

ifc status - Show whether owned interface files differ from the local manifest.

ifc diff <name|slug> - Print a unified diff of an owned interface file vs the latest revision in the local manifest.

ifc checkout [name|slug]... - Update owned interface files on disk from the latest revision in the local manifest (use after ifc fetch; --force overwrites local edits).

ifc scan [path] - Find untracked OpenAPI / JSON Schema files and add them to the project. Optional path limits the search to a subdirectory.

ifc lint [name|path]... - Lint owned interfaces or specification files with the default linter plugin.

ifc compare <before> <after> - Compare two specifications for breaking changes with the default change-detector plugin.

Coming Soon:

ifc gen - Generate code from an interface.


Contributing

Directories

Path Synopsis
cmd
ifc command
client
Package client provides primitives to interact with the openapi HTTP API.
Package client provides primitives to interact with the openapi HTTP API.
pkg/auth
Package auth provides primitives to interact with the openapi HTTP API.
Package auth provides primitives to interact with the openapi HTTP API.
pkg/fileio
Package fileio provides convenient functions for reading and writing files and directories to a filesystem They may not be the most efficient implementations but the focus is on ease of use
Package fileio provides convenient functions for reading and writing files and directories to a filesystem They may not be the most efficient implementations but the focus is on ease of use
pkg/testutils
Package testutils provides utilities for testing SEVEN projects
Package testutils provides utilities for testing SEVEN projects
project
Package project holds the state of an ifc7 managed project and defines command line operations that can be performed on it.
Package project holds the state of an ifc7 managed project and defines command line operations that can be performed on it.
tui
ui
Package ui provides shared terminal styling aligned with the ifc-web brand.
Package ui provides shared terminal styling aligned with the ifc-web brand.
pkg
plugins/contract
Package contract defines the lint and compare plugin input/output types matching the published JSON Schema contracts at https://ifc7.dev/schemas/plugins/v0/.
Package contract defines the lint and compare plugin input/output types matching the published JSON Schema contracts at https://ifc7.dev/schemas/plugins/v0/.
plugins/jsonschema/compare
Package compare implements the default JSON Schema change-detector plugin.
Package compare implements the default JSON Schema change-detector plugin.
plugins/jsonschema/lint
Package lint implements the default JSON Schema linter plugin.
Package lint implements the default JSON Schema linter plugin.
plugins/openapi/compare
Package compare implements the default OpenAPI change-detector plugin.
Package compare implements the default OpenAPI change-detector plugin.
plugins/openapi/lint
Package lint implements the default OpenAPI linter plugin.
Package lint implements the default OpenAPI linter plugin.
plugins/runner
Package runner resolves and invokes default lint/compare plugins by interface type.
Package runner resolves and invokes default lint/compare plugins by interface type.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL