diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..388db77 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,94 @@ +image: node:latest + +cache: + paths: + - node_modules/ + +before_script: + - npm --color="always" install + +build: + stage: build + script: + - npx tsc + - PACKAGE=`npm --color="always" pack` + - mv "$PACKAGE" nxapi.tgz + + - npm run build-macos-linux + - npm run build-windows + - mv dist/bin/nxapi . + - mv dist/bin/nxapi.exe . + artifacts: + paths: + - dist + - nxapi.tgz + - nxapi + - nxapi.exe + +publish-npm: + stage: deploy + script: + - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc + - npm --color="always" publish + dependencies: + - build + only: + refs: + - /^v.*$/ + variables: + - $NPM_TOKEN + except: + - branches + cache: + paths: + - node_modules/ + policy: pull + +publish-gitlab: + stage: deploy + script: + # Update the package.json and package-lock.json + - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.name = process.env.GITLAB_NPM_PACKAGE_NAME; json.publishConfig = {access: 'public'}; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + - "node -e \"fs.writeFileSync('package-lock.json', JSON.stringify((json => {json.name = process.env.GITLAB_NPM_PACKAGE_NAME; return json;})(JSON.parse(fs.readFileSync('package-lock.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + + - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}" | sed s/^https:// > .npmrc + - npm --color="always" --registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/ publish + dependencies: + - build + only: + refs: + - /^v.*$/ + variables: + - $GITLAB_NPM_PUBLISH + - $GITLAB_NPM_PACKAGE_NAME + except: + - branches + cache: + paths: + - node_modules/ + policy: pull + +publish-github: + stage: deploy + script: + # Update the package.json and package-lock.json + - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.name = process.env.GITHUB_NPM_PACKAGE_NAME; json.publishConfig = {access: 'public'}; json.repository = {type: 'git', url: 'https://github.com/' + process.env.GITHUB_REPOSITORY + '.git'}; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + - "node -e \"fs.writeFileSync('package-lock.json', JSON.stringify((json => {json.name = process.env.GITHUB_NPM_PACKAGE_NAME; return json;})(JSON.parse(fs.readFileSync('package-lock.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + + - echo "//npm.pkg.github.com/:_authToken=${GITHUB_NPM_TOKEN}" > .npmrc + - npm --color="always" --registry=https://npm.pkg.github.com/ publish + dependencies: + - build + only: + refs: + - /^v.*$/ + variables: + - $GITHUB_REPOSITORY + - $GITHUB_NPM_PACKAGE_NAME + - $GITHUB_NPM_TOKEN + except: + - branches + cache: + paths: + - node_modules/ + policy: pull diff --git a/README.md b/README.md index 0aed8f7..8d1b8ec 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,17 @@ The API library and types are exported for use in JavaScript/TypeScript software ### Install +```sh +# From registry.npmjs.com +npm install --global nxapi + +# From gitlab.fancy.org.uk +npm install --global --registry https://gitlab.fancy.org.uk/api/v4/packages/npm/ @samuel/nxapi + +# From npm.pkg.github.com +npm install --global --registry https://npm.pkg.github.com @samuelthomas2774/nxapi +``` + #### Install from source Node.js and npm must already be installed. diff --git a/bin/nxapi.js b/bin/nxapi.js index 3d23368..b2767f9 100755 --- a/bin/nxapi.js +++ b/bin/nxapi.js @@ -1,3 +1,7 @@ #!/usr/bin/env node +import createDebug from 'debug'; + +createDebug.log = console.warn.bind(console); + import('../dist/cli.js').then(cli => cli.default.argv); diff --git a/package-lock.json b/package-lock.json index 5b67f21..f4ca16f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nxapi", - "version": "1.0.0", + "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "nxapi", - "version": "1.0.0", + "version": "0.1.0", "dependencies": { "body-parser": "^1.19.2", "cli-table": "^0.3.11", @@ -20,6 +20,7 @@ "node-notifier": "^10.0.1", "node-persist": "^3.1.0", "read": "^1.0.7", + "supports-color": "^8.1.1", "uuid": "^8.3.2", "yargs": "^17.3.1" }, @@ -1314,6 +1315,14 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -2429,6 +2438,20 @@ "node": ">=0.10.0" } }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -3738,6 +3761,11 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -4527,6 +4555,14 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", diff --git a/package.json b/package.json index c18ebea..78b182c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nxapi", - "version": "1.0.0", + "version": "0.1.0", "description": "", "author": "Samuel Elliott", "main": "dist/index.js", @@ -9,15 +9,20 @@ "type": "git", "url": "git@gitlab.fancy.org.uk:samuel/nxapi.git" }, + "files": [ + "dist", + "bin", + "resources" + ], "bin": { "nxapi": "bin/nxapi.js" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "cli": "node bin/nxapi.js", - "build-macos-linux": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nintendo-znc -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\"", - "build-macosapp": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nintendo-znc.app -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\" \"presence\"", - "build-windows": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nintendo-znc.exe -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\"", + "build-macos-linux": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nxapi -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\"", + "build-macosapp": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nxapi.app -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\" \"presence\"", + "build-windows": "caxa --input . --exclude src dist/bin data node_modules --prepare-command \"npm ci --production\" --output dist/bin/nxapi.exe -- \"{{caxa}}/node_modules/.bin/node\" \"{{caxa}}/bin/nxapi.js\"", "start": "node bin/nxapi.js presence" }, "dependencies": { @@ -33,6 +38,7 @@ "node-notifier": "^10.0.1", "node-persist": "^3.1.0", "read": "^1.0.7", + "supports-color": "^8.1.1", "uuid": "^8.3.2", "yargs": "^17.3.1" },