Updated dependencies to match latest starterkit

* removed unused dependencies
* updated dependencies to match starterkit
* updated build pipeline
This commit is contained in:
Benjamin Graham 2020-07-23 22:06:42 -04:00 committed by Justin Stephenson
parent 7eada9f82a
commit 46ad9834b3
7 changed files with 155 additions and 112 deletions

View file

@ -1,52 +1,67 @@
{ {
"env": { "root": true,
"browser": true, "env": {
"es6": true "browser": true,
"es6": true
},
"extends": ["eslint:recommended", "standard", "standard-react"],
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": "7",
"ecmaFeatures": {
"jsx": true
}, },
"extends": ["eslint:recommended", "standard", "standard-react"], "sourceType": "module"
"parser": "babel-eslint", },
"parserOptions": { "plugins": ["flowtype", "react", "react-hooks"],
"ecmaFeatures": { "rules": {
"experimentalObjectRestSpread": true, "indent": [
"jsx": true "error",
}, 4,
"sourceType": "module" {
}, "ObjectExpression": "first",
"plugins": ["flowtype", "react"], "CallExpression": { "arguments": "first" },
"rules": { "MemberExpression": 2,
"indent": ["error", 4, "ignoredNodes": ["JSXAttribute"]
{ }
"ObjectExpression": "first", ],
"CallExpression": {"arguments": "first"}, "newline-per-chained-call": ["error", { "ignoreChainWithDepth": 2 }],
"MemberExpression": 2, "lines-between-class-members": [
"ignoredNodes": [ "JSXAttribute" ] "error",
}], "always",
"newline-per-chained-call": ["error", { "ignoreChainWithDepth": 2 }], { "exceptAfterSingleLine": true }
"lines-between-class-members": ["error", "always", { "exceptAfterSingleLine": true }], ],
"prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }], "prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }],
"react/jsx-indent": ["error", 4], "react/jsx-indent": ["error", 4],
"semi": ["error", "always", { "omitLastInOneLineBlock": true }], "semi": ["error", "always", { "omitLastInOneLineBlock": true }],
"camelcase": "off", "react-hooks/rules-of-hooks": "error",
"comma-dangle": "off", "react-hooks/exhaustive-deps": "error",
"curly": "off",
"jsx-quotes": "off",
"key-spacing": "off",
"no-console": "off",
"quotes": "off",
"react/jsx-curly-spacing": "off",
"react/jsx-indent-props": "off",
"react/prop-types": "off",
"space-before-function-paren": "off",
"standard/no-callback-literal": "off",
"eqeqeq": "off", "camelcase": "off",
"import/no-webpack-loader-syntax": "off", "comma-dangle": "off",
"object-property-newline": "off", "curly": "off",
"react/jsx-no-bind": "off" "jsx-quotes": "off",
}, "key-spacing": "off",
"globals": { "new-cap": "off",
"require": false, "no-console": "off",
"module": false "prefer-const": "off",
} "quotes": "off",
"react/jsx-closing-bracket-location": "off",
"react/jsx-curly-spacing": "off",
"react/jsx-indent-props": "off",
"react/jsx-handler-names": "off",
"react/prop-types": "off",
"space-before-function-paren": "off",
"standard/no-callback-literal": "off",
"eqeqeq": "off",
"import/no-webpack-loader-syntax": "off",
"object-property-newline": "off",
"react/jsx-no-bind": "off"
},
"globals": {
"require": false,
"module": false
}
} }

13
.tasks Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh
# When run automated, randomize to minimize stampeding herd
if [ -t 0 ]; then
chance=10
else
chance=$(shuf -i 0-10 -n 1)
fi
if [ $chance -gt 9 ]; then
# Open issues for things that need doing on a regular basis
bots/npm-trigger
fi

View file

@ -5,9 +5,11 @@ ifeq ($(TEST_OS),)
TEST_OS = rhel-x TEST_OS = rhel-x
endif endif
export TEST_OS export TEST_OS
TARFILE=cockpit-$(PACKAGE_NAME)-$(VERSION).tar.gz
RPMFILE=$(shell rpmspec -D"VERSION $(VERSION)" -q cockpit-session-recording.spec.in).rpm
VM_IMAGE=$(CURDIR)/test/images/$(TEST_OS) VM_IMAGE=$(CURDIR)/test/images/$(TEST_OS)
# one example directory from `npm install` to check if that already ran # stamp file to check if/when npm install ran
NODE_MODULES_TEST=node_modules/po2json NODE_MODULES_TEST=package-lock.json
# one example file in dist/ from webpack to check if that already ran # one example file in dist/ from webpack to check if that already ran
WEBPACK_TEST=dist/index.html WEBPACK_TEST=dist/index.html
@ -21,7 +23,7 @@ LINGUAS=$(basename $(notdir $(wildcard po/*.po)))
po/POTFILES.js.in: po/POTFILES.js.in:
mkdir -p $(dir $@) mkdir -p $(dir $@)
find src/ -name '*.js' -o -name '*.jsx' -o -name '*.es6' > $@ find src/ -name '*.js' -o -name '*.jsx' > $@
po/$(PACKAGE_NAME).js.pot: po/POTFILES.js.in po/$(PACKAGE_NAME).js.pot: po/POTFILES.js.in
xgettext --default-domain=cockpit --output=$@ --language=C --keyword= \ xgettext --default-domain=cockpit --output=$@ --language=C --keyword= \
@ -61,11 +63,14 @@ dist/po.%.js: po/%.po $(NODE_MODULES_TEST)
# #
%.spec: %.spec.in %.spec: %.spec.in
sed -e 's/@VERSION@/$(VERSION)/g' $< > $@ sed -e 's/%{VERSION}/$(VERSION)/g' $< > $@
$(WEBPACK_TEST): $(NODE_MODULES_TEST) $(shell find src/ -type f) package.json webpack.config.js $(patsubst %,dist/po.%.js,$(LINGUAS)) $(WEBPACK_TEST): $(NODE_MODULES_TEST) $(shell find src/ -type f) package.json webpack.config.js $(patsubst %,dist/po.%.js,$(LINGUAS))
NODE_ENV=$(NODE_ENV) npm run build NODE_ENV=$(NODE_ENV) npm run build
watch:
NODE_ENV=$(NODE_ENV) npm run watch
clean: clean:
rm -rf dist/ rm -rf dist/
[ ! -e cockpit-$(PACKAGE_NAME).spec.in ] || rm -f cockpit-$(PACKAGE_NAME).spec [ ! -e cockpit-$(PACKAGE_NAME).spec.in ] || rm -f cockpit-$(PACKAGE_NAME).spec
@ -81,29 +86,32 @@ devel-install: $(WEBPACK_TEST)
mkdir -p ~/.local/share/cockpit mkdir -p ~/.local/share/cockpit
ln -s `pwd`/dist ~/.local/share/cockpit/$(PACKAGE_NAME) ln -s `pwd`/dist ~/.local/share/cockpit/$(PACKAGE_NAME)
dist-gzip: $(TARFILE)
# when building a distribution tarball, call webpack with a 'production' environment # when building a distribution tarball, call webpack with a 'production' environment
# ship a stub node_modules/ so that `make` works without re-running `npm install` # we don't ship node_modules for license and compactness reasons; we ship a
dist-gzip: NODE_ENV=production # pre-built dist/ (so it's not necessary) and ship packge-lock.json (so that
dist-gzip: all cockpit-$(PACKAGE_NAME).spec # node_modules/ can be reconstructed if necessary)
$(TARFILE): NODE_ENV=production
$(TARFILE): $(WEBPACK_TEST) cockpit-$(PACKAGE_NAME).spec
if type appstream-util >/dev/null 2>&1; then appstream-util validate-relax --nonet *.metainfo.xml; fi
mv node_modules node_modules.release mv node_modules node_modules.release
mkdir -p $(NODE_MODULES_TEST)
touch -r package.json $(NODE_MODULES_TEST) touch -r package.json $(NODE_MODULES_TEST)
touch dist/* touch dist/*
tar czf cockpit-$(PACKAGE_NAME)-$(VERSION).tar.gz --transform 's,^,cockpit-$(PACKAGE_NAME)/,' \ tar czf cockpit-$(PACKAGE_NAME)-$(VERSION).tar.gz --transform 's,^,cockpit-$(PACKAGE_NAME)/,' \
--exclude cockpit-$(PACKAGE_NAME).spec.in \ --exclude cockpit-$(PACKAGE_NAME).spec.in \
$$(git ls-files) cockpit-$(PACKAGE_NAME).spec dist/ node_modules $$(git ls-files) package-lock.json cockpit-$(PACKAGE_NAME).spec dist/
rm -rf node_modules
mv node_modules.release node_modules mv node_modules.release node_modules
srpm: dist-gzip cockpit-$(PACKAGE_NAME).spec srpm: $(TARFILE) cockpit-$(PACKAGE_NAME).spec
appstream-util validate-relax --nonet *.metainfo.xml
rpmbuild -bs \ rpmbuild -bs \
--define "_sourcedir `pwd`" \ --define "_sourcedir `pwd`" \
--define "_srcrpmdir `pwd`" \ --define "_srcrpmdir `pwd`" \
cockpit-$(PACKAGE_NAME).spec cockpit-$(PACKAGE_NAME).spec
rpm: dist-gzip cockpit-$(PACKAGE_NAME).spec rpm: $(RPMFILE)
appstream-util validate-relax --nonet ./*.metainfo.xml
$(RPMFILE): $(TARFILE) cockpit-$(PACKAGE_NAME).spec
mkdir -p "`pwd`/output" mkdir -p "`pwd`/output"
mkdir -p "`pwd`/rpmbuild" mkdir -p "`pwd`/rpmbuild"
rpmbuild -bb \ rpmbuild -bb \
@ -117,11 +125,13 @@ rpm: dist-gzip cockpit-$(PACKAGE_NAME).spec
find `pwd`/output -name '*.rpm' -printf '%f\n' -exec mv {} . \; find `pwd`/output -name '*.rpm' -printf '%f\n' -exec mv {} . \;
rm -r "`pwd`/rpmbuild" rm -r "`pwd`/rpmbuild"
rm -r "`pwd`/output" "`pwd`/build" rm -r "`pwd`/output" "`pwd`/build"
# sanity check
test -e "$(RPMFILE)"
# build a VM with locally built rpm installed # build a VM with locally built rpm installed
$(VM_IMAGE): rpm bots $(VM_IMAGE): $(RPMFILE) bots
rm -f $(VM_IMAGE) $(VM_IMAGE).qcow2 rm -f $(VM_IMAGE) $(VM_IMAGE).qcow2
bots/image-customize -v -i cockpit-ws -i `pwd`/cockpit-$(PACKAGE_NAME)-*.noarch.rpm -s $(CURDIR)/test/vm.install $(TEST_OS) bots/image-customize -v -i cockpit-ws -i `pwd`/$(RPMFILE) -s $(CURDIR)/test/vm.install $(TEST_OS)
bots/image-customize -v -r "usermod -u 981 tlog || true" $(TEST_OS) bots/image-customize -v -r "usermod -u 981 tlog || true" $(TEST_OS)
bots/image-customize -v -u ./test/files/1.journal:/var/log/journal/1.journal $(TEST_OS) bots/image-customize -v -u ./test/files/1.journal:/var/log/journal/1.journal $(TEST_OS)
@ -130,11 +140,13 @@ vm: $(VM_IMAGE)
echo $(VM_IMAGE) echo $(VM_IMAGE)
# run the browser integration tests; skip check for SELinux denials # run the browser integration tests; skip check for SELinux denials
# this will run all tests/check-* and format them as TAP
check: $(NODE_MODULES_TEST) $(VM_IMAGE) test/common check: $(NODE_MODULES_TEST) $(VM_IMAGE) test/common
TEST_AUDIT_NO_SELINUX=1 test/check-application -s TEST_AUDIT_NO_SELINUX=1 test/common/run-tests
# checkout Cockpit's bots for standard test VM images and API to launch them # checkout Cockpit's bots for standard test VM images and API to launch them
# must be from master, as only that has current and existing images; but testvm.py API is stable # must be from master, as only that has current and existing images; but testvm.py API is stable
# support CI testing against a bots change
bots: bots:
sudo rm -rf bots sudo rm -rf bots
git clone --quiet --reference-if-able $${XDG_CACHE_HOME:-$$HOME/.cache}/cockpit-project/bots https://github.com/cockpit-project/bots.git git clone --quiet --reference-if-able $${XDG_CACHE_HOME:-$$HOME/.cache}/cockpit-project/bots https://github.com/cockpit-project/bots.git
@ -142,13 +154,17 @@ bots:
@echo "checked out bots/ ref $$(git -C bots rev-parse HEAD)" @echo "checked out bots/ ref $$(git -C bots rev-parse HEAD)"
# checkout Cockpit's test API; this has no API stability guarantee, so check out a stable tag # checkout Cockpit's test API; this has no API stability guarantee, so check out a stable tag
# when you start a new project, use the latest relese, and update it from time to time # when you start a new project, use the latest release, and update it from time to time
test/common: test/common:
git fetch --depth=1 https://github.com/cockpit-project/cockpit.git 219 git fetch --depth=1 https://github.com/cockpit-project/cockpit.git 220
git checkout --force FETCH_HEAD -- test/common git checkout --force FETCH_HEAD -- test/common
git reset test/common git reset test/common
$(NODE_MODULES_TEST): package.json $(NODE_MODULES_TEST): package.json
npm install # if it exists already, npm install won't update it; force that so that we always get up-to-date packages
rm -f package-lock.json
# unset NODE_ENV, skips devDependencies otherwise
env -u NODE_ENV npm install
env -u NODE_ENV npm prune
.PHONY: all bots clean install devel-install dist-gzip srpm rpm check vm update-po .PHONY: all clean install devel-install dist-gzip srpm rpm check vm update-po

View file

@ -1,5 +1,5 @@
Name: cockpit-session-recording Name: cockpit-session-recording
Version: @VERSION@ Version: %{VERSION}
Release: 1%{?dist} Release: 1%{?dist}
Summary: Cockpit Session Recording Summary: Cockpit Session Recording
License: LGPLv2+ License: LGPLv2+

View file

@ -8,11 +8,11 @@
# Check cockpituous documentation for available release targets. # Check cockpituous documentation for available release targets.
RELEASE_SOURCE="_release/source" RELEASE_SOURCE="_release/source"
RELEASE_SPEC="cockpit-starter-kit.spec" RELEASE_SPEC="cockpit-session-recording.spec"
RELEASE_SRPM="_release/srpm" RELEASE_SRPM="_release/srpm"
job release-source job release-source
job release-srpm job release-srpm -V
# Once you have a Fedora package and add the https://pagure.io/user/cockpit # Once you have a Fedora package and add the https://pagure.io/user/cockpit
# user to your project's maintainers, you can also upload to Fedora automatically: # user to your project's maintainers, you can also upload to Fedora automatically:

View file

@ -1,68 +1,63 @@
{ {
"name": "session-recording", "name": "session-recording",
"version": "0.1.0", "version": "0.1.0",
"description": "Scaffolding for a cockpit module", "description": "Module for Cockpit which provides session recording configuration and playback",
"main": "index.js", "main": "index.js",
"repository": "git@github.com:cockpit/starter-kit.git", "repository": "git@github.com:Scribery/cockpit-session-recording.git",
"author": "", "author": "",
"license": "LGPL-2.1", "license": "LGPL-2.1",
"scripts": { "scripts": {
"watch": "webpack --watch",
"build": "webpack", "build": "webpack",
"eslint": "eslint --ext .jsx --ext .es6 src/", "eslint": "eslint --ext .js --ext .jsx src/",
"eslint:fix": "eslint --fix --ext .jsx --ext .es6 src/" "eslint:fix": "eslint --fix --ext .js --ext .jsx src/"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.0.0", "@babel/core": "^7.5.4",
"@babel/preset-env": "^7.0.0", "@babel/preset-env": "^7.5.4",
"@babel/preset-react": "^7.0.0", "@babel/preset-react": "^7.0.0",
"babel-eslint": "^9.0.0", "babel-eslint": "^10.0.3",
"babel-loader": "^8.0.0", "babel-loader": "^8.0.0",
"chrome-remote-interface": "^0.25.5", "chrome-remote-interface": "^0.28.0",
"compression-webpack-plugin": "^1.1.11", "compression-webpack-plugin": "^1.1.11",
"copy-webpack-plugin": "^4.5.2", "copy-webpack-plugin": "^4.5.2",
"css-loader": "^0.28.11", "css-loader": "^3.0.0",
"eslint": "^5.4.0", "eslint": "^6.3.0",
"eslint-config-standard": "^11.0.0", "eslint-config-standard": "^14.1.0",
"eslint-config-standard-react": "^6.0.0", "eslint-config-standard-react": "^9.2.0",
"eslint-loader": "^2.1.0", "eslint-loader": "^3.0.0",
"eslint-plugin-flowtype": "^2.50.0", "eslint-plugin-flowtype": "^4.3.0",
"eslint-plugin-import": "^2.14.0", "eslint-plugin-import": "^2.18.2",
"eslint-plugin-node": "^7.0.1", "eslint-plugin-node": "^10.0.0",
"eslint-plugin-promise": "^4.0.0", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^6.9.0", "eslint-plugin-react": "^7.14.3",
"eslint-plugin-standard": "^3.1.0", "eslint-plugin-react-hooks": "^2.1.2",
"extract-text-webpack-plugin": "^4.0.0-beta.0", "eslint-plugin-standard": "^4.0.1",
"htmlparser": "^1.7.7", "htmlparser": "^1.7.7",
"jed": "^1.1.1", "jed": "^1.1.1",
"jshint": "~2.9.1", "mini-css-extract-plugin": "^0.9.0",
"jshint-loader": "~0.8.3", "node-sass": "^4.14.1",
"less": "~3.0.1", "po2json": "^1.0.0-alpha",
"less-loader": "~4.0.6",
"po2json": "^0.4.5",
"sass-loader": "^7.0.3", "sass-loader": "^7.0.3",
"sizzle": "^2.3.3", "sizzle": "^2.3.3",
"stdio": "^0.2.7", "stdio": "^0.2.7",
"webpack": "^4.19.0", "string-replace-loader": "^2.3.0",
"webpack": "^4.17.1",
"webpack-cli": "^3.1.0" "webpack-cli": "^3.1.0"
}, },
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.0.0", "@patternfly/patternfly": "^4.16.7",
"bootstrap": "3.3.7", "@patternfly/react-core": "^4.23.1",
"bootstrap-datetime-picker": "2.4.4", "@patternfly/react-table": "^4.8.6",
"bootstrap-slider": "^10.2.1",
"comment-json": "^1.1.3", "comment-json": "^1.1.3",
"fs.extra": "^1.3.2", "core-js": "3.6.5",
"fs.realpath": "^1.0.0",
"ini": "^1.3.5", "ini": "^1.3.5",
"jquery": "3.3.1", "jquery": "3.5.1",
"moment": "2.22.2", "moment": "2.27.0",
"mustache": "2.3.0", "mustache": "2.3.0",
"node-sass": "^4.9.0",
"patternfly": "3.35.1",
"prop-types": "^15.6.2",
"raw-loader": "^0.5.1", "raw-loader": "^0.5.1",
"react": "^16.4.2", "react": "16.13.1",
"react-dom": "^16.4.2", "react-dom": "16.13.1",
"xterm": "^3.14.5" "xterm": "^3.14.5"
} }
} }

View file

@ -1,4 +1,8 @@
#! /bin/bash #! /bin/sh
set -eu
# This is the expected entry point for Cockpit CI; will be called without # This is the expected entry point for Cockpit CI; will be called without
# arguments but with an appropriate $TEST_OS # arguments but with an appropriate $TEST_OS, and optionally $TEST_SCENARIO
[ -z "${TEST_SCENARIO:-}" ] || export TEST_BROWSER="$TEST_SCENARIO"
make check make check