Skip to content

Instantly share code, notes, and snippets.

@twolfson
Last active October 17, 2015 22:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save twolfson/038392cb5f5526f68c62 to your computer and use it in GitHub Desktop.
Save twolfson/038392cb5f5526f68c62 to your computer and use it in GitHub Desktop.
foundry CLI game plan

There are a lot of moving parts to get foundry onto using CLI's over plugins. This document is to help us coordinate that movement.

Nice to add shortly after:

  • Update screenshot for foundry
  • Update title for foundry-release-spec (currently says plugins)
  • Update title for foundry (currently says plugins)
  • Move keywords from foundry-release-plugin to foundry-release-command (including foundry docs)
    • We use foundry-release as the keyword, no adjustments are required
  • Write foundry-cli
    • Update foundry docs with foundry-cli
    • Add foundry setup to our grunt-init repos
    • Add Releasing section to repos?
      • Consider this as a won't fix for now
  • Update screenshot in foundry to use foundry.cli. We took one but are too tired to handle it now
  • Add support for registerVersion
  • Add resume support by dumping list of commands that were not run/failed to completely run
    • We have progress by running each of our commands (yey)
  • Add major, minor, patch support
    • Going to consider this non-critical (I think we have gotten too complacent with our current semver specified flow)
  • Add --dry-run support to release
  • Add private flag inside foundry itself to skip register/publish when the underlying tool doesn't support it
    • Probably can't do this since git would still require register/publish
    • Yep, won't fix
  • Create Mailchimp newsletter
  • Revisit issues created on foundry
  • Test foundry and foundry-cli on Windows

Out of scope:

  • Move foundry-release-python to Python script so we get nice AST support
    • I keep on getting overwhelmed at how many cases there are for this. Closing for now =/
      • Inline in the setup.py
      • Standalone version.txt file
      • Inline in __init__.py or similar
  • gh-releases support via releases/ dir which has .md + YAML front matter to upload per version
  • Write bower's register function gdi

This is the goal for our project's package.json:

foundry: {
  // Invokes all `--spec-version`, etc commands
  // DEV: While this is more verbose than something like `releaseOverrides`
  //    it is more representative of how we want integrations to go
  //    - Typically append-only
  //    - Prefer a command integration over explicit CLI calls (since the long form is more verbose)
  // DEV: Additionally, we could still roll `releaseOverrides: {updateFiles: []}` which is a full override
  releaseCommands: [
    'foundry-release-git',
    {
      // Same as above
      type: 'release-command',
      command: 'foundry-release-npm'
    },
    {
      type: 'custom-command',
      updateFiles: 'custom-command "$FOUNDRY_VERSION" "$FOUNDRY_MESSAGE"'
    }
  ],
  registerAt: '1.0.0' // Required key (but not required for v3)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment