The web interface for Composer!
Making changes on Cockpit Composer
Here's where to get the code:
$ git clone https://github.com/weldr/welder-web.git $ cd welder-web/
The remainder of the commands assume you're in the top level of the Cockpit Composer git repository checkout.
Getting the development dependencies
On Fedora or Red Hat Enterprise Linux:
- First install Cockpit on your local machine as described in: https://cockpit-project.org/running.html.
- Next install and start lorax-composer:
$ sudo yum install lorax-compose $ sudo systemctl start lorax-composer
- Cockpit Composer uses Node.js during development. Node.js is not used at runtime. To make changes on Cockpit you'll want to install Node.js, NPM.
$ sudo yum install nodejs npm
In addition, for testing, the following dependencies are required:
$ sudo yum install curl expect \ libvirt libvirt-client libvirt-daemon libvirt-python \ python python-libguestfs python-lxml libguestfs-xfs \ python3 libvirt-python3 \ libguestfs-tools qemu qemu-kvm rpm-build jq
to build everything. You can only run
make from the top-level and it will always rebuild the Cockpit Composer.
Cockpit Composer is built using React. For inspecting the React component hierarchy, including component props and state, you can run
$ npm run build:debug
Running end to end test
Cockpit Composer uses ESLint to automatically check
The linter is executed within every build as a webpack preloader.
For developer convenience, the ESLint can be started explicitly by:
$ npm run eslint
Rules configuration can be found in the
Working on your local machine
$ mkdir -p ~/.local/share/cockpit $ ln -s $(pwd)/public ~/.local/share/cockpit/welder
Now you can log into Cockpit Composer on your local Linux machine at the following address. Use the same user and password that you used to log into your Linux desktop.
After every change to your sources, run
make to update all the webpacks, and reload cockpit in your browser.
To keep Cockpit Composer working with Cockpit API all code should follow the following rules.
- All requests to the API should be made using
utils.apiFetch. Any non API
fetchrequests must use
credentials: 'same-origin'so that cookies are included with those ajax requests.
- Use hashes for navigation within the SPA so that cockpit can keep the top level location display up to date.
Package as an RPM/SRPM
This project can be packaged as either a noarch rpm or an srpm.
$ make rpm # Or, `make srpm`
For a general guide on how to write translatable strings, see weldr.io
npm run targets that start with
zanata-js to be installed. Install it with the usual
npm install zanata-js.
There are a lot of parts involved in translating a string. Here's an overview of the process, from start to finish:
Step 1. During development, the developer adds a translatable string. See weldr.io
for details on how to indicate that the string is translatable, and what the string may contain. In general, the string
is added using react-intl
MessageDescriptors, but without explicit
Step 2. The developer runs
npm run translations:push. As part of this process, babel-plugin-react-intl-auto
id attributes to all of the messages, and babel-plugin-react-intl
will extract all of the messages to JSON files, written to
./build/messages. react-intl-po is
used to collect the JSON files into a gettext-style POT file, and the POT file is uploaded to Zanata.
Step 3. Translators provide translations on Zanata.
Step 4. The developer runs
npm run translations:pull and
npm run translations:po2json. This downloads the translations from
Zanata as gettext-style .po files and converts the .po files back to JSON.
Step 5. The user runs cockpit-composer. Based on the user's browser configuration, cockpit-composer determines the user's preferred
language, and if translations are available, these translations are provided to react-intl's
then displays translated strings where possible.
Making A New Release Of cockpit-composer
When the project is ready for a new release, do the following:
- Tag the release with
make NEWTAG=X.Y.Z tag, bumping .Z to the next version unless there are major changes.
- Edit the commit list to reflect the changes that will be visible to users (it shows up on the GitHub Releases page)
- Sign the tag with your GPG key
(an editor should open automatically, and gpg is required to be setup in order to sign the tag).
Then push the tag with
git push --tags. This will trigger
to build a new release of cockpit-composer.
Finally, import the new
.srpm into the appropriate RHEL release.
This source code is licensed under the MIT license found in the