GithubHelp home page GithubHelp logo

heroku / heroku-apps Goto Github PK

View Code? Open in Web Editor NEW
19.0 103.0 26.0 1.35 MB

Heroku Core CLI Plugin for managing Heroku apps

Home Page: https://cli.heroku.com

License: ISC License

JavaScript 99.80% Shell 0.20%
heroku heroku-cli-plugin

heroku-apps's Introduction

heroku-apps Circle CI

Code Climate npm version License Greenkeeper badge

This core plugin comes preinstalled to the Heroku CLI.

$ npm install -g @heroku-cli/plugin-apps
$ heroku COMMAND
running command...
$ heroku (-v|--version|version)
@heroku-cli/plugin-apps/2.6.0 linux-x64 node-v10.4.1
$ heroku --help [COMMAND]
USAGE
  $ heroku COMMAND
...

Command Topics

heroku-apps's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heroku-apps's Issues

About deply rails and modify nodejs version

my rails app use the javascript es6 syntax, i found default install nodejs v6 ,

I saw your doc , the url is https://devcenter.heroku.com/articles/ruby-support#installed-binaries


Once you have done this you’ll need a package.json file in the root of your app. For example to install version 6.2.2 your package.json could look like this: { "engines" : { "node": "6.2.2" } }

Commit to git:

$ git add pacakage.json

$ git commit -m 'specify node version'

Now the next time you deploy your Ruby application will use Node version 6.2.2.


I modiy package.json file with

{ "name": "shopa", "private": true, "dependencies": {}, "engines": { "node": "8.5.0" } }

but i push it , it still nodejs v6

because I am a free user? I can't modify nodejs version?

info --shell output doesnt match docs

heroku info myapp --shell doesnt produce the same results as the help documentation.

The help docs are correct and would be usable in a bash shell. The actual results are not easily usable for some fields.

Any fields that should have an _ are being replaced by a - because of the S(k).slugify().

const S = require('string')
S('git_url').slugify()
{ [String: 'git-url'] s: 'git-url', orig: 'git-url', length: [Getter] }

Example below (with personal info removed).

$ heroku help info myapp --shell
Usage: heroku info

show detailed app information

-a, --app APP # app to run command against
-j, --json
-r, --remote REMOTE # git remote of app to run command against
-s, --shell # output more shell friendly key/value pairs

Examples:

$ heroku apps:info
=== example
Git URL: https://git.heroku.com/example.git
Repo Size: 5M
...

$ heroku apps:info --shell
git_url=https://git.heroku.com/example.git
repo_size=5000000
...

$ heroku info myapp --shell
create-status=undefined
git-url=https://git.heroku.com/myapp.git
web-url=https://myapp.herokuapp.com/
repo-size=13 MB
slug-size=57 MB
region=us
dynos={}
stack=cedar

heroku stack is using deprecated V2 endpoint.

$ hs stack -a foobar
=== foobar Available Stacks
  heroku-16
* cedar-14

 !    The Heroku Legacy Platform API will be Sunset on April 15th 2017. Please update your client access or the Heroku CLI to the latest version. See https://blog.heroku.com/sunsetting_heroku_s_legacy_platform_api_v2 for more details.

heroku buildpacks output colour makes text impossible to read

After running a heroku buildpacks:{add,remove} foo command, the new list of buildpacks printed displays fine. However if I run just heroku buildpacks the buildpacks list is the same colour as the terminal background.

Either commenting out the cli.styledHeader() call here:

cli.styledHeader(`${context.app} Buildpack URL${buildpacks.length > 1 ? 's' : ''}`)

Or replacing the cli.color.dim() and cli.color.bold()calls here:
https://github.com/heroku/heroku-cli-util/blob/1e6da98444ddde1a8fcd5a28d73f820ab575405d/lib/styled.js#L38

...makes the text visible again - which makes me think it's an issue with the colour reset.

Digging around found chalk/chalk#145, however that seems to be affecting Bash on Windows which I'm not using. Even if it's a Windows or Chalk bug, perhaps it's worth not using dim/bold in too many places for now, and sticking just to colours (which work fine)?

This was using:
heroku-cli/6.12.8-ec1843e (windows-x64) node-v8.1.4
ConEmu build 170517
MSYS2
Windows 10 Pro x64 build 15063.483

Screenshot:
heroku-buildpacks-colour-bug

heroku buildpacks:add --index 0

I feel like heroku buildpacks:add --index 0 heroku/ruby should add the buildpack to the top of the list. Right now it seems to be putting it at the end:

~/s/g/h/toolbelt-build-server:(heroku +2) heroku buildpacks:add heroku/ruby --index 0
Buildpack added. Next release on cli-build will use:
  1. https://github.com/ddollar/heroku-buildpack-multi.git
  2. heroku/ruby
Run git push heroku master to create a new release using these buildpacks.

Thoughts @ransombriggs?

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

request: buildpacks:edit

It'd be great if there was a buildpacks:edit command that was similar to kubectl edit and other similar commands:

  1. fetch the current list of buildpacks
  2. open $EDITOR with that list, one per line
  3. when editor exits, set the app's buildpacks to the written list

Inconsistent quoting in output of `config -s`

heroku config -s currently gives output like:

HEROKU_APP_NAME=foo-bar
HEROKU_RELEASE_CREATED_AT='2016-09-29T11:05:02Z'
HEROKU_RELEASE_VERSION=v58
NEW_RELIC_CONFIG_FILE='newrelic.ini'
WEB_CONCURRENCY=3

ie: some values are quoted with ', others not.

Whilst the unquoted entries don't technically need quotes, I think it would be more consistent to just always include the quotes around each value.

Currently the npm package shell-escape is used:

cli.log(`${k}=${shellescape([v])}`)

...which doesn't have a way to force quotes:
https://github.com/xxorax/node-shell-escape/blob/master/shell-escape.js

Paranoid apps with two remotes

Took a minute today to figure out why I couldn't enable paranoid on an app that has two remotes. One syntax worked (-a) but the other didn't (-r). Maybe this is expected, but I figured I'd share it just in case it's a bug:
v5.1.1:/heroku/semver.io (master)$ heroku labs:enable paranoid -r production
▸ Couldn't find that feature.
v5.1.1:/heroku/semver.io (master)$ heroku labs:enable paranoid -a semver.io
Enabling paranoid for semver.io... done

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

apps:info serializes a pipeline-coupling as the pipeline key

If you look at the serialization of heroku apps:info APP --json, you may think the serialization is confusing.

e.g.:

> heroku apps:info APP --json
   ...
  "pipeline": {
    "created_at": "2016-11-23T14:32:18+00:00",
    "app": {
      "id": APP_ID
    },
    "id": PIPELINE_COUPLING_ID,
    "pipeline": {
      "id": PIPELINE_ID,
      "name": "kolkrabbi"
    },
    "stage": "staging",
    "updated_at": "2016-11-23T14:32:18+00:00"
  }
}

Notice there is a pipeline nested in the main pipeline key. I personally think this is confusing, and I'd recommend changing the main pipeline key to pipeline_coupling instead.

Retry release output

Hey,

It can take a few seconds before the release output is actually made available (distributed systems, ...).
Before that happens, if we try fetching that output here, we'll get a 404 and send an error back.

We'd need to be able to retry a few times when that 404 happens.
I've been looking into the got library to try to achieve that. But it appears it only handles retries for standard requests, not for streaming ones. As seen here.

Am I missing something here? Is this an issue in the got project that needs fixing?

Unexpected token ...

I just installed the heroku toolbelt and ran heroku create on a fresh node app, but now I receive this error: Unexpected token .... It seems like the spread operator isn't supported.

~/.heroku/node_modules/heroku-app is version 1.5.1

~/.heroku has node-4.2.1-darwin-x86, and I noticed this lib is testing only 5.4 in travis.

Full error:

$ heroku create
heroku-cli: Installing core plugins.../Users/awright/.heroku/node_modules/heroku-apps/commands/features/index.js:17
    let longest = Math.max(...features.map(f => f.name.length));
                           ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:414:25)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/awright/.heroku/node_modules/heroku-apps/index.js:45:3)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at [eval]:2:15
    at Object.exports.runInThisContext (vm.js:54:17)
heroku-cli: Installing core plugins (retrying).../Users/awright/.heroku/node_modules/heroku-apps/commands/features/index.js:17
    let longest = Math.max(...features.map(f => f.name.length));
                           ^^^

Domains commands aren't aware of SSL Endpoints

The message output by domains:add covers the default case but is very confusing for customers who need to use the SSL Endpoint add-on for whatever reason (usually PCI compliance, custom TLS versions, custom ciphers or legacy browser support).

 Configure your app's DNS provider to point to the DNS Target
 β–Έ    cloudsense.com.herokudns.com

Ideally, the command would check for the presence of an SSL Endpoint add-on and show that as an option. I'll try to put in a PR for this if I have time. Example ticket: https://support.heroku.com/tickets/563512?t=1521125689

Unable to debug and deploy my APP.

I have been having problems deploying an app with heroku. More details here. Whenever I try to launch it on heroku I get a series of obscure errors I cannot resolve. For example I know that code=H10 is because the APP is crashing, however it does not give me much to go on fixing:

2017-01-24T14:59:26.356757+00:00 app[web.1]:     at Module._compile (module.js:542:28)
2017-01-24T14:59:26.356757+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-24T14:59:26.356758+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-24T14:59:26.356759+00:00 app[web.1]:     at tryModuleLoad (module.js:446:12)
2017-01-24T14:59:26.356760+00:00 app[web.1]:     at Function.Module._load (module.js:438:3)
2017-01-24T14:59:26.356760+00:00 app[web.1]:     at Module.runMain (module.js:604:10)
2017-01-24T14:59:26.356761+00:00 app[web.1]:     at run (bootstrap_node.js:394:7)
2017-01-24T14:59:26.356761+00:00 app[web.1]:     at startup (bootstrap_node.js:149:9)
2017-01-24T14:59:26.356762+00:00 app[web.1]:     at bootstrap_node.js:509:3
2017-01-24T14:59:26.438789+00:00 heroku[web.1]: State changed from starting to crashed
2017-01-24T15:00:44.167922+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=hjk-app.herokuapp.com request_id=19e88153-e4a8-4cc8-8326-14ad5aa46c5d fwd="94.119.64.4" dyno= connect= service= status=503 bytes=
2017-01-24T15:00:44.970799+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=hjk-app.herokuapp.com request_id=3e5ea79e-8f91-4b33-a912-a2910a7f5bb8 fwd="94.119.64.4" dyno= connect= service= status=503 bytes=
2017-01-24T15:03:34.125258+00:00 heroku[slug-compiler]: Slug compilation started
2017-01-24T15:03:34.125268+00:00 heroku[slug-compiler]: Slug compilation finished
2017-01-24T15:03:34.446039+00:00 heroku[web.1]: State changed from crashed to starting
2017-01-24T15:03:37.639160+00:00 heroku[web.1]: Starting process with command `node server.prod.js`
2017-01-24T15:03:40.427085+00:00 heroku[web.1]: Process exited with status 1
2017-01-24T15:03:40.330132+00:00 app[web.1]: App is running, server is listening on port 34845
2017-01-24T15:03:40.332984+00:00 app[web.1]: events.js:160
2017-01-24T15:03:40.332986+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2017-01-24T15:03:40.332986+00:00 app[web.1]:       ^
2017-01-24T15:03:40.332987+00:00 app[web.1]: 
2017-01-24T15:03:40.332987+00:00 app[web.1]: Error: listen EADDRINUSE :::34845
2017-01-24T15:03:40.332988+00:00 app[web.1]:     at Object.exports._errnoException (util.js:1026:11)
2017-01-24T15:03:40.332988+00:00 app[web.1]:     at exports._exceptionWithHostPort (util.js:1049:20)
2017-01-24T15:03:40.332989+00:00 app[web.1]:     at Server._listen2 (net.js:1257:14)
2017-01-24T15:03:40.332989+00:00 app[web.1]:     at listen (net.js:1293:10)
2017-01-24T15:03:40.332990+00:00 app[web.1]:     at Server.listen (net.js:1389:5)
2017-01-24T15:03:40.332990+00:00 app[web.1]:     at EventEmitter.listen (/app/node_modules/express/lib/application.js:617:24)
2017-01-24T15:03:40.332991+00:00 app[web.1]:     at Object.<anonymous> (/app/server.prod.js:17:5)
2017-01-24T15:03:40.332991+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-24T15:03:40.332991+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-24T15:03:40.332992+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-24T15:03:40.449657+00:00 heroku[web.1]: State changed from starting to crashed
2017-01-24T15:04:04.812354+00:00 heroku[web.1]: State changed from crashed to starting
2017-01-24T15:04:07.738488+00:00 heroku[web.1]: Starting process with command `node server.prod.js`
2017-01-24T15:04:09.684291+00:00 app[web.1]: App is running, server is listening on port 8329
2017-01-24T15:04:09.687128+00:00 app[web.1]: events.js:160
2017-01-24T15:04:09.687130+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2017-01-24T15:04:09.687131+00:00 app[web.1]:       ^
2017-01-24T15:04:09.687131+00:00 app[web.1]: 
2017-01-24T15:04:09.687132+00:00 app[web.1]: Error: listen EADDRINUSE :::8329
2017-01-24T15:04:09.687133+00:00 app[web.1]:     at Object.exports._errnoException (util.js:1026:11)
2017-01-24T15:04:09.687133+00:00 app[web.1]:     at exports._exceptionWithHostPort (util.js:1049:20)
2017-01-24T15:04:09.687134+00:00 app[web.1]:     at Server._listen2 (net.js:1257:14)
2017-01-24T15:04:09.687134+00:00 app[web.1]:     at listen (net.js:1293:10)
2017-01-24T15:04:09.687135+00:00 app[web.1]:     at Server.listen (net.js:1389:5)
2017-01-24T15:04:09.687136+00:00 app[web.1]:     at EventEmitter.listen (/app/node_modules/express/lib/application.js:617:24)
2017-01-24T15:04:09.687137+00:00 app[web.1]:     at Object.<anonymous> (/app/server.prod.js:17:5)
2017-01-24T15:04:09.687137+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-24T15:04:09.687138+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-24T15:04:09.687138+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-24T15:04:09.751685+00:00 heroku[web.1]: State changed from starting to crashed
2017-01-24T15:04:09.742383+00:00 heroku[web.1]: Process exited with status 1
2017-01-24T15:04:15.891187+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=hjk-app.herokuapp.com request_id=504f99fa-1c65-437c-a636-b5a9f9080f81 fwd="94.119.64.4" dyno= connect= service= status=503 bytes=
2017-01-24T15:04:16.862217+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=hjk-app.herokuapp.com request_id=985a6075-43e6-405c-b019-bc23dc21f97e fwd="94.119.64.4" dyno= connect= service= status=503 bytes=
2017-01-24T15:12:31.991899+00:00 heroku[web.1]: State changed from crashed to starting
2017-01-24T15:12:36.493922+00:00 heroku[web.1]: Starting process with command `node server.prod.js`
2017-01-24T15:12:40.335376+00:00 heroku[web.1]: Process exited with status 1
2017-01-24T15:12:40.239255+00:00 app[web.1]: App is running, server is listening on port 42014
2017-01-24T15:12:40.249778+00:00 app[web.1]: events.js:160
2017-01-24T15:12:40.249780+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2017-01-24T15:12:40.249781+00:00 app[web.1]:       ^
2017-01-24T15:12:40.249782+00:00 app[web.1]: 
2017-01-24T15:12:40.249782+00:00 app[web.1]: Error: listen EADDRINUSE :::42014
2017-01-24T15:12:40.249783+00:00 app[web.1]:     at Object.exports._errnoException (util.js:1026:11)
2017-01-24T15:12:40.249784+00:00 app[web.1]:     at exports._exceptionWithHostPort (util.js:1049:20)
2017-01-24T15:12:40.249784+00:00 app[web.1]:     at Server._listen2 (net.js:1257:14)
2017-01-24T15:12:40.249786+00:00 app[web.1]:     at Server.listen (net.js:1389:5)
2017-01-24T15:12:40.249785+00:00 app[web.1]:     at listen (net.js:1293:10)
2017-01-24T15:12:40.249787+00:00 app[web.1]:     at EventEmitter.listen (/app/node_modules/express/lib/application.js:617:24)
2017-01-24T15:12:40.249787+00:00 app[web.1]:     at Object.<anonymous> (/app/server.prod.js:17:5)
2017-01-24T15:12:40.249788+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-24T15:12:40.249788+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-24T15:12:40.249789+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-24T15:12:40.353336+00:00 heroku[web.1]: State changed from starting to crashed
2017-01-24T15:12:40.354284+00:00 heroku[web.1]: State changed from crashed to starting
2017-01-24T15:12:43.609362+00:00 heroku[web.1]: Starting process with command `node server.prod.js`
2017-01-24T15:12:46.319249+00:00 heroku[web.1]: Process exited with status 1
2017-01-24T15:12:46.260013+00:00 app[web.1]: App is running, server is listening on port 43239
2017-01-24T15:12:46.263911+00:00 app[web.1]: events.js:160
2017-01-24T15:12:46.263913+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2017-01-24T15:12:46.263915+00:00 app[web.1]: 
2017-01-24T15:12:46.263914+00:00 app[web.1]:       ^
2017-01-24T15:12:46.263916+00:00 app[web.1]: Error: listen EADDRINUSE :::43239
2017-01-24T15:12:46.263919+00:00 app[web.1]:     at Server.listen (net.js:1389:5)
2017-01-24T15:12:46.263916+00:00 app[web.1]:     at Object.exports._errnoException (util.js:1026:11)
2017-01-24T15:12:46.263920+00:00 app[web.1]:     at Object.<anonymous> (/app/server.prod.js:17:5)
2017-01-24T15:12:46.263922+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-24T15:12:46.263917+00:00 app[web.1]:     at exports._exceptionWithHostPort (util.js:1049:20)
2017-01-24T15:12:46.263918+00:00 app[web.1]:     at Server._listen2 (net.js:1257:14)
2017-01-24T15:12:46.263921+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-24T15:12:46.263918+00:00 app[web.1]:     at listen (net.js:1293:10)
2017-01-24T15:12:46.263920+00:00 app[web.1]:     at EventEmitter.listen (/app/node_modules/express/lib/application.js:617:24)
2017-01-24T15:12:46.263921+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-24T15:12:46.341650+00:00 heroku[web.1]: State changed from starting to crashed
2017-01-24T15:12:56.502654+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=hjk-app.herokuapp.com request_id=29a2849e-9bb9-48ca-bc41-43733ad4fe67 fwd="94.119.64.22" dyno= connect= service= status=503 bytes=
2017-01-24T15:12:57.352819+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=hjk-app.herokuapp.com request_id=5630e1b0-ebe9-473b-a052-9110f12250dd fwd="94.119.64.22" dyno= connect= service= status=503 bytes=
2017-01-24T15:32:33.639769+00:00 heroku[run.4331]: Client connection closed. Sending SIGHUP to all processes
2017-01-24T15:32:34.193969+00:00 heroku[run.4331]: State changed from up to complete
2017-01-24T15:32:34.176978+00:00 heroku[run.4331]: Process exited with status 129

The above sounds like a port being used issue? My app is supposed to listen to port 5000 so why all these port numbers? I don't understand.

Add option to read config var values from stdin

Copying from heroku/legacy-cli#383:

Add an option to the Heroku client to reade the value of a config var from stdin.

Something like:
heroku config:add REDIS_URL β€”prompt β€”app dark-river-123

By adding an option like "--prompt" or "--stdin" we can solve two problems:

  • Ability to easily read secrets from a file using shell redirection
  • Ability to paste secrets without showing them on the screen or getting in the shell history
    The heroku client should detect whether standard input is a TTY, and optionally prompt for the secret value, possibly with echo disabled.

heroku apps "You have no apps."

from slack:

the user doesn't have any personal apps, only org or team apps
if they ran it with -A it would show the apps
the message should probably be changed to "You have no apps. Run heroku apps --all to see all org and team apps."
but only if they actually have apps to be displayed

runningRelease resolution logic flawed

This code determines this runningRelease:

let runningRelease = releases.filter((r) => r.status === 'pending').slice(-1)[0]

This logic depends on how many and which other releases are in releases. For example, in the example below, if there are 29 releases, the last two are pending (in JSON), so they are displayed the user as v289 being pending and v289 being release command executing.

$ heroku releases -a redacted-app -n 29
=== redacted-app Releases - Current: v316
...
v289  Set REDACTED1 config vars pending              [email protected]           2017/08/24 03:20:03 +0900
v288  Set REDACTED2 config vars release command executing  [email protected]           2017/08/24 03:19:52 +0900

However, by only fetching 28 releases, v289 changes to release command executing because it is now considered the runningRelease:

$ heroku releases -a redacted-app -n 29
=== redacted-app Releases - Current: v316
...
v289  Set REDACTED1 config vars release command executing              [email protected]           2017/08/24 03:20:03 +0900

In addition to this problem, it is questionable why the last release is considered the runningRelease at all. Shouldn't API be getting this information from the runtimes? I don't see how the CLI would be able to determine this on it's own.

heroku ps: printQuota variable issue

The printQuota function in commands/ps/index.js reuses the time variable. This leads to breakage:

royh@obi:~$ heroku apps
=== My Apps
secret-app-007

royh@obi:~$ heroku ps -a secret-app-007
 β–Έ    time is not defined

heroku local malfunctions versus heroku cloud deployed App

I have a java Spring Boot webapp on heroku. It runs perfectly on the cloud. But when run locally it appears to use a stale resource (i.e. a resource from a previous build that was previously run using heroku local). The resource is inside my jar called nymmbl1-1.0.jar. I have 100% verified the resource is correct in target\nymmbl1-1.0.jar and ~.m2\repository\com\nymmbl\nymmbl1\1.0\nymmbl1-1.0.jar. When run locally the resource is old. It's as though heroku local is using some cached version of the resource.

Has anyone ever seen anything like this?

The out-of-date resource is a local read-only SQlite database. When running "heroku local" the database is accessed but the content returned is different than the actual database content in the current jar. The content returned is from an older version of the SQLite DB that is not in the current JAR.

As I said, this problem is not observed when run on the cloud. I've rebooted my machine, searched everywhere for answers for over 2 days, and so far found no solution.

My guess is that "heroku local" is doing something I don't expect. Can you suggest what may be the problem or how to debug this?

Add support for -t / --team on teams

There are other commands like heroku members that do support -t and --team and even encourages their use.

I think switching between commands that support this flag and others that doesn't, it might be really confusing to the user:

e.g.:

β€Ί heroku members -o my-team
[email protected]    member
[email protected]     admin
 β–Έ    my-team is a Heroku Team
 β–Έ    Heroku CLI now supports Heroku Teams.
 β–Έ    Use -t or --team for teams like my-team

β€Ί heroku members -t my-team
[email protected]    member
[email protected]     admin

β€Ί heroku apps -t my-team
 β–Έ    Error: Unexpected flag -t
 β–Έ    Usage: heroku apps
 β–Έ
 β–Έ    This flag is invalid for this command. Here are the accepted flags:
 β–Έ     -A, --all           # include apps in all organizations
 β–Έ     -o, --org ORG       # organization to use
 β–Έ     -p, --personal      # list apps in personal account when a default org is set
 β–Έ     -s, --space SPACE   # filter by space
 β–Έ     --json              # output in json format
 β–Έ
 β–Έ    See more information with heroku apps --help

cc @simpsoka @ike-delorenzo

Feature request: dashboard:open

Not that it's a big deal to switch over to my browser and type dashboard.heroku.com, but I often want to open the dashboard while I'm on the CLI. I'd like to see:

$ heroku dashboard:open 
# open dashboard.heroku.com

WDYT @jdxcode ?

[Question] How to handle errors?

Hey! I'm making an extension and I was wondering what proper procedure for errors was.

My code is something like this

// command.js
yield file.write(res, fname)

// file.write
write: (obj, fname) => {
  fname = fname || DEFAULT_FNAME
  return fs.writeFile(fname, obj_to_file_format(obj)).then(() => {
    cli.log(`Successfully wrote config to ${fname}!`)
  }).catch((err) => {
    cli.error(`Error writing to file ${fname} (${err.message})`)
    // return Promise.reject()
  })
}

In the case of an error, should I reject the promise that gets returned from the command itself? Or will printing the error be enough and there's nothing else that depends on the success of the command? Alternatively, should I process.exit(1) in command.js?

Thanks!

`heroku dashboard` makes an unauthorized request to telex

heroku apps
=== My Apps
fastly-test-app-bo
regroup-app
regroup-demo
regroup-demo-staging
regroup-staging

$ heroku
Loading... !!!
 β–Έ    Unauthorized.
Enter your Heroku credentials.
Email: 

With debug:

$ HEROKU_DEBUG=1 heroku
heroku-cli/5.1.7-0de2607 (darwin-amd64) go1.6.2 /Users/bjeanes/.local/share/heroku/cli/bin/heroku cmd: version
heroku-cli/5.1.7-0de2607 (darwin-amd64) go1.6.2 /Users/bjeanes/.local/share/heroku/cli/bin/heroku cmd: dashboard
--> GET /favorites
Loading...  β’Ώ<-- 200 OK
<-- [{"app_name":"regroup-demo","app_id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6"},{"app_name":"regroup-demo-staging","app_id":"6d410d11-a896-4c20-95c4-3be9181b9647"},{"app_name":"regroup-app","app_id":"e7e8daf2-d596-41d1-8325-48a770968033"},{"app_name":"regroup-staging","app_id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07"}]
--> GET /organizations
--> GET /user/notifications
--> GET /apps/regroup-demo
--> GET /apps/regroup-demo/formation
--> GET /apps/regroup-demo/pipeline-couplings
--> GET /apps/regroup-demo-staging
--> GET /apps/regroup-demo-staging/formation
--> GET /apps/regroup-demo-staging/pipeline-couplings
--> GET /apps/regroup-app
--> GET /apps/regroup-app/formation
--> GET /apps/regroup-app/pipeline-couplings
--> GET /apps/regroup-staging
--> GET /apps/regroup-staging/formation
--> GET /apps/regroup-staging/pipeline-couplings
β‘Ώ<-- 401 Unauthorized
<-- {"id":"unauthorized","message":"Unauthorized."}
Loading... !!!
 β–Έ    Unauthorized.
<-- 200 OK
<-- []
<-- 200 OK
<-- {"archived_at":null,"buildpack_provided_description":"Ruby","build_stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"created_at":"2013-10-31T23:27:57Z","id":"6d410d11-a896-4c20-95c4-3be9181b9647","git_url":"https://git.heroku.com/regroup-demo-staging.git","maintenance":false,"name":"regroup-demo-staging","owner":{"email":"[email protected]","id":"a6861126-d9f6-4f90-bb7d-af1a342ef15d"},"region":{"id":"59accabd-516d-4f0e-83e6-6e3757701145","name":"us"},"space":null,"released_at":"2016-05-17T06:25:41Z","repo_size":19277487,"slug_size":54690255,"stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"updated_at":"2016-05-17T06:26:41Z","web_url":"https://regroup-demo-staging.herokuapp.com/"}
<-- 200 OK
<-- {"archived_at":null,"buildpack_provided_description":"Ruby","build_stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"created_at":"2013-03-25T05:42:49Z","id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","git_url":"https://git.heroku.com/regroup-staging.git","maintenance":false,"name":"regroup-staging","owner":{"email":"[email protected]","id":"a6861126-d9f6-4f90-bb7d-af1a342ef15d"},"region":{"id":"59accabd-516d-4f0e-83e6-6e3757701145","name":"us"},"space":null,"released_at":"2016-05-17T06:25:53Z","repo_size":23167636,"slug_size":54706788,"stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"updated_at":"2016-05-17T06:26:53Z","web_url":"https://regroup-staging.herokuapp.com/"}
<-- 200 OK
<-- {"archived_at":null,"buildpack_provided_description":"Ruby","build_stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"created_at":"2013-03-25T02:25:32Z","id":"e7e8daf2-d596-41d1-8325-48a770968033","git_url":"https://git.heroku.com/regroup-app.git","maintenance":false,"name":"regroup-app","owner":{"email":"[email protected]","id":"a6861126-d9f6-4f90-bb7d-af1a342ef15d"},"region":{"id":"59accabd-516d-4f0e-83e6-6e3757701145","name":"us"},"space":null,"released_at":"2016-05-14T05:09:05Z","repo_size":19164055,"slug_size":54705105,"stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"updated_at":"2016-05-16T03:52:03Z","web_url":"https://regroup-app.herokuapp.com/"}
<-- 200 OK
<-- {"archived_at":null,"buildpack_provided_description":"Ruby","build_stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"created_at":"2013-09-13T05:29:35Z","id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","git_url":"https://git.heroku.com/regroup-demo.git","maintenance":false,"name":"regroup-demo","owner":{"email":"[email protected]","id":"a6861126-d9f6-4f90-bb7d-af1a342ef15d"},"region":{"id":"59accabd-516d-4f0e-83e6-6e3757701145","name":"us"},"space":null,"released_at":"2016-05-13T03:09:07Z","repo_size":19086640,"slug_size":54712185,"stack":{"id":"f9f9cbd7-2970-41ef-8db5-3df7123b041f","name":"cedar-14"},"updated_at":"2016-05-16T03:53:23Z","web_url":"https://regroup-demo.herokuapp.com/"}
<-- 200 OK
<-- [{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=vote bundle exec rake jobs:work","created_at":"2015-09-13T23:33:04Z","id":"ab61c0ec-1770-422e-8fe2-ba71bba14766","type":"voteworker","quantity":0,"size":"Standard-1X","updated_at":"2015-09-13T23:33:04Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=default bundle exec rake jobs:work","created_at":"2015-09-13T23:33:04Z","id":"bfca4f15-1e6b-42fa-baee-ca23a9267239","type":"defaultworker","quantity":0,"size":"Standard-1X","updated_at":"2015-11-06T07:03:29Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=export bundle exec rake jobs:work","created_at":"2015-09-10T00:45:39Z","id":"5f94dd81-0e4f-486c-b66c-07c51b7a7db5","type":"exportworker","quantity":0,"size":"Standard-1X","updated_at":"2015-09-10T00:45:39Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=indexing bundle exec rake jobs:work","created_at":"2015-09-03T04:02:59Z","id":"ed74a7fd-e90d-416c-9b46-ab34af91a4ba","type":"indexworker","quantity":0,"size":"Standard-1X","updated_at":"2015-09-03T04:02:59Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=search bundle exec rake jobs:work","created_at":"2015-09-03T04:02:59Z","id":"af29f518-976b-48a9-8607-2e0129e7d83d","type":"searchworker","quantity":0,"size":"Standard-1X","updated_at":"2015-09-03T04:02:59Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"QUEUE=import bundle exec rake jobs:work","created_at":"2015-09-03T04:02:59Z","id":"d12c5948-0d0d-46c2-8342-e0a7c7f74063","type":"importworker","quantity":0,"size":"Standard-1X","updated_at":"2015-09-03T04:02:59Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"bundle exec puma -C config/puma.rb","created_at":"2013-03-25T05:51:48Z","id":"1e16997b-7806-4913-94d9-d7ae130ec86f","type":"web","quantity":1,"size":"Standard-1X","updated_at":"2015-08-20T23:10:43Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"bundle exec rails console","created_at":"2013-03-25T05:51:48Z","id":"1d5d1aeb-0c48-48ca-86f6-7145d34b721e","type":"console","quantity":0,"size":"Standard-1X","updated_at":"2015-04-04T22:31:00Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"bundle exec rake jobs:work","created_at":"2013-03-25T05:51:49Z","id":"27895f2e-fa97-4f08-9ab7-a34240e5ed1a","type":"worker","quantity":1,"size":"Standard-1X","updated_at":"2015-09-09T01:53:00Z"},{"app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07","name":"regroup-staging"},"command":"bundle exec rake","created_at":"2013-03-25T05:51:48Z","id":"e7c999f8-d415-4fc1-ae32-ec0c016e313a","type":"rake","quantity":0,"size":"Standard-1X","updated_at":"2015-04-04T22:31:00Z"}]
<-- 200 OK
<-- [{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=default bundle exec rake jobs:work","created_at":"2015-09-13T23:47:36Z","id":"70b7e861-8abe-4e20-8bfd-3b2034b6c5da","type":"defaultworker","quantity":0,"size":"Standard-1X","updated_at":"2015-11-10T06:28:29Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=import bundle exec rake jobs:work","created_at":"2015-09-03T04:01:01Z","id":"841efd4c-d8e7-42ac-b158-39c791b45ae1","type":"importworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:40Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=search bundle exec rake jobs:work","created_at":"2015-09-03T04:01:01Z","id":"c0458397-8560-4d04-8d55-c64ba0784407","type":"searchworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:39Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=indexing bundle exec rake jobs:work","created_at":"2015-09-03T04:01:01Z","id":"ee8edc7c-de57-46ad-97ee-510a633777be","type":"indexworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:39Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=vote bundle exec rake jobs:work","created_at":"2015-09-13T23:47:36Z","id":"847f564e-dc4d-4b99-ba50-622daff3a25a","type":"voteworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:39Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"QUEUE=export bundle exec rake jobs:work","created_at":"2015-09-13T23:47:36Z","id":"5d6f5e76-fdd6-4fea-a566-a912d1764173","type":"exportworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:39Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"bundle exec rake","created_at":"2013-09-13T05:52:19Z","id":"8dc87997-734e-4815-8979-f992a91d3022","type":"rake","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:40Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"bundle exec rake jobs:work","created_at":"2013-09-13T05:52:19Z","id":"3109de09-d4d6-4308-aa8e-ed2876ef7af9","type":"worker","quantity":1,"size":"Standard-1X","updated_at":"2015-10-01T02:54:40Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"bundle exec rails console","created_at":"2013-09-13T05:52:19Z","id":"ee855bf3-6a7f-4ff1-8f2f-7b26c7991654","type":"console","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T02:54:40Z"},{"app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6","name":"regroup-demo"},"command":"bundle exec puma -C config/puma.rb","created_at":"2013-09-13T05:52:19Z","id":"c2ddaa8b-7eab-4d56-90e3-6c2f55dd21f6","type":"web","quantity":3,"size":"Standard-1X","updated_at":"2015-10-01T02:54:40Z"}]
<-- 200 OK
<-- [{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=default bundle exec rake jobs:work","created_at":"2015-09-13T23:37:21Z","id":"6a780d12-49dc-4ee5-a555-102023613153","type":"defaultworker","quantity":0,"size":"Hobby","updated_at":"2016-05-13T03:09:25Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=export bundle exec rake jobs:work","created_at":"2015-09-13T23:37:21Z","id":"7247ef54-e87c-4b7d-861f-59472f3a6a42","type":"exportworker","quantity":0,"size":"Hobby","updated_at":"2015-09-13T23:37:21Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=vote bundle exec rake jobs:work","created_at":"2015-09-13T23:37:21Z","id":"5bec3901-9029-468b-be4d-ae160c4a4eab","type":"voteworker","quantity":0,"size":"Hobby","updated_at":"2015-09-13T23:37:21Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=indexing bundle exec rake jobs:work","created_at":"2015-09-03T04:10:32Z","id":"2dc88103-1f83-4aed-9ec7-ac2297236660","type":"indexworker","quantity":0,"size":"Hobby","updated_at":"2015-09-03T04:10:32Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=search bundle exec rake jobs:work","created_at":"2015-09-03T04:10:32Z","id":"31eb3be7-903a-4a73-b0f5-9ad3567adef7","type":"searchworker","quantity":0,"size":"Hobby","updated_at":"2015-09-03T04:10:32Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"QUEUE=import bundle exec rake jobs:work","created_at":"2015-09-03T04:10:32Z","id":"c8574ce3-5d08-4067-9eb7-34bd7e37dc78","type":"importworker","quantity":0,"size":"Hobby","updated_at":"2015-09-03T04:10:32Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"bundle exec rake","created_at":"2013-11-01T00:03:14Z","id":"6d323e8f-6706-4a1c-9ecc-b9e8532bc992","type":"rake","quantity":0,"size":"Hobby","updated_at":"2015-04-04T22:32:31Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"bundle exec puma -C config/puma.rb","created_at":"2013-11-01T00:03:14Z","id":"67f00b08-6fb0-48d4-9e9e-caa46552f331","type":"web","quantity":1,"size":"Hobby","updated_at":"2015-05-28T00:34:57Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"bundle exec rake jobs:work","created_at":"2013-11-01T00:03:14Z","id":"91974bc9-5c01-4e14-8a94-0746751b1fa5","type":"worker","quantity":1,"size":"Hobby","updated_at":"2015-05-28T00:34:57Z"},{"app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647","name":"regroup-demo-staging"},"command":"bundle exec rails console","created_at":"2013-11-01T00:03:14Z","id":"ec60348c-24b9-4fb7-8aca-c94037c31b17","type":"console","quantity":0,"size":"Hobby","updated_at":"2015-04-04T22:32:31Z"}]
<-- 200 OK
<-- [{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=vote bundle exec rake jobs:work","created_at":"2015-09-13T23:42:07Z","id":"98bc005a-950b-45ca-88ec-ebc7399b5b0e","type":"voteworker","quantity":1,"size":"Standard-1X","updated_at":"2015-12-01T02:14:30Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=export bundle exec rake jobs:work","created_at":"2015-09-10T00:50:36Z","id":"0a17fd01-82fa-4494-b212-065beee2db5a","type":"exportworker","quantity":4,"size":"Standard-2X","updated_at":"2015-12-01T02:14:24Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=default bundle exec rake jobs:work","created_at":"2015-09-13T23:42:07Z","id":"bc93b61a-3095-4871-97fd-92af8b0c4b99","type":"defaultworker","quantity":1,"size":"Standard-1X","updated_at":"2015-12-01T02:14:27Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=indexing bundle exec rake jobs:work","created_at":"2015-09-03T03:53:45Z","id":"c4c8844c-5286-45bc-9143-662316c9ca63","type":"indexworker","quantity":1,"size":"Standard-1X","updated_at":"2015-12-01T02:14:18Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=search bundle exec rake jobs:work","created_at":"2015-09-03T03:53:45Z","id":"341f897d-717a-4ec9-892f-7f88a7609b60","type":"searchworker","quantity":0,"size":"Standard-1X","updated_at":"2015-10-01T21:46:09Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"QUEUE=import bundle exec rake jobs:work","created_at":"2015-09-03T03:53:45Z","id":"1a87e766-0fb3-4e49-be85-144b67d92bd0","type":"importworker","quantity":4,"size":"Standard-2X","updated_at":"2015-12-01T02:14:21Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"bundle exec puma -C config/puma.rb","created_at":"2013-03-25T02:40:44Z","id":"2a26c184-85ab-4862-9201-b27e49c307ec","type":"web","quantity":8,"size":"Standard-2X","updated_at":"2015-12-01T02:14:15Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"bundle exec rails console","created_at":"2013-03-25T02:40:44Z","id":"1633411a-a784-4de0-bb8c-09f0feccfb85","type":"console","quantity":0,"size":"Standard-1X","updated_at":"2015-04-04T22:30:12Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"bundle exec rake","created_at":"2013-03-25T02:40:44Z","id":"ee37e860-0e72-4ca8-8ea8-113e29b28c72","type":"rake","quantity":0,"size":"Standard-1X","updated_at":"2015-04-04T22:30:12Z"},{"app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033","name":"regroup-app"},"command":"bundle exec rake jobs:work","created_at":"2013-03-25T02:40:44Z","id":"3f91b555-8461-4cc3-9d45-3e339cdc4d33","type":"worker","quantity":0,"size":"Standard-1X","updated_at":"2015-08-28T06:12:14Z"}]
heroku-cli/5.1.7-0de2607 (darwin-amd64) go1.6.2 /Users/bjeanes/.local/share/heroku/cli/bin/heroku cmd: version
heroku-cli/5.1.7-0de2607 (darwin-amd64) go1.6.2 /Users/bjeanes/.local/share/heroku/cli/bin/heroku cmd: commands
heroku-cli/5.1.7-0de2607 (darwin-amd64) go1.6.2 /Users/bjeanes/.local/share/heroku/cli/bin/heroku cmd: login
Enter your Heroku credentials.
Email: <-- 200 OK
<-- {"created_at":"2016-05-16T03:56:07+00:00","app":{"id":"b2fdf816-7d05-41f0-91fb-3dd0037362f6"},"id":"721e100d-56e3-4d38-be8a-8ae4a3116e76","pipeline":{"id":"ceca00a9-2eb6-4248-a491-472205d3178e","name":"covidence"},"stage":"production","updated_at":"2016-05-16T03:56:07+00:00"}
<-- 200 OK
<-- {"created_at":"2016-05-16T03:55:28+00:00","app":{"id":"512a8692-680f-4c9c-8ea7-f0ce9c26fc07"},"id":"5d58a0f5-5eac-460e-9878-e9e4c7fcb3cc","pipeline":{"id":"ceca00a9-2eb6-4248-a491-472205d3178e","name":"covidence"},"stage":"staging","updated_at":"2016-05-16T03:55:28+00:00"}
<-- 200 OK
<-- {"created_at":"2016-05-16T03:55:36+00:00","app":{"id":"6d410d11-a896-4c20-95c4-3be9181b9647"},"id":"f9fc20a4-3d57-42b7-89c7-16a439199cc3","pipeline":{"id":"ceca00a9-2eb6-4248-a491-472205d3178e","name":"covidence"},"stage":"staging","updated_at":"2016-05-16T03:55:36+00:00"}
<-- 200 OK
<-- {"created_at":"2016-05-16T03:55:51+00:00","app":{"id":"e7e8daf2-d596-41d1-8325-48a770968033"},"id":"49d5dc33-d22a-48f3-9553-092aa6e2067c","pipeline":{"id":"ceca00a9-2eb6-4248-a491-472205d3178e","name":"covidence"},"stage":"production","updated_at":"2016-05-16T03:55:51+00:00"}

From some local fiddling, it seems like it's the Telex request which is getting 403'd:

$ curl -ni https://telex.heroku.com/user/notifications
HTTP/1.1 401 Unauthorized
Server: Cowboy
Date: Tue, 17 May 2016 06:43:32 GMT
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Content-Length: 47
Via: 1.1 vegur

{"id":"unauthorized","message":"Unauthorized."}                                                                                                                                                                         ```

(This is with `.netrc` configured to use the account token, which seems like what is happening based on a reading of the source for this command)

Updated README or Docs?

This seems like a useful plugin but I can't see all the commands it has, the README is empty and I can't find any other docs online unless I'm missing something obvious.

Flag `-x` doesn't return extended information

(it only does it using sudo)

It shows the header, but not its content.

e.g.:

β€Ί heroku apps:info -a sausages -x
=== sausages
Addons:         heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos:          web: 1
Git URL:        https://git.heroku.com/sausages.git
Owner:          [email protected]
Pipeline:       sausages - production
Region:         us
Repo Size:      26 KB
Slug Size:      17 MB
Stack:          cedar-14
Web URL:        https://sausages.herokuapp.com/


--- Extended Information ---


ps quota should be of app owner not current user

Right now we hit /account to get the account ID to use to get the quota for /account/{myid}/actions/get-quota.

This shows the right quota number if you are the same user as the owner, but if you are collaborating on someone else's app the quota is wrong.

Unsure if we have permission to view someone else's quota though, so it might be best to show the quota if the app is the same as the one you're collaborating on and nothing if not.

cc @calebthompson @dmcinnes

Add DNS record type to `heroku domains` output

In Support, we frequently get tickets from customers asking how to set up their DNS. While there is a DevCenter article explaining how to do so, I wonder if some people are confused by the lack of this information in the output of heroku domains.

Here's what we do in Support:

  1. grab their targets.
  2. paste this data into ticket
  3. add "ALIAS" for apex domain and "CNAME" to others.
example.com ALIAS example.com.herokudns.com
www.example.com CNAME www.example.com.herokudns.com

Do you think it would be helpful for the CLI to add "ALIAS" and "CNAME" to that output? Happy to submit a PR if this is a valid idea.

Upgrade from heroku-apps 0.4.1 to 0.5.2 causes non-existant config variables to return 'undefined' in the shell

heroku-apps 0.4.1 behavior:

$ heroku config:get BLAH -a myapp

heroku-apps 0.5.2 behavior:

$ heroku config:get BLAH -a myapp
undefined

I think this is a fundamental change in the output of getting configuration variables, and has lots of consequences for commands that look at the output of configuration variables and is looking for the null vs the string 'undefined'. Was this a purposeful change or accidental ?

heroku ps should display the release version for each dyno

heroku ps currently shows output like this:

$ heroku ps -a st-kpi-http-gateway
=== web (Private-L): bin/s3env run bin/cedar kpi-http-gateway-api (4)
web.1: up 2017/11/16 21:10:50 -0800 (~ 16s ago)
web.2: up 2017/11/16 21:02:26 -0800 (~ 8m ago)
web.3: up 2017/11/16 21:03:14 -0800 (~ 7m ago)
web.4: up 2017/11/16 21:03:59 -0800 (~ 7m ago)

It's not obvious from this output that web.1 is running a different release than the other dynos. In this particular case, the app is in a Private Space, and so it'll be a few minutes before all the dynos are on the same release. This can be a bit surprising. I know I could use heroku ps:wait or pass --extended to wait for all the dynos to cycle or see the release version for each one, respectively, but both of those things are non-default behaviour that can be hard to discover or to remember to use.

It'd be nice to show the release in the output of heroku ps:

$ heroku ps -a st-kpi-http-gateway
=== web (Private-L): bin/s3env run bin/cedar kpi-http-gateway-api (4)
web.1: up v1117 2017/11/16 21:10:50 -0800 (~ 16s ago)
web.2: up v1116 2017/11/16 21:02:26 -0800 (~ 8m ago)
web.3: up v1116 2017/11/16 21:03:14 -0800 (~ 7m ago)
web.4: up v1116 2017/11/16 21:03:59 -0800 (~ 7m ago)

ps:scale UX could be improved

from @ryanbrainard:

drive by CLI feedback: I was just trying to scale an app using the CLI and realized it’s rather unintuitive how to do it. In particular, the `Cannot update to more than 1 Hobby size dynos per process type.` message is not actionable at all. Inline help didn’t help much either. I ended up going to devcenter to figure out what i needed to do, but seems like something the says to do something like `h dyno:type standard-1x` would help folks out (and probably help get people to upgrade)
also confusing, it seems like the `dyno:type` command and `ps:scale` are very conflated and seem to basically do the same things
and `heroku scale --help` doesn’t work, but `heroku ps:scale --help` does
all little minor things, but it just made it a frustrating experience for something so simple

`h drains:remove` accepts logplex token now

API has support to remove a drain by shown logplex token. This is useful when API can't properly parse a logplex URL. We'd need to update the help menu of drains:remove to let people know they can remove a drain by logplex token as well.

/cc @heroku/api @watsonian @voidlock

No readme?

There's no info about how to install or use this plugin (though it seems like it comes installed with the cli)

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

apps:errors 'source' field empty for non-router errors

Compare:

$ heroku apps:errors -a treeherder-stage
=== Errors on treeherder-stage in the last 24 hours
source  name  level     desc                                count
──────  ────  ────────  ──────────────────────────────────  ─────
router  H13   critical  Connection closed without response  1
router  H27   info      Client Request Interrupted          3
        R12   warning   Exit timeout                        1
        R14   critical  Memory quota exceeded               2069
        R15   critical  Memory quota vastly exceeded        1

With:

$ heroku apps:errors -a treeherder-stage --json
{
  "dyno": {
    "worker_read_pulse_jobs": {},
    "worker_store_pulse_resultsets": {},
    "worker_log_parser": {
      "R12": 1
    },
    "worker_read_pulse_resultsets": {},
    "worker_store_pulse_jobs": {},
    "worker_default": {},
    "worker_buildapi_running": {},
    "worker_beat": {},
    "web": {
      "R14": 2069,
      "R15": 1
    },
    "worker_buildapi_4hr": {},
    "worker_pushlog": {},
    "worker_buildapi_pending": {},
    "worker_hp": {},
    "release": {}
  },
  "router": {
    "H13": 1,
    "H27": 3
  }
}

Using:

  • heroku/toolbelt/3.43.12 (i386-mingw32) ruby/2.1.7
  • heroku-cli/5.4.2-a9a5017 (windows-386) go1.7.1

The latter tells me which dyno is responsible for which error, whilst the former does not, since the source column is empty for all but router errors.

Expected:

$ heroku apps:errors -a treeherder-stage
=== Errors on treeherder-stage in the last 24 hours
source             name  level     desc                                count
─────────────────  ────  ────────  ──────────────────────────────────  ─────
router             H13   critical  Connection closed without response  1
router             H27   info      Client Request Interrupted          3
worker_log_parser  R12   warning   Exit timeout                        1
web                R14   critical  Memory quota exceeded               2069
web                R15   critical  Memory quota vastly exceeded        1

ps:stop without argument: Cannot read property 'indexOf' of undefined

Running ps:stop without an argument raises Cannot read property 'indexOf' of undefined instead of an error explaining that you need to say something like ps:stop web or ps:stop web.1. This can be a common mistake because other ps commands like restart do not require an argument.

Example:

$ heroku ps:stop
 β–Έ    Cannot read property 'indexOf' of undefined

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.