Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
01c246f
Introduce Node 22 TypeScript Heroku plugin with shared libs and devce…
michaelmalave Apr 9, 2026
917153f
updating test coverage in this PR
michaelmalave Apr 9, 2026
4dd7eee
feat: add devcenter pull and push commands, add lib unit tests, and e…
michaelmalave Apr 9, 2026
ee9246f
updating test coverage in this PR
michaelmalave Apr 9, 2026
30f6440
remove the Ruby devcenter gem, add c8 coverage on src/**/*.ts with re…
michaelmalave Apr 9, 2026
fbff05f
adding dependabot github workflow and pr template
michaelmalave Apr 9, 2026
c70aa21
updating and aligning documentation
michaelmalave Apr 13, 2026
b75416e
updating to use netrc-parser for heroku api tokens matching expected …
michaelmalave Apr 13, 2026
a77c0cf
merging updates from origin/feat/ruby-to-typescript-1
michaelmalave Apr 13, 2026
b2bf6b5
Indent login / password lines in pull and push test .netrc fixtures s…
michaelmalave Apr 13, 2026
69d4adb
merging in branch updates
michaelmalave Apr 13, 2026
d68b7af
Fix heroku-api-auth tests on Windows matching netrc-parser
michaelmalave Apr 13, 2026
c7828ec
Add test/helpers/netrc-path.ts for _netrc/.netrc in windows tests
michaelmalave Apr 13, 2026
1cd94c5
Add --debug on devcenter:preview so HTTP/file-watch chatter goes thro…
michaelmalave Apr 14, 2026
72c3243
Merge remote-tracking branch 'origin/feat/ruby-to-typescript-1' into …
michaelmalave Apr 14, 2026
820be1c
Use netrcFilePath in pull/push command tests so netrc fixtures use _n…
michaelmalave Apr 14, 2026
1fb2b18
merging updates in from upstream branch
michaelmalave Apr 14, 2026
f67a596
removing component metadata file sync as this is not a private repo
michaelmalave Apr 14, 2026
2628be5
Update package.json
michaelmalave Apr 14, 2026
991fcbd
adopt heroku-cli-test-utils, replace --debug flags with debug package…
michaelmalave Apr 14, 2026
0e01b09
merging in updates from feat/ruby-to-typescript-1
michaelmalave Apr 14, 2026
76fc3a0
Use @heroku-cli/test-utils runCommand in pull/push tests and fix ESLi…
michaelmalave Apr 14, 2026
0cd7f4e
merging updates from feat/ruby-to-typescript-2
michaelmalave Apr 14, 2026
0ce69e2
Remove unused run-command helper and obsolete index test, fix ESLint …
michaelmalave Apr 14, 2026
b145c57
Replace legacy Ruby gem README with standard oclif plugin format and …
michaelmalave Apr 14, 2026
b4c3290
merging updates
michaelmalave Apr 14, 2026
86d45fd
merging updates
michaelmalave Apr 14, 2026
2b35bc8
Replace --debug flag with debug package in pull command to match CLI …
michaelmalave Apr 15, 2026
82af796
Remove test-specific env var from pull command and related test
michaelmalave Apr 15, 2026
91328f7
Merge remote-tracking branch 'origin/feat/ruby-to-typescript-2' into …
michaelmalave Apr 15, 2026
95e15d1
Replace Ruby bin script with oclif bin files and remove custom PLUGIN…
michaelmalave Apr 15, 2026
eb4ee69
Move preview test to commands/devcenter/, remove oclif.manifest.json …
michaelmalave Apr 15, 2026
539b707
merging updates from branch
michaelmalave Apr 15, 2026
79858e8
merging branch updates
michaelmalave Apr 15, 2026
77657c2
Add debug logging to push command for consistency with other devcente…
michaelmalave Apr 15, 2026
bdf9c16
Merge remote-tracking branch 'origin/feat/ruby-to-typescript-2' into …
michaelmalave Apr 15, 2026
f7f6fb4
Replace direct netrc parsing with @heroku-cli/command credential mana…
michaelmalave Apr 15, 2026
6c7d17c
Fix mdFilePath test for Windows path compatibility
michaelmalave Apr 15, 2026
698db1e
Merge pull request #46 from heroku/feat/ruby-to-typescript-1
michaelmalave Apr 16, 2026
1a8baa0
Merge branch 'feat/ruby-to-typescript' into feat/ruby-to-typescript-2
michaelmalave Apr 16, 2026
2712a1d
Merge branch 'feat/ruby-to-typescript' into feat/ruby-to-typescript-3
michaelmalave Apr 16, 2026
fd58853
resolving merge conflicts
michaelmalave Apr 16, 2026
98941ee
completing incoming merge
michaelmalave Apr 16, 2026
2a22915
Fix sinon lint warnings by using named imports and document mocha ove…
michaelmalave Apr 17, 2026
a00a133
Replace @inquirer/prompts with @heroku/heroku-cli-util confirm and fi…
michaelmalave Apr 17, 2026
8355843
Remove redundant empty slug checks since oclif handles required arg v…
michaelmalave Apr 17, 2026
8fb6efb
merging in branch updates
michaelmalave Apr 17, 2026
53f9db2
Merge pull request #47 from heroku/feat/ruby-to-typescript-2
michaelmalave Apr 17, 2026
bdcaee2
Merge feat/ruby-to-typescript-3: use netrc-parser for auth, remove re…
michaelmalave Apr 17, 2026
b3db7e8
Combine redundant token checks in pull command's auth fallback logic
michaelmalave Apr 17, 2026
0e89665
Fix getJson so non-empty invalid JSON returns ok: false, treat whites…
michaelmalave Apr 20, 2026
a495e91
Merge remote-tracking branch 'origin/feat/ruby-to-typescript-3' into …
michaelmalave Apr 20, 2026
08e8d9e
Stop logging full article JSON in devcenter:pull debug output and log…
michaelmalave Apr 20, 2026
8fc62e6
Merge remote-tracking branch 'origin/feat/ruby-to-typescript-3' into …
michaelmalave Apr 20, 2026
4072603
Merge branch 'feat/ruby-to-typescript' into feat/ruby-to-typescript-3
michaelmalave Apr 20, 2026
cfd1c30
rename to @heroku-cli/plugin-devcenter, simplify readme scripts, drop…
michaelmalave Apr 20, 2026
572143f
Merge pull request #48 from heroku/feat/ruby-to-typescript-3
michaelmalave Apr 20, 2026
59362b0
Merge branch 'feat/ruby-to-typescript' into feat/integrate-credential…
michaelmalave Apr 20, 2026
c2814c9
correcting expected coverage to 80 for all types
michaelmalave Apr 20, 2026
44e0584
removing comments in contributing about override
michaelmalave Apr 20, 2026
fa1282d
Use this.heroku.getAuth() for devcenter pull/push/open, factor shared…
michaelmalave Apr 20, 2026
dbd7174
Merge pull request #49 from heroku/feat/integrate-credential-mgmt
michaelmalave Apr 20, 2026
cc0ea88
updates to config and docs following publish of new version
michaelmalave Apr 21, 2026
ff0755b
Merge pull request #51 from heroku/mm/chore/publish-to-npm
michaelmalave Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .c8rc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"src": ["src"],
"extension": [".ts"],
"exclude": [
"**/*.d.ts",
"**/*.test.ts",
"test/**/*",
"dist/**/*",
"coverage/**",
"**/*.mjs"
],
"include": ["src/**/*.ts"],
"reporter": ["text-summary", "lcov"],
"statements": 80,
"branches": 80,
"functions": 80,
"lines": 80
}
44 changes: 44 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!--
When creating a PR, be sure to prepend the PR title with the Conventional Commit type (`feat`, `fix`, or `chore`). This is how we manage package versioning and generating CHANGELOG notes.

Examples:
- "feat: add growl notification to spaces:wait"
- "fix: handle special characters in app names"
- "chore: add dist directory to .gitignore"

The expected Conventional Commit types are listed below.

Learn more about [Conventional Commits](https://www.conventionalcommits.org/).
-->

## Summary
<!-- Brief description of the changes in this PR. -->

## Type of Change
### Breaking Changes (major semver update)
- [ ] Add a `!` after your change type to denote a change that breaks current behavior

### Feature Additions (minor semver update)
- [ ] **feat**: Introduces a new feature to the codebase

### Patch Updates (patch semver update)
- [ ] **fix**: Bug fix
- [ ] **deps**: Dependency upgrade
- [ ] **revert**: Revert a previous commit
- [ ] **chore**: Change that does not affect production code
- [ ] **refactor**: Refactoring existing code without changing behavior
- [ ] **test**: Add/update/remove tests

## Testing
**Notes**:
<!-- Add any context/setup necessary for testing. -->

**Steps**:
1. Replace this text with a list of steps used to validate changes or type 'Passing CI suffices'.
2. ...

## Screenshots (if applicable)

## Related Issues
GitHub issue: #[GitHub issue number]
GUS work item: [WI number](WI link)
36 changes: 30 additions & 6 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "bundler"
- package-ecosystem: "github-actions"
directory: "/"
open-pull-requests-limit: 5
schedule:
interval: "weekly"
time: "12:00"
day: "sunday"
timezone: "America/Los_Angeles"
commit-message:
prefix: "deps"
- package-ecosystem: "npm"
directory: "/"
open-pull-requests-limit: 5
schedule:
interval: "weekly"
time: "12:00"
day: "sunday"
timezone: "America/Los_Angeles"
commit-message:
prefix: "fix"
prefix-development: "chore"
include: "scope"
groups:
dev-patch-minor-dependencies:
dependency-type: "development"
update-types:
- "patch"
- "minor"
ignore:
- dependency-name: "@oclif/core"
update-types: ["version-update:semver-major"]
- dependency-name: "typescript"
update-types: ["version-update:semver-major"]
26 changes: 26 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: CI Test Suite

on:
push:
pull_request:
workflow_dispatch:

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node_version: ['22.x', '24.x']
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Unit tests and lint
run: npm test
18 changes: 18 additions & 0 deletions .github/workflows/push_dependabot_metadata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Send data to Security Alerts

on:
workflow_dispatch:
schedule:
- cron: '0 16 * * *'

jobs:
send-alerts:
runs-on: sfdc-hk-ubuntu-latest
steps:
- name: Send data to Security Alerts
uses: heroku/security-alerts-action@stable
with:
gh-app-id: ${{ secrets.SECURITY_ALERTS_GH_APP_ID }}
gh-app-privkey: ${{ secrets.SECURITY_ALERTS_GH_APP_PRIVKEY }}
webhook-url: ${{ secrets.SECURITY_ALERTS_WEBHOOK_URL }}
sa-token: ${{ secrets.SECURITY_ALERTS_TOKEN }}
25 changes: 0 additions & 25 deletions .github/workflows/sync_component_metadata.yml

This file was deleted.

24 changes: 6 additions & 18 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
*.gem
*.rbc
.bundle
.config
.yardoc
Gemfile.lock
InstalledFiles
_yardoc
coverage
doc/
lib/bundler/man
pkg
rdoc
spec/reports
test/tmp
test/version_tmp
tmp
.DS_Store
node_modules/
dist/
coverage/
*.tsbuildinfo
.DS_Store
oclif.manifest.json
11 changes: 11 additions & 0 deletions .mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"require": [
"./test/init.mjs",
"tsx"
],
"watch-extensions": ["ts"],
"recursive": true,
"reporter": "spec",
"timeout": 15000,
"node-option": ["import=tsx/esm"]
}
13 changes: 9 additions & 4 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Comment line immediately above ownership line is reserved for related gus information. Please be careful while editing.
* @heroku/marketing-web-ops
* @heroku/front-end
#ECCN:Open Source
# All files require review from the Heroku Front-End Dev Tools team.

# Comment line immediately above ownership line is reserved for related GUS information.
# Please exercise caution while editing.

#GUSINFO: Heroku FE Dev Tools,Heroku CLI & Plugins
* @heroku/frontend-dev-tooling

#ECCN:Open Source
76 changes: 66 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,70 @@
# Contributing to this repo
# Contributing Guide for Dev Center CLI

We welcome contributions!
This page lists the operational governance model of this project, as well as the recommendations and requirements for how to best contribute to the Heroku Dev Center CLI plugin. We strive to obey these as best as possible. As always, thanks for contributing – we hope these guidelines make it easier and shed some light on our approach and processes.

## Urgent Security Updates
* If internal to Salesforce/Heroku, please contact the #marketing-web-ops team on Slack.
# Governance Model

## Any Other Contribution
## Salesforce Sponsored

* Create a topic branch from where you want to base your work (this is usually the `main` branch).
* Make commits of logical units.
* Check for unnecessary whitespace with `git --diff` before commiting.
* Push your changes to a topic branch in the GitHub repository.
* Submit a pull request to the base branch.
The intent and goal of open sourcing this project is to increase the contributor and user base. However, only Salesforce employees will be given `admin` rights and will be the final arbiters of what contributions are accepted or not.

# Issues, requests & ideas

Use GitHub Issues page to submit issues, enhancement requests and discuss ideas.

### Bug Reports and Fixes
- If you find a bug, please search for it in the [Issues](https://github.com/heroku/devcenter-cli/issues), and if it isn't already tracked,
[create a new issue](https://github.com/heroku/devcenter-cli/issues/new). Include steps to reproduce and expected vs actual behavior. Even if an Issue is closed, feel free to comment and add details, it will still
be reviewed.
- Issues that have already been identified as a bug (note: able to reproduce) will be labelled `bug`.
- If you'd like to submit a fix for a bug, [send a Pull Request](#creating_a_pull_request) and mention the Issue number.
- Include tests that isolate the bug and verifies that it was fixed.

### New Features
- If you'd like to add new functionality to this project, describe the problem you want to solve in a [new Issue](https://github.com/heroku/devcenter-cli/issues/new).
- Issues that have been identified as a feature request will be labelled `enhancement`.
- If you'd like to implement the new feature, please wait for feedback from the project
maintainers before spending too much time writing the code. In some cases, `enhancement`s may
not align well with the project objectives at the time.

### Tests, Documentation, Miscellaneous
- If you'd like to improve the tests, you want to make the documentation clearer, you have an
alternative implementation of something that may have advantages over the way its currently
done, or you have any other change, we would be happy to hear about it!
- If its a trivial change, go ahead and [send a Pull Request](#creating_a_pull_request) with the changes you have in mind.
- If not, [open an Issue](https://github.com/heroku/devcenter-cli/issues/new) to discuss the idea first.

If you're new to our project and looking for some way to make your first contribution, look for
Issues labelled `good first contribution`.

# Contribution Checklist

- [x] Clean, simple, well styled code
- [x] Commits should be atomic and messages must be descriptive. Related issues should be mentioned by Issue number.
- [x] Comments
- Module-level & function-level comments.
- Comments on complex blocks of code or algorithms (include references to sources).
- [x] Tests
- The test suite, if provided, must be complete and pass
- Increase code coverage, not versa.
- [x] Dependencies
- Minimize number of dependencies.
- Prefer Apache 2.0, BSD3, MIT, ISC and MPL licenses.
- [x] Reviews
- Changes must be approved via peer code review

# Creating a Pull Request

1. **Ensure the bug/feature was not already reported** by searching on GitHub under Issues. If none exists, create a new issue so that other contributors can keep track of what you are trying to add/fix and offer suggestions (or let you know if there is already an effort in progress).
3. **Clone** the forked repo to your machine.
4. **Create** a new branch to contain your work (e.g. `git br fix-issue-11`)
4. **Commit** changes to your own branch.
5. **Push** your work back up to your fork. (e.g. `git push fix-issue-11`)
6. **Submit** a Pull Request against the `main` branch and refer to the issue(s) you are fixing. Try not to pollute your pull request with unintended changes. Keep it simple and small.
7. **Sign** the Salesforce CLA (you will be prompted to do so when submitting the Pull Request)

> **NOTE**: Be sure to [sync your fork](https://help.github.com/articles/syncing-a-fork/) before making a pull request.


# License
By contributing your code, you agree to license your contribution under the terms of our project [LICENSE.txt](LICENSE.txt) and to sign the [Salesforce CLA](https://cla.salesforce.com/sign-cla)
4 changes: 0 additions & 4 deletions Gemfile

This file was deleted.

Loading
Loading