diff --git a/.circleci/config.yml b/.circleci/config.yml index 5de1a422..bba182e3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,38 +5,46 @@ jobs: docker: - image: node:latest working_directory: ~/cli + environment: + NYC: "yarn exec nyc -- --nycrc-path node_modules/@anycli/nyc-config/.nycrc" + MOCHA_FILE: "reports/mocha.xml" steps: - checkout - restore_cache: &restore_cache keys: - - v0-yarn-{{checksum ".circleci/config.yml"}}-{{ .Branch }}-{{checksum "yarn.lock"}} - - v0-yarn-{{checksum ".circleci/config.yml"}}-{{ .Branch }}- - - v0-yarn-{{checksum ".circleci/config.yml"}}-master- - - run: .circleci/test + - v0-yarn-{{checksum ".circleci/config.yml"}}-{{ checksum "yarn.lock"}} + - v0-yarn-{{checksum ".circleci/config.yml"}} + - run: .circleci/greenkeeper + - run: yarn add -D nyc@11 @anycli/nyc-config@0 mocha-junit-reporter@1 @commitlint/cli@6 @commitlint/config-conventional@6 + - run: | + mkdir -p reports + $NYC yarn test --reporter mocha-junit-reporter + $NYC report --reporter text-lcov > coverage.lcov + curl -s https://codecov.io/bash | bash + - run: yarn exec commitlint -- -x @commitlint/config-conventional --from origin/master - store_test_results: &store_test_results path: ~/cli/reports - - save_cache: &save_cache - key: v0-yarn-{{checksum ".circleci/config.yml"}}-{{ .Branch }}-{{checksum "yarn.lock"}} - paths: - - ~/cli/node_modules - - /usr/local/share/.cache/yarn - - /usr/local/share/.config/yarn node-8: <<: *test docker: - image: node:8 - steps: - - checkout - - restore_cache: *restore_cache - - run: .circleci/test - - store_test_results: *store_test_results release: <<: *test steps: - add_ssh_keys - checkout - restore_cache: *restore_cache - - run: .circleci/release + - run: yarn global add @anycli/semantic-release@1 semantic-release@12 + - run: yarn --frozen-lockfile + - run: | + export PATH=/usr/local/share/.config/yarn/global/node_modules/.bin:$PATH + semantic-release -e @anycli/semantic-release + - save_cache: + key: v0-yarn-{{checksum ".circleci/config.yml"}}-{{checksum "yarn.lock"}} + paths: + - ~/cli/node_modules + - /usr/local/share/.cache/yarn + - /usr/local/share/.config/yarn workflows: version: 2 diff --git a/.circleci/greenkeeper b/.circleci/greenkeeper new file mode 100755 index 00000000..02652544 --- /dev/null +++ b/.circleci/greenkeeper @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -ex + +PATH=/usr/local/share/.config/yarn/global/node_modules/.bin:$PATH + +if [[ "$CIRCLE_BRANCH" != greenkeeper/* ]]; then + yarn + yarn check + exit 0 +fi + +if [[ ! -z "$GIT_EMAIL" ]] & [[ ! -z "$GIT_USERNAME" ]]; then + git config --global push.default simple + git config --global user.email "$GIT_EMAIL" + git config --global user.name "$GIT_USERNAME" +fi + +if [[ ! -x "$(command -v greenkeeper-lockfile-update)" ]]; then + yarn global add greenkeeper-lockfile@1 +fi + +greenkeeper-lockfile-update +yarn install +greenkeeper-lockfile-upload diff --git a/.circleci/release b/.circleci/release deleted file mode 100755 index b79d9576..00000000 --- a/.circleci/release +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -.circleci/setup_git - -PATH=/usr/local/share/.config/yarn/global/node_modules/.bin:$PATH - -yarn global add @dxcli/semantic-release@1 semantic-release@12 -yarn install --frozen-lockfile -semantic-release -e @dxcli/semantic-release diff --git a/.circleci/setup_git b/.circleci/setup_git deleted file mode 100755 index ac226230..00000000 --- a/.circleci/setup_git +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -if [[ ! -z "$GIT_EMAIL" ]] & [[ ! -z "$GIT_USERNAME" ]]; then - git config --global push.default simple - git config --global user.email "$GIT_EMAIL" - git config --global user.name "$GIT_USERNAME" -fi - -git submodule sync -git submodule update --init --recursive diff --git a/.circleci/test b/.circleci/test deleted file mode 100755 index deb213c3..00000000 --- a/.circleci/test +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -.circleci/setup_git - -PATH=/usr/local/share/.config/yarn/global/node_modules/.bin:$PATH - -CLI_ENGINE_UTIL_YARN_ARGS="--frozen-lockfile" - -if [[ "$CIRCLE_BRANCH" == greenkeeper/* ]]; then - CLI_ENGINE_GREENKEEPER_BRANCH=1 - CLI_ENGINE_UTIL_YARN_ARGS="" - if [[ ! -x "$(command -v greenkeeper-lockfile-update)" ]]; then - yarn global add greenkeeper-lockfile@1 - fi - greenkeeper-lockfile-update -fi - -yarn install $CLI_ENGINE_UTIL_YARN_ARGS - -if [[ "$CLI_ENGINE_GREENKEEPER_BRANCH" == 1 ]]; then - greenkeeper-lockfile-upload -fi - -yarn add -D nyc @dxcli/nyc-config -yarn test - -curl -s https://codecov.io/bash | bash diff --git a/appveyor.yml b/appveyor.yml index 9bf8c438..87593df8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,14 +6,11 @@ cache: install: - ps: Install-Product node $env:nodejs_version x64 - - git submodule sync - - git submodule update --init --recursive - - git config --global user.email "anycli@example.com" - - git config --global user.name "anycli" - - yarn add -D nyc @anycli/nyc-config + - yarn add -D nyc@11 @anycli/nyc-config@0 test_script: - - yarn test + - .\node_modules\.bin\nyc --nycrc-path node_modules/@anycli/nyc-config/.nycrc yarn test after_test: + - .\node_modules\.bin\nyc --nycrc-path node_modules/@anycli/nyc-config/.nycrc report --reporter text-lcov > coverage.lcov - ps: | $env:PATH = 'C:\msys64\usr\bin;' + $env:PATH Invoke-WebRequest -Uri 'https://codecov.io/bash' -OutFile codecov.sh diff --git a/package-scripts.js b/package-scripts.js deleted file mode 100644 index aa1a8ec4..00000000 --- a/package-scripts.js +++ /dev/null @@ -1,53 +0,0 @@ -/* eslint-disable unicorn/filename-case */ - -const { - setColors, - concurrent, - crossEnv, - mkdirp, - series, -} = require('nps-utils') - -setColors(['dim']) - -const script = (script, description) => description ? {script, description} : {script} - -const linters = { - eslint: script('eslint .', 'lint js files'), - commitlint: script('commitlint --from origin/master', 'ensure that commits are in valid conventional-changelog format'), - tsc: script('tsc -p test --noEmit', 'syntax check with tsc'), - tslint: script('tslint -p test', 'lint ts files'), -} - -let mocha = 'mocha --forbid-only "test/**/*.test.ts"' -if (process.env.CI) { - if (process.env.CIRCLECI) { - // add mocha junit reporter - mocha = crossEnv(`MOCHA_FILE=reports/mocha.xml ${mocha} --reporter mocha-junit-reporter`) - // add eslint reporter - linters.eslint.script = `${linters.eslint.script} --format junit --output-file reports/eslint.xml` - // add tslint reporter - linters.tslint.script = `${linters.tslint.script} --format junit > reports/tslint.xml` - } - // add code coverage reporting with nyc - const nyc = 'nyc --nycrc-path node_modules/@anycli/nyc-config/.nycrc' - const nycReport = `${nyc} report --reporter text-lcov > coverage.lcov` - mocha = series(`${nyc} ${mocha}`, nycReport) -} - -let test = concurrent({ - ...linters, - test: series('nps build', mocha), -}) - -if (process.env.CI) test = series(mkdirp('reports'), test) - -module.exports = { - scripts: { - ...linters, - build: series('rm -rf lib', 'tsc'), - lint: concurrent(linters), - test, - mocha, - }, -} diff --git a/package.json b/package.json index 11b49912..757e4af0 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,7 @@ "supports-color": "^5.1.0" }, "devDependencies": { - "@anycli/tslint": "^0.2.1", - "@commitlint/cli": "^6.0.5", - "@commitlint/config-conventional": "^6.0.4", + "@anycli/tslint": "^0.2.2", "@types/ansi-styles": "^2.0.30", "@types/chai": "^4.1.2", "@types/clean-stack": "^1.3.0", @@ -41,14 +39,12 @@ "@types/strip-ansi": "^3.0.0", "@types/supports-color": "^3.1.0", "chai": "^4.1.2", + "concurrently": "^3.5.1", "eslint": "^4.16.0", "eslint-config-anycli": "^1.3.1", "fancy-test": "^0.6.6", "husky": "^0.14.3", "mocha": "^5.0.0", - "mocha-junit-reporter": "^1.17.0", - "nps": "^5.7.1", - "nps-utils": "^1.5.0", "ts-node": "^4.1.0", "typescript": "^2.7.1" }, @@ -66,10 +62,11 @@ "main": "lib/index.js", "repository": "anycli/cli-ux", "scripts": { - "commitmsg": "commitlint -x @commitlint/config-conventional -e $GIT_PARAMS", - "precommit": "nps lint -l warn", - "prepublishOnly": "nps build", - "test": "nps test -l warn" + "build": "rm -rf lib && tsc", + "lint": "concurrently -p command \"eslint .\" \"tsc -p test --noEmit\" \"tslint -p test\"", + "posttest": "yarn run lint", + "prepublishOnly": "yarn run build", + "test": "mocha --forbid-only \"test/**/*.test.ts\"" }, "types": "lib/index.d.ts" } diff --git a/src/styled/json.ts b/src/styled/json.ts index 0fe5d28e..9dc95721 100644 --- a/src/styled/json.ts +++ b/src/styled/json.ts @@ -12,5 +12,5 @@ export default function styledJSON(obj: any) { } let cardinal = require('cardinal') let theme = require('cardinal/themes/jq') - cli.info(cardinal.highlight(json, {json: true, theme}) + '\n') + cli.info(cardinal.highlight(json, {json: true, theme})) } diff --git a/tsconfig.json b/tsconfig.json index e297a398..12491d28 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,7 @@ "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "./lib", + "pretty": true, "rootDirs": [ "./src" ], diff --git a/yarn.lock b/yarn.lock index 7169c17c..a096b8e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,9 +6,9 @@ version "0.0.3" resolved "https://registry.yarnpkg.com/@anycli/screen/-/screen-0.0.3.tgz#f0afd970c3ed725702948a45a874ede1fdd9362e" -"@anycli/tslint@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@anycli/tslint/-/tslint-0.2.1.tgz#17295a3a4c579884cd3aea7ed1d8c07d11ecc624" +"@anycli/tslint@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@anycli/tslint/-/tslint-0.2.2.tgz#46e899f58019600fc6a7191e7fde47d6b4513df1" dependencies: tslint "^5.9.1" tslint-xo "^0.6.0" @@ -525,7 +525,7 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@^3.4.0: +concurrently@^3.4.0, concurrently@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" dependencies: