Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
FeedHenry CLI, the Command Line Interface to FeedHenry
JavaScript

Merge pull request #116 from feedhenry/beta

1.0.0 release: LCM support, FHC rewrite & modularisation.
latest commit db70f5dec5
@cianclarke cianclarke authored
Failed to load latest commit information.
bin DRY-up compeltion into 3rd-party module & ensure it works as expected
doc
lib Merge branch 'master' into beta
test Clear up some FH2 regressions introduced new & old
.gitignore Merge lifecycle latest & move environment alias command to new style
.jshintrc Hint, fix argUtils numeric aliasing
CHANGELOG.md changelog
FH3.md Move ssh-keys and user-keys into a keys command
Gruntfile.js Add README.md to outputted builds
LICENSE Adding LICENSE file
README.md Document use as a module in more detail
fhc Clear up some FH2 regressions introduced new & old
package.json 1.0.0 release, Unify changelog entries & move to .MD

README.md

FHC - FeedHenry Command Line Interface NPM version

FeedHenry CLI, the command line interface to FeedHenry.

Installation

fhc should now be available your command line.
fhc -v will tell you what version of fhc you have installed.

Finally, install FHC bash completion: fhc completion >> ~/.bashrc (or ~/.zshrc)

Usage

From the Command Line

To see the list of commands available, just run fhc.
See fhc help for general help, or fhc help <someCommand> for help on a specific command.

To get started with fhc, set the FeedHenry target and then login:

$ fhc target https://apps.feedhenry.com

$ fhc login <your-email-address> <your-password>

To list your projects, use:

$ fhc projects

To create an app from a git repository use:

fhc app create --project=SomeProjectId --title=WelcomeApp git://github.com/feedhenry-templates/welcome-app.git

As a Node.js Module

You can also use fh-fhc as a Node.js module in your scripts. This is useful for scripting automated tests, mobile app client builds and cloud deploys. First, install & add it to your project dependencies by doing npm install --save fh-fhc from your project root.
Then, you can require it in your code like so:

var fhc = require('./lib/fhc');
fhc.load(function(err){
  if (err){
    // Something went wrong
  }
  // FHC started up OK - we can now perform commands, like listing projects:
  fhc.projects({_ : []}, function(err, projects){
    if (err){
      // Handle error
    }
    console.log(projects);
  });
});

Some commands require params to be passed in - these are typically passed like so:

fhc.app.create({ title : 'Some title', project : 'someProjectId'}, function(){
});

Older fhc commands still pass arguments in an ordered array, as below. The environment is still specified outside the array.

fhc.app.logs({_ : ['projectId', 'appId'], env : 'dev' }, function(){
});

Extending

Version 1.0 of fh-fhc updates the structure of commands:

lib
  cmd # all commands go here
    common # stuff which applies to both versions of feedhenry
    fh2    # feedhenry 2-specific commands go here (e.g. `account`)
    fh3    # feedhenry 3 specific commands go here (e.g. `project`)
  internal # internal piping goes here

The common, fh2 and fh3 directory structure doesn't get exposed to the user, but everything underneath does - meaning we can have a command lib/cmd/common/fooGroup/barCommand.js, another lib/cmd/common/fh3/fooGroup/anotherCommand.js, and be able to run both fhc fooGroup barCommand and fhc fooGroup anotherCommand.
Internal commands in the internal directory are hidden from help output, but are still call-able.

Writing new commands is a little different than before. Old commands export a function - new style commands export an object.

Commands are DRY'd up substantially - see App List lib/cmd/fh3/app/list.js as an example of what a command definition looks like. Using the 'demand' syntax, yargs look after all all validation - you don't need to worry about it. Commands can be DRY'd up even more if they're very similar - e.g. app start. This extends from a base class - anything with an _ prefix doesn't go into the command tree.

There's no longer need to require() new commands in many different places - no need to require() new commands at all, just put them in the relevant tree structure within in lib/cmd. Tests are turbo'd, nock for mocks, coverage is at least a little better than before.

Setting a Proxy Server

fhc fhcfg set proxy http://host:port
# eg:
fhc fhcfg set proxy http://127.0.0.1:8080

Tests

grunt test

Something went wrong with that request. Please try again.