8000 angular.js/changelog.js at master · elgalu/angular.js · GitHub
[go: up one dir, main page]

Skip to content
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":"benchmarks","path":"benchmarks","contentType":"directory"},{"name":"css","path":"css","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"i18n","path":"i18n","contentType":"directory"},{"name":"images","path":"images","contentType":"directory"},{"name":"lib","path":"lib","contentType":"directory"},{"name":"logs","path":"logs","contentType":"directory"},{"name":"scripts","path":"scripts","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":"test","path":"test","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".jscs.json","path":".jscs.json","contentType":"file"},{"name":".jscs.json.todo","path":".jscs.json.todo","contentType":"file"},{"name":".jshintignore","path":".jshintignore","contentType":"file"},{"name":".jshintrc","path":".jshintrc","contentType":"file"},{"name":".jshintrc-base","path":".jshintrc-base","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"Gruntfile.js","path":"Gruntfile.js","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.closure.md","path":"README.closure.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"TRIAGING.md","path":"TRIAGING.md","contentType":"file"},{"name":"angularFiles.js","path":"angularFiles.js","contentType":"file"},{"name":"bower.json","path":"bower.json","contentType":"file"},{"name":"changelog.js","path":"changelog.js","contentType":"file"},{"name":"changelog.spec.js","path":"changelog.spec.js","contentType":"file"},{"name":"check-size.sh","path":"check-size.sh","contentType":"file"},{"name":"compare-master-to-stable.js","path":"compare-master-to-stable.js","contentType":"file"},{"name":"gdocs.js","path":"gdocs.js","contentType":"file"},{"name":"init-repo.sh","path":"init-repo.sh","contentType":"file"},{"name":"jenkins_build.sh","path":"jenkins_build.sh","contentType":"file"},{"name":"karma-docs.conf.js","path":"karma-docs.conf.js","contentType":"file"},{"name":"karma-jqlite.conf.js","path":"karma-jqlite.conf.js","contentType":"file"},{"name":"karma-jquery.conf.js","path":"karma-jquery.conf.js","contentType":"file"},{"name":"karma-modules.conf.js","path":"karma-modules.conf.js","contentType":"file"},{"name":"karma-shared.conf.js","path":"karma-shared.conf.js","contentType":"file"},{"name":"npm-shrinkwrap.json","path":"npm-shrinkwrap.json","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"protractor-conf.js","path":"protractor-conf.js","contentType":"file"},{"name":"protractor-jenkins-conf.js","path":"protractor-jenkins-conf.js","contentType":"file"},{"name":"protractor-shared-conf.js","path":"protractor-shared-conf.js","contentType":"file"},{"name":"protractor-travis-conf.js","path":"protractor-travis-conf.js","contentType":"file"},{"name":"validate-commit-msg.js","path":"validate-commit-msg.js","contentType":"file"},{"name":"validate-commit-msg.spec.js","path":"validate-commit-msg.spec.js","contentType":"file"}],"totalCount":47}},"fileTreeProcessingTime":8.690449,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":24611734,"defaultBranch":"master","name":"angular.js","ownerLogin":"elgalu","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2014-09-29T20:29:41.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/111569?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1617248664.515939","canEdit":false,"refType":"branch","currentOid":"76b755f3cb8e7d0d453d5f2ca3eaf2f2cdf82d1f"},"path":"changelog.js","currentUser":null,"blob":{"rawLines":["#!/usr/bin/env node","","// TODO(vojta): pre-commit hook for validating messages","// TODO(vojta): report errors, currently Q silence everything which really sucks","","'use strict';","","var child = require('child_process');","var fs = require('fs');","var util = require('util');","var q = require('qq');","","var GIT_LOG_CMD = 'git log --grep=\"%s\" -E --format=%s %s..HEAD';","var GIT_TAG_CMD = 'git describe --tags --abbrev=0';","","var HEADER_TPL = '\u003ca name=\"%s\"\u003e\u003c/a\u003e\\n# %s (%s)\\n\\n';","var LINK_ISSUE = '[#%s](https://github.com/angular/angular.js/issues/%s)';","var LINK_COMMIT = '[%s](https://github.com/angular/angular.js/commit/%s)';","","var EMPTY_COMPONENT = '$$';","","","var warn = function() {"," console.log('WARNING:', util.format.apply(null, arguments));","};","","","var parseRawCommit = function(raw) {"," if (!raw) return null;",""," var lines = raw.split('\\n');"," var msg = {}, match;",""," msg.hash = lines.shift();"," msg.subject = lines.shift();"," msg.closes = [];"," msg.breaks = [];",""," lines.forEach(function(line) {"," match = line.match(/(?:Closes|Fixes)\\s#(\\d+)/);"," if (match) msg.closes.push(parseInt(match[1]));"," });",""," match = raw.match(/BREAKING CHANGE:([\\s\\S]*)/);"," if (match) {"," msg.breaking = match[1];"," }","",""," msg.body = lines.join('\\n');"," match = msg.subject.match(/^(.*)\\((.*)\\)\\:\\s(.*)$/);",""," if (!match || !match[1] || !match[3]) {"," warn('Incorrect message: %s %s', msg.hash, msg.subject);"," return null;"," }",""," msg.type = match[1];"," msg.component = match[2];"," msg.subject = match[3];",""," return msg;","};","","","var linkToIssue = function(issue) {"," return util.format(LINK_ISSUE, issue, issue);","};","","","var linkToCommit = function(hash) {"," return util.format(LINK_COMMIT, hash.substr(0, 8), hash);","};","","","var currentDate = function() {"," var now = new Date();"," var pad = function(i) {"," return ('0' + i).substr(-2);"," };",""," return util.format('%d-%s-%s', now.getFullYear(), pad(now.getMonth() + 1), pad(now.getDate()));","};","","","var printSection = function(stream, title, section, printCommitLinks) {"," printCommitLinks = printCommitLinks === undefined ? true : printCommitLinks;"," var components = Object.getOwnPropertyNames(section).sort();",""," if (!components.length) return;",""," stream.write(util.format('\\n## %s\\n\\n', title));",""," components.forEach(function(name) {"," var prefix = '-';"," var nested = section[name].length \u003e 1;",""," if (name !== EMPTY_COMPONENT) {"," if (nested) {"," stream.write(util.format('- **%s:**\\n', name));"," prefix = ' -';"," } else {"," prefix = util.format('- **%s:**', name);"," }"," }",""," section[name].forEach(function(commit) {"," if (printCommitLinks) {"," stream.write(util.format('%s %s\\n (%s', prefix, commit.subject, linkToCommit(commit.hash)));"," if (commit.closes.length) {"," stream.write(',\\n ' + commit.closes.map(linkToIssue).join(', '));"," }"," stream.write(')\\n');"," } else {"," stream.write(util.format('%s %s', prefix, commit.subject));"," }"," });"," });",""," stream.write('\\n');","};","","","var readGitLog = function(grep, from) {"," var deferred = q.defer();",""," // TODO(vojta): if it's slow, use spawn and stream it instead"," child.exec(util.format(GIT_LOG_CMD, grep, '%H%n%s%n%b%n==END==', from), function(code, stdout, stderr) {"," var commits = [];",""," stdout.split('\\n==END==\\n').forEach(function(rawCommit) {"," var commit = parseRawCommit(rawCommit);"," if (commit) commits.push(commit);"," });",""," deferred.resolve(commits);"," });",""," return deferred.promise;","};","","","var writeChangelog = function(stream, commits, version) {"," var sections = {"," fix: {},"," feat: {},"," perf: {},"," breaks: {}"," };",""," sections.breaks[EMPTY_COMPONENT] = [];",""," commits.forEach(function(commit) {"," var section = sections[commit.type];"," var component = commit.component || EMPTY_COMPONENT;",""," if (section) {"," section[component] = section[component] || [];"," section[component].push(commit);"," }",""," if (commit.breaking) {"," sections.breaks[component] = sections.breaks[component] || [];"," sections.breaks[component].push({"," subject: util.format(\"due to %s,\\n %s\", linkToCommit(commit.hash), commit.breaking),"," hash: commit.hash,"," closes: []"," });"," }"," });",""," stream.write(util.format(HEADER_TPL, version, version, currentDate()));"," printSection(stream, 'Bug Fixes', sections.fix);"," printSection(stream, 'Features', sections.feat);"," printSection(stream, 'Performance Improvements', sections.perf);"," printSection(stream, 'Breaking Changes', sections.breaks, false);","};","","","var getPreviousTag = function() {"," var deferred = q.defer();"," child.exec(GIT_TAG_CMD, function(code, stdout, stderr) {"," if (code) deferred.reject('Cannot get the previous tag.');"," else deferred.resolve(stdout.replace('\\n', ''));"," });"," return deferred.promise;","};","","","var generate = function(version, file) {"," getPreviousTag().then(function(tag) {"," console.log('Reading git log since', tag);"," readGitLog('^fix|^feat|^perf|BREAKING', tag).then(function(commits) {"," console.log('Parsed', commits.length, 'commits');"," console.log('Generating changelog to', file || 'stdout', '(', version, ')');"," writeChangelog(file ? fs.createWriteStream(file) : process.stdout, commits, version);"," });"," });","};","","","// publish for testing","exports.parseRawCommit = parseRawCommit;","","// hacky start if not run by jasmine :-D","if (process.argv.join('').indexOf('jasmine-node') === -1) {"," generate(process.argv[2], process.argv[3]);","}"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/elgalu/angular.js/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"changelog.js","displayUrl":"https://github.com/elgalu/angular.js/blob/master/changelog.js?raw=true","headerInfo":{"blobSize":"5.35 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"cc0a5ce","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Felgalu%2Fangular.js%2Fblob%2Fmaster%2Fchangelog.js","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"208","truncatedSloc":"154"},"mode":"executable file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"JavaScript","languageID":183,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/elgalu/angular.js/blob/master/changelog.js","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/elgalu/angular.js/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/elgalu/angular.js/raw/refs/heads/master/changelog.js","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":null},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/elgalu/angular.js/branches":{"post":"Lz4jZVNmeNTyb8POiFb2W1cK2cNg2YcUkKtr9_n-oxaXTqSMBt9m4JHUTJiXFyAZ2GdURahBNe9CU-b3D5BsFw"},"/repos/preferences":{"post":"pU91oiXLcREgC0jKsVyN3dp1MNSLtzg_yQ3FRfvDLwC_7kVCxhMVpQ_PHZjTuHXl62CumSuq2YsMU1m4AvJUjw"}}},"title":"angular.js/changelog.js at master · elgalu/angular.js","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0