diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 965854d..9c5c36e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,37 +20,6 @@ build: - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.version = process.env.VERSION || json.version; json.__nxapi_release = process.env.CI_COMMIT_TAG; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" - PACKAGE=`npm --color="always" pack` - mv "$PACKAGE" nxapi.tgz - - - npx electron-builder build --macos zip --linux --publish never - - mv dist/app/package app - - - | - if [ "$CI_COMMIT_BRANCH" = "main" -a "$VERSION" != "" ]; then - if [ "$NPM_PUBLISH_NEXT" = "true" -a "$NPM_TOKEN" != "" ]; then - echo "Publishing $VERSION to npm" - # Prerelease version was already written to package.json - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc - npm --color="always" publish --tag next - fi - - if [ "$GITLAB_NPM_PUBLISH_NEXT" = "true" -a "$GITLAB_NPM_PACKAGE_NAME" != "" ]; then - echo "Publishing $VERSION to GitLab" - 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 --tag next - fi - - if [ "$GITHUB_NPM_PUBLISH_NEXT" = "true" -a "$GITHUB_NPM_PACKAGE_NAME" != "" -a "$GITHUB_REPOSITORY" != "" -a "$GITHUB_NPM_TOKEN" != "" ]; then - echo "Publishing $VERSION to GitHub" - 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 --tag next - fi - fi artifacts: paths: - dist @@ -121,20 +90,40 @@ build-docker: cache: policy: pull +build-app: + stage: build + script: + - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.__nxapi_release = process.env.CI_COMMIT_TAG; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + + - npx electron-builder build --macos zip --linux deb snap appimage --publish never + - mv dist/app/package app + dependencies: + - build + artifacts: + paths: + - app + exclude: + - app/mac/**/* + - app/win-unpacked/**/* + - app/linux-unpacked/**/* + only: + variables: + - $BUILD_APP == "true" + cache: + paths: + - node_modules/ + policy: pull + build-windows: stage: build image: electronuserland/builder:wine script: - - npx tsc - # Uses CI_COMMIT_TAG - - NODE_ENV=production npx rollup --config - - - node bin/nxapi.js util validate-discord-titles - - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.__nxapi_release = process.env.CI_COMMIT_TAG; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" - npx electron-builder build --win nsis --publish never - mv dist/app/package app + dependencies: + - build artifacts: paths: - app @@ -153,6 +142,8 @@ build-windows: publish-npm: stage: deploy script: + - "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.__nxapi_release = process.env.CI_COMMIT_TAG; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc - npm --color="always" publish dependencies: @@ -173,7 +164,7 @@ 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.json', JSON.stringify((json => {json.name = process.env.GITLAB_NPM_PACKAGE_NAME; json.publishConfig = {access: 'public'}; json.__nxapi_release = process.env.CI_COMMIT_TAG; 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 @@ -197,7 +188,7 @@ 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.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'}; json.__nxapi_release = process.env.CI_COMMIT_TAG; 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 @@ -217,3 +208,46 @@ publish-github: paths: - node_modules/ policy: pull + +publish-next: + stage: deploy + script: + - | + export VERSION=`[ "$CI_COMMIT_BRANCH" != "main" ] || node resources/build/ci-main-version.js` + "node -e \"fs.writeFileSync('package.json', JSON.stringify((json => {json.version = process.env.VERSION || json.version; json.__nxapi_release = process.env.CI_COMMIT_TAG; return json;})(JSON.parse(fs.readFileSync('package.json', 'utf-8'))), null, 4) + '\\n', 'utf-8')\"" + + if [ "$CI_COMMIT_BRANCH" = "main" -a "$VERSION" != "" ]; then + if [ "$NPM_PUBLISH_NEXT" = "true" -a "$NPM_TOKEN" != "" ]; then + echo "Publishing $VERSION to npm" + # Prerelease version was already written to package.json + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc + npm --color="always" publish --tag next + fi + + if [ "$GITLAB_NPM_PUBLISH_NEXT" = "true" -a "$GITLAB_NPM_PACKAGE_NAME" != "" ]; then + echo "Publishing $VERSION to GitLab" + 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 --tag next + fi + + if [ "$GITHUB_NPM_PUBLISH_NEXT" = "true" -a "$GITHUB_NPM_PACKAGE_NAME" != "" -a "$GITHUB_REPOSITORY" != "" -a "$GITHUB_NPM_TOKEN" != "" ]; then + echo "Publishing $VERSION to GitHub" + 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 --tag next + fi + fi + dependencies: + - build + only: + refs: + - main + cache: + paths: + - node_modules/ + policy: pull diff --git a/README.md b/README.md index fd1daeb..98ce86b 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,9 @@ node Nintendo\ Switch\ Online.app/Contents/Resources/app/dist/bundle/cli-bundle. # Windows node 'Nintendo Switch Online/resources/app/dist/bundle/cli-bundle.js' ... + +# Linux, installed via dpkg +node /opt/Nintendo\ Switch\ Online/resources/app/dist/bundle/cli-bundle.js ... ``` #### Do I need a Nintendo Switch Online membership? diff --git a/package.json b/package.json index 9891ed1..03a508c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.4.0", "description": "Nintendo Switch app APIs", "license": "AGPL-3.0-or-later", - "author": "Samuel Elliott", + "author": "Samuel Elliott ", "main": "dist/index.js", "type": "module", "repository": {