
# dev-cli

[![npm](https://img.shields.io/npm/v/@leiops/dev-cli.svg?style=flat-square)](https://www.npmjs.com/package/@leiops/dev-cli)

## style guide

everything the user sees in the ops cli (including the docs!) is written in lower case

exceptions are made for proper nouns

removing casing as a concern makes the cli easier to interact with


## development

run npm link to see your changes reflected immediately

in some cases, you may get this error `-bash: ops: command not found`
this is fixed by running `npm i -g`

all code connected to the index folder will be transpiled by Babel

the only features that won't work are `import`/`export` - for those you have to stick with commonjs `require` and `module.exports`

the ops cli is only meant to work on unix systems running node



## wishlist

there is a noticeable lag whenever i run ops anything. clearly some overhead config is being repeated, how can we get rid of that?

tab completion? https://www.npmjs.com/package/omelette

https://github.com/SBoudrias/Inquirer.js

ops stack - get the current stack (will require some kind of cli authentication)
https://stackoverflow.com/questions/20430973/saving-cookie-with-curl-on-linux

ops morning - log the user in, pull from remote, start dev processes, on friday remind about timecard
ops evening - sync code

ops sync - sync up with the current branch, git fetch new branches, prompt for a commit message with the results of git status

ops deploy (major|minor|patch) - update the version number, make sure jenkins is set to gzn, build, make updates
ops build - like the above, except make sure jenkins is set to sbx - I'm sure there's a jenkins api

ops version - related to ops deploy, step the version forward, contribute to docs for that new version

ops clean - delete components that aren't being used anywhere unless they are more than just boilerplate

ops new (component|service|model...) - wire up a new whatever
ops remove (component-name) - count all the uses of the component, prompt the user to confirm, and then remove it
ops move (component-name) - prompt the user for a destination, then move the component

ops git shortcuts:
checkout the current deploy branch
commit feature/fix/chore/refactor
syncw

ops config, automatically find the js repo

## scratchwork

**to do**

* Figure out how to do basic authentication/ssh stuff
* Get bounce command working
* Get timecard command working
* Get root commands to display lists of sub-commands when none are provided
<!-- * Update generate script for React -->
* Write rename script
<!-- * Make sure running "ops config" in postinstall is okay. -->

I wonder if there's a way to make a more explicit router:
```
ops
|
|_____  ...
|     |
g    dev
|
|_____
|
component

ops {

	_ {
		dev, dist, greet, version, stack...
	}

	generate {
		component {
			root, common...
		}
	}

	dev {

	}
}

```

## config schema

```js

{
	// path to the ops client folder where
	// the package json config lives
	ops_client_path: String, // no default

	// timecard information
	timecard: {
		constants: {
			// ...
		} // {}
		data: {
		} // {}
	}

	// the user's full name
	name: {
		full: String,
		first: String,
		last: String
	}, // {}

	// text editor to open new files in, one of "Sublime Text", "Atom"
	preferred_editor: String, // "Atom"
	// slack webhooks urls
	slack_webhook_url: {
		qa: String // no default
	}
}

```
