version: 3
vars:
VERSION: 0.2.1
tasks:
status:
desc: Show version and status
cmds:
- 'grep "^version" Cargo.toml'
- 'git status --short'
login-npm:
desc: Login to npm from .env
cmds:
- cmd: node -e "const os=require('os');const fs=require('fs');const m=fs.readFileSync('.env','utf8').match(/NPM_TOKEN=([^\\s]+)/);if(m){fs.writeFileSync(os.homedir()+'/.npmrc','//registry.npmjs.org/:_authToken='+m[1])}"
- npm whoami
login-cargo:
desc: Login to cargo from .env
cmds:
- cmd: node -e "const os=require('os');const fs=require('fs');const m=fs.readFileSync('.env','utf8').match(/CARGO_TOKEN=([^\\s]+)/);if(m){fs.writeFileSync(os.homedir()+'/.cargo/credentials.toml','[registry]\\n token = \\\"'+m[1]+'\\\"')}"
login:
desc: Login to npm and cargo
cmds:
- task: login-npm
- task: login-cargo
bump:
desc: Bump all versions
cmds:
- cmd: node -e "const fs=require('fs');const v='{{.CLI_ARGS}}';const c=fs.readFileSync('Cargo.toml','utf8').replace(/^version = .*/m,'version = \"'+v+'\"');fs.writeFileSync('Cargo.toml',c)"
- cmd: node -e "const fs=require('fs');const v='{{.CLI_ARGS}}';const p=JSON.parse(fs.readFileSync('npm/package.json'));p.version=v;fs.writeFileSync('npm/package.json',JSON.stringify(p,null,2))"
- echo "Bumped to {{.CLI_ARGS}}"
tag:
desc: Create git tag
cmds:
- 'git add Cargo.toml npm/package.json Cargo.lock'
- 'git commit -m "chore: bump to {{.CLI_ARGS}}"'
- 'git tag {{.CLI_ARGS}}'
- 'git push origin dev'
- 'git push origin {{.CLI_ARGS}}'
publish-npm:
desc: Publish to npm
dir: npm
cmds:
- task: login-npm
- 'cp ../LICENSE .'
- 'npm publish --access=public'
publish-cargo:
desc: Publish to cargo
cmds:
- task: login-cargo
- 'cargo publish --registry crates-io'
publish:
desc: Publish npm and cargo
cmds:
- task: login
- task: publish-npm
- task: publish-cargo
release:
desc: Full release workflow
cmds:
- task: login
- task: bump
vars: {CLI_ARGS: '{{.CLI_ARGS}}'}
- task: tag
vars: {CLI_ARGS: '{{.CLI_ARGS}}'}
- 'sleep 30'
- task: publish-npm
- task: publish-cargo
build:
desc: Build release
cmds:
- 'cargo build --release'
test:
desc: Run tests
cmds:
- 'cargo test'
default:
desc: List tasks
cmds:
- 'task --list'