blob: b3762ea5a44e89a51a765378ad57e866e252843e [file] [log] [blame] [view] [edit]
# CrOS IDE
Currently ***EXPERIMENTAL*** and tested only for google internal developers.
No timely support will be provided.
This plugin consolidates commonly used tools for Chromium OS Development.
## Features
* Autocomplete, x-ref searching, and symbol definition when developing in chroot
* Managing local and remote DUTs
* Code health tooling
See [QuickStart Guide] for initial setup.
[QuickStart Guide]: https://chromium.googlesource.com/chromiumos/chromite/+/HEAD/ide_tooling/docs/quickstart.md
## Developers guide
### Initial set up and testing
1. Follow the [QuickStart Guide], skip installing the extension. Open the `cros-ide` directory as
your working directory.
2. Run `npm ci` in the `cros-ide` directory (inside chroot).
3. *Outside chroot* (open a different terminal), run `npm test` in the `cros-ide` directory to
confirm tests pass. `node --version` should return v12.* for the test to pass. If you are using a
newer version, please uninstall or downgrade it.
### Testing
There are several ways of testing.
* Testing from GUI
* Make sure your VSCode is connected to chroot, and opening `cros-ide` as a
workspace.
* (See [Debugging the tests] for visual guide)
Click the "Run and Debug" icon in the [Activity Bar], select "Run Extension"
menu, and click the "Start Debugging" button or press F5. It should launch a new window
where the extension built from the source code is installed. Then you can
perform whatever manual tests on it. By default, other extensions are disabled. To keep other
extensions running, choose "Run Extension (keep other extensions running)".
* Similarly, you can select "Extension Tests" instead of "Run Extensions" to run all the tests.
The output will be shown in the Debug Console in the IDE used to develop the extension
* Testing from command line
* `npm run unit-test` runs unit tests.
* `npm run test` runs all the tests. It must be run outside chroot.
[Activity Bar]: https://code.visualstudio.com/api/references/extension-guidelines#view-containers
[Debugging the tests]: https://code.visualstudio.com/api/working-with-extensions/testing-extension#debugging-the-tests
### Publishing the extension
Here is the steps to release a new version of a package file, to be installed by all users by
`./install.sh`.
1. Upload a patch that updates the version in `package.json`, have it reviewed, approved and merged
to `cros/main` (for example, http://crrev.com/c/3474259)
2. Check out that commit in the local git checkout.
3. Inside chroot, run `./install.sh --upload`. It will build the extension and upload it to Cloud
Storage under [chromeos-velocity].
[chromeos-velocity]: https://pantheon.corp.google.com/storage/browser?project=google.com:chromeos-velocity
### FAQs
* How to check that my VSCode is connected to chroot?
* In the lower left corner, it should show `SSH: cros` if you followed
[QuickStart Guide].
* How to build and install the extension from local source code?
* Run `./install.sh --dev` in the terminal of the VSCode connected to chroot.
It builds from the source code and installs it to the current vscode.
* Why repo upload is slow?
* It runs `npm test`. It's a tentative alternative for a CQ which is under
construction.
## Requirements
TBD
## Extension Settings
## Known Issues
## Release Notes
Users appreciate release notes as you update your extension.
### 1.0.0
TBD
-----------------------------------------------------------------------------------------------------------
## Sticky Notes
* [Extension Guidelines](https://code.visualstudio.com/api/references/extension-guidelines)
* [Project Documentation (Google Internal)](http://go/cros-cowabunga)
-----------------------------------------------------------------------------------------------------------
## Dependencies
*Important:* Keep this updated and ensure that unrestrictive
licenses are used
Name: definitely-typed\
URL: https://github.com/DefinitelyTyped/DefinitelyTyped\
Remarks: Pulls in TS data-types published via DefinitelyTyped (i.e. @types/*)\
License: MIT
Name: typescript-eslint\
URL: https://github.com/typescript-eslint/typescript-eslint/\
Remarks:\
License: BSD-2-Clause
Name: eslint\
URL: https://github.com/eslint/eslint\
Remarks:\
License: MIT
Name: eslint-config-google\
URL: https://github.com/google/eslint-config-google\
Remarks:\
License: Apache-2.0
Name: glob\
URL: https://github.com/isaacs/node-glob\
Remarks: Unrestrictive license along the lines of MIT\
Used for unit-tests\
License: ISC
Name: Typescript\
URL: https://github.com/microsoft/TypeScript\
Remarks:\
License: Apache-2.0
Name: mocha\
URL: https://github.com/mochajs/mocha\
Remarks:\
License: MIT
Name: ts-loader\
URL: https://github.com/TypeStrong/ts-loader\
Remarks:\
License: MIT
Name: webpack\
URL: https://github.com/webpack/webpack\
Remarks:\
License: MIT
Name: webpack-cli\
URL: https://github.com/webpack/webpack-cli\
Remarks:\
License: MIT
Name: webpack\
URL: https://github.com/Microsoft/vscode-test\
Remarks:\
License: MIT