{ "project": { "owner": "videojs", "name": "video.js", "urls": { "git": "https://github.com/videojs/video.js.git" }, "requirements": [ { "name": "git", "info": "http://git-scm.com", "test": "which git" }, { "name": "node.js", "info": "http://nodejs.org", "test": "which node" } ] }, "install": { "steps": [ { "desc": "Get all git branches", "exec": "git fetch origin" }, { "desc": "Create the stable branch for patches", "exec": "git checkout -b stable origin/stable" }, { "desc": "Add the upstream project as a remote so new changes can be pulled", "exec": "git remote add upstream {{ project.urls.git }}" }, { "desc": "Get all upstream branches and changes", "exec": "git fetch upstream" }, { "contrib": "update" } ] }, "update": { "steps": [ { "desc": "Switch to the development branch", "exec": "git checkout master" }, { "desc": "Get any changes to master in the main project", "exec": "git pull upstream master" }, { "desc": "Switch to the release branch", "exec": "git checkout stable" }, { "desc": "Get any changes to stable in the main project", "exec": "git pull upstream stable" }, { "desc": "Install dependencies", "exec": "npm install" }, { "desc": "Build the distribution", "exec": "grunt" } ] }, "test": { "steps": [ { "desc": "Run automated tests", "exec": "grunt test" } ] }, "feature": { "desc": "Create a new feature or general enhancement", "start": { "desc": "Start a new feature", "steps": [ { "id": "name", "desc": "Name the feature branch", "prompt": { "type": "text", "message": "name" } }, { "desc": "Check out the development branch and get any updates", "exec": "git checkout master && git pull upstream master" }, { "desc": "Create the patch branch", "exec": "git checkout -b feature/{{ name }}" }, { "desc": "Push the branch to the origin repo", "exec": "git push -u origin feature/{{ name }}" } ] }, "submit": { "desc": "Submit a pull request for a feature when it's finished", "steps": [ { "desc": "Test for unadded changes {{ args.[0] }}", "exec": "git diff --exit-code", "fail": "Make sure all changes have been added and committed, or stashed, before switching branches" }, { "desc": "Test for uncommitted changes", "exec": "git diff --cached --exit-code", "fail": "Make sure all changes have been added and committed, or stashed, before switching branches" }, { "contrib": "test" }, { "id": "branch", "desc": "Get the current branch", "exec": "git rev-parse --abbrev-ref HEAD" }, { "desc": "Are you sure {{ branch }} is the branch you want to submit", "confirm": "confirm" }, { "id": "user", "desc": "Which github user or org are you submitting from?", "prompt": { "type": "text", "message": "user" } }, { "desc": "Open the github pull request page", "open": "https://github.com/videojs/video.js/compare/videojs:master...{{ user }}:{{ branch }}" } ] }, "review": { "steps": [ { "id": "prNum", "prompt": "What is the the pull request number?" }, { "id": "pr", "desc": "Get the PR information", "get": "https://api.github.com/repos/videojs/video.js/pulls/{{prNum}}" }, { "desc": "Checkout a new branch for reviewing changes", "exec": "git checkout -b review-{{pr.user.login}}-{{pr.head.ref}} {{pr.base.ref}}" }, { "desc": "Pull in the changes", "exec": "git pull {{pr.head.repo.ssh_url}} {{pr.head.ref}}" }, { "desc": "Build and run tests", "exec": "grunt test" } ] }, "accept": { "contrib": "update", "steps": [ { "id": "prNum", "prompt": "What is the the pull request number?" }, { "id": "pr", "desc": "Get the PR information", "get": "https://api.github.com/repos/videojs/video.js/pulls/{{prNum}}" }, { "id": "prCommits", "desc": "Get the PR commits to access author info", "get": "https://api.github.com/repos/videojs/video.js/pulls/{{prNum}}/commits" }, { "desc": "Create a new branch for merging the changes", "exec": "git checkout -b {{pr.user.login}}-{{pr.head.ref}} {{pr.base.ref}}" }, { "desc": "Fetch the changes", "exec": "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}" }, { "desc": "Merge the changes in without committing so they can be squashed", "exec": "git merge --no-commit --squash FETCH_HEAD" }, { "desc": "Run tests to make sure they still pass", "exec": "grunt test" }, { "id": "line", "prompt": "Describe this change in one line" }, { "desc": "Add a line to the changelog", "exec": "grunt chg-add:'{{line}} ([view](https\\://github.com/videojs/video.js/pull/{{prNum}}))'" }, { "desc": "Add the changlelog change to be committed", "exec": "git add CHANGELOG.md" }, { "desc": "Commit the changes", "exec": "git commit -a --author='{{prCommits.[0].commit.author.name}} <{{prCommits.[0].commit.author.email}}>' -m '{{line}}. closes #{{prNum}}'" }, { "confirm": "Does everything look ok?" }, { "desc": "Check out the base branch", "exec": "git checkout {{pr.base.ref}}" }, { "desc": "Merge the changes", "exec": "git merge {{pr.user.login}}-{{pr.head.ref}}" }, { "desc": "Push the changes", "exec": "git push origin {{pr.base.ref}}" } ] } }, "patch": { "desc": "Create an urgent fix for the latest stable version", "new": { "desc": "Start a new patch", "steps": [ { "id": "name", "desc": "Name the patch branch", "prompt": { "type": "text", "message": "name" } }, { "desc": "Check out the release branch and get any updates", "exec": "git checkout stable && git pull upstream stable" }, { "desc": "Create the patch branch", "exec": "git checkout -b patch/{{ name }}" }, { "desc": "Push the branch to the origin repo", "exec": "git push -u origin patch/{{ name }}" } ] }, "submit": { "desc": "Submit a pull request for a patch when it's finished", "steps": [ { "contrib": "test" }, { "desc": "Test for unadded changes", "exec": "git diff --exit-code", "fail": "Make sure all changes have been added and committed, or stashed, before switching branches" }, { "desc": "Test for uncommitted changes", "exec": "git diff --cached --exit-code", "fail": "Make sure all changes have been added and committed, or stashed, before switching branches" }, { "id": "branch", "desc": "Get the current branch", "exec": "git rev-parse --abbrev-ref HEAD" }, { "desc": "Are you sure {{ branch }} is the branch you want to submit", "confirm": "confirm" }, { "id": "user", "desc": "Which github user or org are you submitting from?", "prompt": { "type": "text", "message": "user" } }, { "desc": "Open the github pull request page", "open": "https://github.com/videojs/video.js/compare/videojs:stable...{{ user }}:{{ branch }}" } ] }, "delete": { "desc": "Delete the current patch branch", "steps": [ { "id": "name", "guide": false, "desc": "Get the current branch name", "exec": "git rev-parse --abbrev-ref HEAD" }, { "desc": "Confirm you are deleting the correct branch", "confirm": "Delete branch '{{ name }}'?" }, { "desc": "Delete the local copy of the branch", "exec": "git branch -D {{ name }}" }, { "desc": "Delete the remote copy of the branch", "exec": "git push origin :{{ name }}" } ] } }, "bug": { "desc": "Submit a bug report", "steps": [ { "id": "title", "prompt": "Title your bug report" }, { "id": "reproduce", "prompt": "What did you do? (steps to reproduce)" }, { "id": "expected", "prompt": "What did you expect to happen?" }, { "id": "actual", "prompt": "What actually happened?" }, { "id": "version", "prompt": "What version of video.js are you using?" }, { "id": "plugins", "prompt": "Are you using any video.js plugins?" }, { "id": "browsers", "prompt": "What browsers/platforms did you experience this in (e.g. Win 7, IE10; Android 4, Chrome;)?" }, { "id": "example", "prompt": "Is there a URL to a live example, or a jsbin (e.g. http://jsbin.com/axedog/9999/edit)?" }, { "id": "details", "prompt": "Are there any other details you'd like to provide?" }, { "open": "https://github.com/videojs/video.js/issues/new?title={{ title }}&body=**Steps to reproduce:**\n> {{ reproduce }}\n\n**What was expected:**\n> {{ expected }}\n\n**What Happened:**\n> {{ actual }}\n\n**Video.js Version:**\n> {{ version }}\n\n**Plugins:**\n> {{ plugins }}\n\n**Browsers experienced on:**\n> {{ browsers }}\n\n**Example:**\n> {{ example }}\n\n**Other details:**\n> {{ details }}" } ] }, "request": { "desc": "Submit a feature/enhancement request", "steps": [ { "id": "title", "prompt": "Title your request" }, { "id": "describe", "prompt": "Describe the feature/enhancement (be as detailed as possible so it's clear who, why, and how it would be used)" }, { "id": "docs", "prompt": "Is there any existing documentation or related specifications?" }, { "id": "examples", "prompt": "Are there any existing examples?" }, { "confirm": "You will be redirected to Github where you can submit this issue, OK?" }, { "open": "https://github.com/videojs/video.js/issues/new?title={{ title }}&body=**Describe the feature/enhancement:**\n> {{ describe }}\n\n**Existing docs/specs:**\n> {{ docs }}\n\n**Existing examples:**\n> {{ examples }}" } ] }, "release": { "desc": "Create and publish a release", "steps": [ { "desc": "Ensure there's no unadded changes", "exec": "git diff --exit-code" }, { "desc": "Ensure there's no added changes", "exec": "git diff --cached --exit-code" }, { "desc": "Have the changes been merged into the release branch (stable)?", "confirm": "confirm" }, { "id": "type", "desc": "Provide the release type", "prompt": { "message": "release type", "default": "patch", "type": "text" } }, { "desc": "Checkout and update the release branch", "exec": "git checkout stable & git pull" }, { "desc": "Run tests", "exec": "grunt test" }, { "desc": "Update the changelog with the new release", "exec": "grunt chg-release:{{ type }}" }, { "desc": "Bump package versions", "exec": "grunt version:{{ type }}" }, { "desc": "Build the release", "exec": "grunt" }, { "desc": "Add the (otherwise ignored) release files", "exec": "git add dist/video-js --force" }, { "desc": "Rebuild the docs", "exec": "grunt vjsdocs" }, { "desc": "Update the cdn urls in the docs", "exec": "grunt cdn-links" }, { "desc": "Tag the release", "exec": "grunt tagrelease" }, { "desc": "Push changes to the remote", "exec": "git push origin stable" }, { "desc": "Push tags to the remote", "exec": "git push --tags" }, { "desc": "Publish to npm", "exec": "npm publish" }, { "desc": "Checkout the development branch (master) and merge changes", "exec": "git checkout master && git merge stable" }, { "desc": "Remove built dist files to re-ignore them", "exec": "grunt clean:dist" }, { "desc": "Commit the removed dist files", "exec": "git add -u && git commit -m 'Removed dist files'" }, { "desc": "Push development branch changes", "exec": "git push origin master" } ] } }