Permalink
{ | |
"meta": { | |
"org": "videojs", | |
"name": "video.js", | |
"requirements": [ | |
{ | |
"name": "git", | |
"info": "http://git-scm.com" | |
}, | |
{ | |
"name": "node.js", | |
"info": "http://nodejs.org" | |
} | |
], | |
"urls": { | |
"repo_api": "https://api.github.com/repos/videojs/video.js", | |
"repo_ui": "https://github.com/videojs/video.js" | |
}, | |
"branches": { | |
"development": "master", | |
"release": "stable" | |
} | |
}, | |
"install": { | |
"desc": "Fork, download, and setup the project", | |
"steps": [ | |
{ "prompt": "confirm", "desc": "You will now be taken to Github where you will choose an account to fork the project under. Remember which account you choose." }, | |
{ "exec": "open https://github.com/{{meta.org}}/{{meta.name}}/fork" }, | |
{ "prompt": "text", "desc": "Which account did you choose? (no '@')", "id": "owner" }, | |
{ "exec": "git clone https://github.com/{{ owner }}/{{ meta.name }}.git" }, | |
{ "exec": "cd {{ meta.name }}", "desc": "Change to the project directory" }, | |
{ "include": "setup" } | |
] | |
}, | |
"setup": { | |
"desc": "Set up version control and install dependencies", | |
"steps": [ | |
[ "git fetch origin", "Get all git branches" ], | |
[ "git checkout -b stable origin/stable", "Create the stable branch for patches" ], | |
[ "git remote add upstream https://github.com/{{meta.org}}/{{meta.name}}.git", "Add the upstream project as a remote for pulling changes" ], | |
[ "git fetch upstream", "Get all upstream branches and changes" ], | |
{ "include": "update all" }, | |
[ "grunt", "Build the library" ] | |
] | |
}, | |
"update": { | |
"all": { | |
"steps": [ | |
{ "include": "update stable" }, | |
{ "include": "update master" }, | |
[ "npm install", "Download dependencies"] | |
] | |
}, | |
"local": { | |
"master": { | |
"steps": [ | |
[ "git checkout master", "Switch to the development branch" ], | |
[ "git pull upstream master", "Get any changes to master in the main project" ] | |
] | |
}, | |
"stable": { | |
"steps": [ | |
[ "git checkout stable", "Switch to the release branch" ], | |
[ "git pull upstream stable", "Get any changes to stable in the main project" ] | |
] | |
}, | |
"patch": { | |
"steps": [ | |
[ "git checkout patch", "Switch to the patch branch" ], | |
[ "git pull upstream patch", "Get any changes to patch in the main project" ] | |
] | |
} | |
}, | |
"remote": { | |
"master": { | |
"steps": [ | |
{ "include": "update local master" }, | |
[ "git push origin master", "Push any changes to your copy of the main project" ] | |
] | |
}, | |
"stable": { | |
"steps": [ | |
{ "include": "update local stable" }, | |
[ "git push origin stable", "Push any changes to your copy of the main project" ] | |
] | |
}, | |
"patch": { | |
"steps": [ | |
{ "include": "update local patch" }, | |
[ "git push origin patch", "Push any changes to your copy of the main project" ] | |
] | |
} | |
}, | |
"master": { | |
"steps": [ | |
{ "include": "update remote master" } | |
] | |
}, | |
"stable": { | |
"steps": [ | |
{ "include": "update remote stable" } | |
] | |
}, | |
"patch": { | |
"steps": [ | |
{ "include": "update remote patch" } | |
] | |
} | |
}, | |
"test": "grunt test" , | |
"watch": "grunt watch", | |
"server": "grunt connect", | |
"feature": { | |
"desc": "Create a new feature or general enhancement", | |
"baseBranch": "master", | |
"start": { | |
"desc": "Start a new feature", | |
"steps": [ | |
{ "include": "update {{meta.branches.development}}" }, | |
{ "include": "branch start" } | |
] | |
}, | |
"save": { | |
"desc": "Save changes to your feature", | |
"steps": [{ "include": "branch save" }] | |
}, | |
"submit": { | |
"desc": "Submit a pull request for a feature when it's finished", | |
"steps": [{ "include": "pull_request submit" }] | |
}, | |
"delete": { | |
"desc": "Delete the current feature branch", | |
"steps": [{ "include": "branch delete" }] | |
}, | |
"review": { | |
"desc": "Review a submitted feature", | |
"steps": [{ "include": "pull_request review" }] | |
}, | |
"modify": { | |
"desc": "Modify a submitted feature that you are reviewing", | |
"steps": [{ "include": "pull_request modify" }] | |
}, | |
"accept": { | |
"desc": "Merge a submitted feature", | |
"steps": [ | |
{ "include": "update {{meta.branches.development}}" }, | |
{ "include": "pull_request accept" } | |
] | |
} | |
}, | |
"patch": { | |
"desc": "Create an urgent fix for the latest stable version", | |
"baseBranch": "stable", | |
"start": { | |
"desc": "Start a new patch", | |
"finished": "Make your changes and then run `contrib patch submit`", | |
"steps": [ | |
{ "include": "update {{meta.branches.release}}" }, | |
{ "include": "branch start" } | |
] | |
}, | |
"save": { | |
"desc": "Save changes to your feature", | |
"steps": [{ "include": "branch save" }] | |
}, | |
"submit": { | |
"desc": "Submit a pull request for a patch when it's finished", | |
"steps": [{ "include": "pull_request submit" }] | |
}, | |
"delete": { | |
"desc": "Delete the current patch branch", | |
"steps": [{ "include": "branch delete" }] | |
}, | |
"review": { | |
"desc": "Review a submitted patch", | |
"steps": [{ "include": "pull_request review" }] | |
}, | |
"modify": { | |
"desc": "Modify a submitted patch that you are reviewing", | |
"steps": [{ "include": "pull_request modify" }] | |
}, | |
"accept": { | |
"desc": "Merge a submitted patch", | |
"steps": [ | |
{ "include": "update {{meta.branches.release}}" }, | |
{ "include": "pull_request accept" }, | |
[ "git checkout master", "Checkout the developmet branch" ], | |
[ "git merge stable", "Merge the patch changes" ], | |
[ "git push upstream master", "Push the development changes" ] | |
] | |
} | |
}, | |
"report": { | |
"desc": "Submit a bug report", | |
"steps": [ | |
{ "prompt": "text", "desc": "Create a title that is descriptive of the problem", "id": "title" }, | |
{ "prompt": "text", "desc": "What did you do? (steps to reproduce)", "id": "reproduce" }, | |
{ "prompt": "text", "desc": "What did you expect to happen?", "id": "expected" }, | |
{ "prompt": "text", "desc": "What actually happened?", "id": "actual" }, | |
{ "prompt": "text", "desc": "What version of video.js are you using?", "id": "version" }, | |
{ "prompt": "text", "desc": "Are you using any video.js plugins?", "id": "plugins" }, | |
{ "prompt": "text", "desc": "What browsers/platforms did you experience this in (e.g. Win 7, IE10; Android 4, Chrome;)?", "id": "browsers" }, | |
{ "prompt": "text", "desc": "Is there a URL to a live example, or a jsbin (e.g. http://jsbin.com/axedog/9999/edit)?", "id": "example" }, | |
{ "prompt": "text", "desc": "Are there any other details you'd like to provide?", "id": "details" }, | |
{ "open": "{{meta.urls.repo_ui}}/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}}" } | |
], | |
"finished": "Thanks for submitting a bug report! One of our contributors will address it as soon as possible." | |
}, | |
"request": { | |
"desc": "Submit a feature/enhancement request", | |
"steps": [ | |
{ "prompt": "text", "desc": "Create a title that is descriptive of the enhancement", "id": "title" }, | |
{ "prompt": "text", "desc": "Describe the feature/enhancement (be as detailed as possible so it's clear who, why, and how it would be used)", "id": "describe" }, | |
{ "prompt": "text", "desc": "Is there any existing documentation or related specifications?", "id": "docs" }, | |
{ "prompt": "text", "desc": "Are there any existing examples?", "id": "examples" }, | |
{ "prompt": "confirm", "desc": "You will be redirected to Github where you can submit this issue, OK?" }, | |
{ "open": "{{meta.urls.repo_ui}}/issues/new?title={{ title }}&body=**Describe the feature/enhancement:**\n> {{ describe }}\n\n**Existing docs/specs:**\n> {{ docs }}\n\n**Existing examples:**\n> {{ examples }}" } | |
], | |
"finished": "Thanks for submitting a feature request! One of our contributors will address it as soon as possible." | |
}, | |
"release": { | |
"desc": "Create and publish releases", | |
"patch": { | |
"release_type": "patch", | |
"description": "Create a patch release from the release branch (stable)", | |
"steps": [{ "include": "release run" }] | |
}, | |
"minor": { | |
"description": "Create a minor release from the development branch (master)", | |
"release_type": "minor", | |
"steps": [ | |
{ "include": "update local master" }, | |
{ "include": "update local stable" }, | |
[ "git merge master", "Copy the latest development changes to the release branch" ], | |
{ "include": "release run" }, | |
[ "git checkout master", "Checkout the developmet branch" ], | |
[ "git merge stable", "Merge package changes into the dev brach" ], | |
[ "git push upstream master", "Push the dev branch changes to the repo" ] | |
] | |
}, | |
"next": { | |
"patch": { | |
"description": "Create a patch release and tag it @next on npm", | |
"release_type": "patch", | |
"steps": [{ "include": "release run_next" }] | |
}, | |
"minor": { | |
"description": "Create a minor release and tag it @next on npm", | |
"release_type": "minor", | |
"steps": [{ "include": "release run_next" }] | |
}, | |
"major": { | |
"description": "Create a major release and tag it @next on npm", | |
"release_type": "major", | |
"steps": [{ "include": "release run_next" }] | |
} | |
}, | |
"prerelease": { | |
"release_type": "prerelease", | |
"steps": [{ "include": "release run_next" }] | |
}, | |
"run_next": { | |
"steps": [ | |
{ "include": "branch check" }, | |
{ "include": "update local master" }, | |
[ "git checkout -b temp-release-branch master","Create a temporary branch for the dist" ], | |
[ "grunt version:{{release_type}}", "Bump package versions" ], | |
[ "./build/bin/version", "Return the current VJS Version from the package.json file", "version" ], | |
[ "grunt chg-release:{{version}}", "Update the changelog with the new release" ], | |
[ "git commit -am 'v{{version}}'", "Add and commit the package changes" ], | |
[ "git checkout master", "Checkout the developmet branch" ], | |
[ "git merge temp-release-branch", "Merge package changes into the dev brach" ], | |
[ "git push upstream master", "Push the dev branch changes to the repo" ], | |
[ "git checkout temp-release-branch", "Checkout the temp branch again" ], | |
[ "grunt dist", "Build the dist" ], | |
[ "git add dist --force", "Add the (otherwise ignored) release files" ], | |
[ "git commit -m 'v{{version}} dist'", "Commit the dist changes" ], | |
[ "git tag -a v{{version}} -m 'v{{version}}'", "Tag the release" ], | |
[ "git push upstream --tags", "Push the new tag to the repo" ], | |
[ "grunt github-release:prerelease", "Create a new pre-release on Github" ], | |
[ "npm publish --tag next", "Publish to npm as 'next'" ], | |
[ "git checkout master", "Checkout the developmet branch" ], | |
[ "git branch -D temp-release-branch", "Delete the temp release branch" ] | |
] | |
}, | |
"run": { | |
"steps": [ | |
{ "include": "branch check" }, | |
{ "include": "update local stable" }, | |
[ "npm install", "Ensure dependency updates have been installed" ], | |
[ "grunt test", "Run tests" ], | |
[ "grunt version:{{release_type}}", "Bump package versions" ], | |
[ "./build/bin/version", "Return the current VJS Version from the package.json file", "version" ], | |
[ "grunt chg-release:{{version}}", "Update the changelog with the new release" ], | |
[ "git commit -am 'v{{version}}'", "Add and commit the package changes" ], | |
[ "git push upstream stable", "Push the release branch changes to the repo" ], | |
[ "git checkout -b temp-release-branch stable","Create a temporary branch for the dist" ], | |
[ "grunt dist", "Build the dist" ], | |
[ "git add dist --force", "Add the (otherwise ignored) release files" ], | |
[ "git commit -m 'v{{version}} dist'", "Commit the dist changes" ], | |
[ "git tag -a v{{version}} -m 'v{{version}}'", "Tag the release" ], | |
[ "git push upstream --tags", "Push the new tag to the repo" ], | |
[ "npm publish", "Publish to npm" ], | |
[ "grunt github-release:release", "Create a new release on Github" ], | |
[ "git checkout stable", "Checkout the developmet branch" ], | |
[ "git branch -D temp-release-branch", "Delete the temp release branch" ] | |
] | |
} | |
}, | |
"branch": { | |
"private": true, | |
"start": { | |
"steps": [ | |
{ "prompt": "text", "id": "name", "desc": "Name the branch" }, | |
{ "exec": "git checkout -b {{name}} {{baseBranch}}", "desc": "Create the branch" }, | |
{ "exec": "git push -u origin {{name}}", "desc": "Push the branch to your remote copy of the project" } | |
] | |
}, | |
"save": { | |
"desc": "Commit and push changes made to files in the project", | |
"steps": [ | |
{ "include": "branch confirm" }, | |
{ "prompt": "text", "id": "message", "desc": "Briefly describe the changes made" }, | |
{ "exec": "git add .", "desc": "Add the changes" }, | |
{ "exec": "git commit -m '{{message}}'", "desc": "Commit the changes" }, | |
{ "exec": "git push origin {{branch_name}}", "desc": "Push the changes to your remote copy of the project" } | |
] | |
}, | |
"check": { | |
"private": true, | |
"desc": "Check for unsaved changes", | |
"steps": [ | |
{ "exec": "git diff --exit-code", "desc": "Ensure there's no unadded changes", "fail": "Make sure all changes have been saved (added and committed) or stashed" }, | |
{ "exec": "git diff --cached --exit-code", "desc": "Ensure there's no uncommitted changes", "fail": "Make sure all changes have been saved (added and committed) or stashed" } | |
] | |
}, | |
"name": { | |
"private": true, | |
"steps": [ | |
{ "exec": "git rev-parse --abbrev-ref HEAD", "desc": "Get the current branch", "id": "branch_name" } | |
] | |
}, | |
"confirm": { | |
"private": true, | |
"steps": [ | |
{ "include": "branch name" }, | |
{ "prompt": "confirm", "desc": "Are you sure *{{branch_name}}* is the correct branch?" } | |
] | |
}, | |
"delete": { | |
"desc": "Delete the current branch", | |
"steps": [ | |
{ "include": "branch confirm" }, | |
{ "exec": "git checkout master", "desc": "Exit the branch being deleted" }, | |
{ "exec": "git branch -D {{branch_name}}", "desc": "Delete the local copy of the branch" }, | |
{ "exec": "git push origin :{{branch_name}}", "desc": "Delete the remote copy of the branch" } | |
] | |
} | |
}, | |
"pull_request": { | |
"private": true, | |
"desc": "Pull request related commands", | |
"prepare": { | |
"private": true, | |
"steps": [ | |
{ "include": "branch check" }, | |
{ "include": "branch confirm" }, | |
{ "include": "test" }, | |
{ "prompt": "text", "desc": "Which github user or org are you submitting from?", "id": "user" } | |
] | |
}, | |
"submit": { | |
"desc": "Submit a pull request for when the change is finished", | |
"steps": [ | |
{ "include": "pull_request prepare" }, | |
{ "open": "{{meta.urls.repo_ui}}/compare/videojs:{{baseBranch}}...{{user}}:{{branch_name}}", "desc": "Open the github pull request page" } | |
] | |
}, | |
"review": { | |
"steps": [ | |
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" }, | |
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" }, | |
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Get the pull request changes but don't merge them" ], | |
[ "git merge-base master FETCH_HEAD", "Get the common ancestor commit", "base" ], | |
[ "git checkout -b review-{{pr.user.login}}-{{pr.head.ref}} {{base}}", "Create a new local branch for the pull request that has a base of the common commit" ], | |
[ "git merge FETCH_HEAD", "Merge in the pull request changes" ], | |
[ "npm install", "Install any new dependencies" ], | |
[ "grunt test", "Build and run tests" ] | |
] | |
}, | |
"modify": { | |
"desc": "Submit a modification to a pull request that you are currently reviewing", | |
"steps": [ | |
{ "include": "pull_request prepare" }, | |
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" }, | |
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" }, | |
{ "exec": "git push -u origin {{branch_name}}", "desc": "Push the changes to the remote repo" }, | |
{ "open": "https://github.com/{{user}}/video.js/compare/{{pr.head.label}}...{{user}}:{{branch_name}}", "desc": "Open the github pull request page" } | |
] | |
}, | |
"accept": { | |
"steps": [ | |
{ "prompt": "text", "id": "prNum", "desc": "What is the the pull request number?" }, | |
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" }, | |
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}/commits", "desc": "Get the PR commits to access author info", "id": "prCommits" }, | |
[ "git checkout -b {{pr.user.login}}/{{pr.head.ref}} {{pr.base.ref}}", "Create a new branch for merging the changes" ], | |
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Fetch the changes" ], | |
[ "git merge --no-commit --squash FETCH_HEAD", "Merge the changes in without committing so they can be squashed" ], | |
[ "grunt test", "Run tests to make sure they still pass" ], | |
{ "prompt": "text", "id": "line", "desc": "Describe this change in one line" }, | |
[ "grunt chg-add:'{{{line}}} ([view](https\\://github.com/videojs/video.js/pull/{{prNum}}))'", "Add a line to the changelog" ], | |
[ "git add CHANGELOG.md", "Add the changlelog change to be committed" ], | |
[ "git commit -a --author='{{prCommits.[0].commit.author.name}} <{{prCommits.[0].commit.author.email}}>' -m '{{line}}. closes #{{prNum}}'", "Commit the changes" ], | |
{ "prompt": "confirm", "desc": "Does everything look ok?" }, | |
[ "git checkout {{pr.base.ref}}", "Check out the base branch" ], | |
[ "git merge {{pr.user.login}}/{{pr.head.ref}}", "Merge the changes" ], | |
[ "git push origin {{pr.base.ref}}", "Push the changes to your remote copy of the project" ], | |
[ "git push upstream {{pr.base.ref}}", "Push the changes to the main project" ], | |
[ "git branch -D {{pr.user.login}}/{{pr.head.ref}}", "Delete the local branch used for merging" ] | |
] | |
} | |
} | |
} |