Skip to content

Instantly share code, notes, and snippets.

@imaustink
Last active August 11, 2017 01:17
Show Gist options
  • Save imaustink/72693934627c9fcc24ffbbb6b5163929 to your computer and use it in GitHub Desktop.
Save imaustink/72693934627c9fcc24ffbbb6b5163929 to your computer and use it in GitHub Desktop.
Create a contribution file if missing
var fs = require('fs');
var path = require('path');
module.exports = {
getOptions: function () {
return [];
},
run: function (directory, opts) {
try{
var name = require(path.join(directory, 'package.json')).name;
}catch(err){
console.error('No package.json, skipping!');
return Promise.resolve();
}
return Promise.all([
getMDFileByName(directory, 'contribute'),
getMDFileByName(directory, 'contributing')
]).then(([contribute, contributing]) => {
return new Promise((resolve, reject) => {
var file = contribute || contributing;
if(!file){
fs.writeFileSync(path.join(directory, 'CONTRIBUTING.md'), getContributingFile(name));
return resolve();
}
resolve();
});
});
}
};
function getMDFileByName(directory, name){
return new Promise((resolve, reject) => {
fs.readdir(directory, (err, files) => {
if(err) return reject(err);
var fileName = files.find(item => {
item = item.toLowerCase();
return item.startsWith(name) && (item.endsWith('md') || item.endsWith('markdown'));
});
resolve(fileName ? path.join(directory, fileName) : null);
});
});
}
function getContributingFile(name){
return `# Contributing to ${name}
Check out the [contribution guide on CanJS.com](https://canjs.com/doc/guides/contribute.html) for information on:
- [Code of Conduct](https://canjs.com/doc/guides/contribute.html#CodeofConduct)
- [Getting Help](https://canjs.com/doc/guides/contribute.html#GettingHelp)
- [Project Organization](https://canjs.com/doc/guides/contributing/project-organization.html)
- [Reporting Bugs](https://canjs.com/doc/guides/contributing/bug-report.html)
- [Suggesting Features](https://canjs.com/doc/guides/contributing/feature-suggestion.html)
- [Finding Ways to Contribute](https://canjs.com/doc/guides/contributing/finding-ways-to-contribute.html)
The rest of this guide has information that’s specific to this repository.
## Developing Locally
This section will walk you through setting up the [repository](https://github.com/canjs/${name}) on your computer.
### Signing up for GitHub
If you don’t already have a GitHub account, you’ll need to [create a new one](https://help.github.com/articles/signing-up-for-a-new-github-account/).
### Forking & cloning the repository
A “fork” is a copy of a repository in your personal GitHub account. “Cloning” is the process of getting the repository’s source code on your computer.
GitHub has a guide for [forking a repo](https://help.github.com/articles/fork-a-repo/). To fork ${name}, you can start by going to its [fork page](https://github.com/canjs/${name}/fork).
Next, you’ll want to clone the repo. [GitHub’s cloning guide](https://help.github.com/articles/cloning-a-repository/) explains how to do this on Linux, Mac, or Windows.
GitHub’s guide will [instruct you](https://help.github.com/articles/fork-a-repo/#step-2-create-a-local-clone-of-your-fork) to clone it with a command like:
\`\`\`shell
git clone https://github.com/YOUR-USERNAME/${name}
\`\`\`
Make sure you replace \`YOUR-USERNAME\` with your GitHub username.
### Installing the dependencies
After you’ve forked & cloned the repository, you’ll need to install the project’s dependencies.
First, make sure you’ve [installed Node.js and npm](https://docs.npmjs.com/getting-started/installing-node).
If you just cloned the repo from the command line, you’ll want to switch to the folder with your clone:
\`\`\`shell
cd ${name}
\`\`\`
Next, install the project’s dependencies with npm:
\`\`\`shell
npm install
\`\`\`
### Starting the development server
Run the following to start a dev server:
\`\`\`shell
npm run develop
\`\`\`
### Running the tests
You can manually run this repository’s tests in any browser by starting the dev server (see the section above) and visiting this page: http://localhost:8080/test/test.html
Firefox is used to run the repository’s automated tests from the command line. If you don’t already have it, [download Firefox](https://www.mozilla.org/en-US/firefox/new/). Mozilla has guides for installing it on [Linux](https://support.mozilla.org/t5/Install-and-Update/Install-Firefox-on-Linux/ta-p/2516), [Mac](https://support.mozilla.org/t5/Install-and-Update/How-to-download-and-install-Firefox-on-Mac/ta-p/3453), and [Windows](https://support.mozilla.org/t5/Install-and-Update/How-to-download-and-install-Firefox-on-Windows/ta-p/2210).
After Firefox is installed, you can run:
\`\`\`shell
npm test
\`\`\`
### Making a build
Run the following command to create a build:
\`\`\`shell
npm run build
\`\`\`
This will create a \`dist/\` folder that contains the AMD, CommonJS, and global module versions of the project.
`;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment