@atlaskit/dependency-version-analytics 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +7 -4
- package/dist/cjs/cli.js +52 -17
- package/dist/cjs/commands/populate-historic-data/index.js +2 -2
- package/dist/cjs/commands/populate-historic-data/lib/dependency-store.js +227 -451
- package/dist/cjs/commands/populate-historic-data/package.js +31 -71
- package/dist/cjs/commands/populate-historic-data/product.js +130 -253
- package/dist/cjs/commands/populate-historic-data/util/allowed-scopes.js +15 -0
- package/dist/cjs/commands/populate-historic-data/util/generate-csv.js +16 -21
- package/dist/cjs/constants.js +2 -2
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/util/analytics.js +82 -94
- package/dist/cjs/util/get-file-history-from-git.js +4 -4
- package/dist/cjs/util/get-package-version-history.js +11 -7
- package/dist/cjs/util/git.js +75 -205
- package/dist/cjs/util/statlas.js +27 -97
- package/dist/cjs/util/yarn.js +40 -101
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/cli.js +10 -4
- package/dist/es2019/commands/populate-historic-data/lib/dependency-store.js +6 -4
- package/dist/es2019/commands/populate-historic-data/package.js +11 -6
- package/dist/es2019/commands/populate-historic-data/product.js +25 -7
- package/dist/es2019/commands/populate-historic-data/util/allowed-scopes.js +7 -0
- package/dist/es2019/commands/populate-historic-data/util/generate-csv.js +1 -1
- package/dist/es2019/util/analytics.js +13 -0
- package/dist/es2019/util/get-package-version-history.js +7 -3
- package/dist/es2019/version.json +1 -1
- package/dist/esm/cli.js +8 -3
- package/dist/esm/commands/populate-historic-data/lib/dependency-store.js +20 -15
- package/dist/esm/commands/populate-historic-data/package.js +27 -21
- package/dist/esm/commands/populate-historic-data/product.js +121 -81
- package/dist/esm/commands/populate-historic-data/util/allowed-scopes.js +11 -0
- package/dist/esm/commands/populate-historic-data/util/generate-csv.js +1 -1
- package/dist/esm/util/analytics.js +19 -5
- package/dist/esm/util/get-package-version-history.js +7 -3
- package/dist/esm/util/git.js +14 -13
- package/dist/esm/util/statlas.js +8 -7
- package/dist/esm/util/yarn.js +6 -5
- package/dist/esm/version.json +1 -1
- package/dist/types/commands/populate-historic-data/lib/dependency-store.d.ts +3 -2
- package/dist/types/commands/populate-historic-data/types.d.ts +3 -2
- package/dist/types/commands/populate-historic-data/util/allowed-scopes.d.ts +2 -0
- package/dist/types/commands/populate-historic-data/util/generate-csv.d.ts +2 -2
- package/dist/types/types.d.ts +7 -0
- package/dist/types/util/analytics.d.ts +2 -1
- package/dist/types/util/get-package-version-history.d.ts +7 -3
- package/package.json +2 -2
- package/report.api.md +5 -0
- package/tmp/api-report-tmp.d.ts +5 -0
- package/tokenize-arg-string.ts +0 -0
package/dist/cjs/index.js
CHANGED
|
@@ -5,19 +5,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
Object.defineProperty(exports, "populatePackage", {
|
|
7
7
|
enumerable: true,
|
|
8
|
-
get: function
|
|
8
|
+
get: function () {
|
|
9
9
|
return _populateHistoricData.populatePackage;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "populateProduct", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function
|
|
14
|
+
get: function () {
|
|
15
15
|
return _populateHistoricData.populateProduct;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "sendAnalytics", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function
|
|
20
|
+
get: function () {
|
|
21
21
|
return _analytics.sendAnalytics;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
@@ -6,26 +6,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.createUpgradeEvent = createUpgradeEvent;
|
|
8
8
|
exports.sendAnalytics = sendAnalytics;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
9
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
13
10
|
var _inquirer = _interopRequireDefault(require("inquirer"));
|
|
14
11
|
var _semver = _interopRequireDefault(require("semver"));
|
|
15
12
|
var _analyticsNodeClient = require("@atlassiansox/analytics-node-client");
|
|
16
13
|
var _version = require("../version.json");
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
|
|
16
|
+
/* eslint-disable-next-line import/no-unresolved */
|
|
17
|
+
|
|
19
18
|
function getUpgradeType(version, previousVersion) {
|
|
20
19
|
if (previousVersion == null && version != null) {
|
|
21
20
|
return 'add';
|
|
22
21
|
} else if (previousVersion != null && version == null) {
|
|
23
22
|
return 'remove';
|
|
24
23
|
} else if (previousVersion != null && version != null && previousVersion !== version) {
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const coercedPrevious = _semver.default.coerce(previousVersion);
|
|
25
|
+
const coercedNew = _semver.default.coerce(version);
|
|
27
26
|
if (coercedNew == null) {
|
|
28
|
-
console.error(
|
|
27
|
+
console.error(`Found invalid version "${version}", skipping`);
|
|
29
28
|
return null;
|
|
30
29
|
}
|
|
31
30
|
if (coercedPrevious != null && _semver.default.lt(coercedNew, coercedPrevious)) {
|
|
@@ -38,110 +37,99 @@ function getUpgradeType(version, previousVersion) {
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
function getUpgradeSubType(version, previousVersion) {
|
|
41
|
-
|
|
40
|
+
let upgradeSubType = null;
|
|
42
41
|
if (version == null || previousVersion == null) {
|
|
43
42
|
return upgradeSubType;
|
|
44
43
|
}
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const parsedOld = _semver.default.coerce(previousVersion);
|
|
45
|
+
const parsedNew = _semver.default.coerce(version);
|
|
47
46
|
if (parsedOld && parsedNew) {
|
|
48
47
|
upgradeSubType = _semver.default.diff(parsedOld.version, parsedNew.version);
|
|
49
48
|
}
|
|
50
49
|
return upgradeSubType;
|
|
51
50
|
}
|
|
52
|
-
function createUpgradeEvent(name, version, previousVersion, date) {
|
|
53
|
-
var optionalArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
51
|
+
function createUpgradeEvent(name, version, previousVersion, date, optionalArgs = {}) {
|
|
54
52
|
if (Number.isNaN(Date.parse(date))) {
|
|
55
|
-
throw new Error(
|
|
53
|
+
throw new Error(`Invalid date: '${date}'`);
|
|
56
54
|
}
|
|
57
|
-
|
|
55
|
+
const upgradeType = getUpgradeType(version, previousVersion);
|
|
58
56
|
if (!upgradeType) {
|
|
59
57
|
// Not an upgrade for this dependency, return null
|
|
60
58
|
return null;
|
|
61
59
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
const upgradeSubType = getUpgradeSubType(version, previousVersion);
|
|
61
|
+
const eventVersion = upgradeType !== 'remove' ? version : previousVersion;
|
|
62
|
+
const parsedVersion = _semver.default.coerce(eventVersion);
|
|
63
|
+
let rcKey = null;
|
|
64
|
+
const tags = (optionalArgs === null || optionalArgs === void 0 ? void 0 : optionalArgs.tags) ?? {};
|
|
65
|
+
Object.keys(tags).forEach(key => {
|
|
66
|
+
if (key.startsWith('rc')) {
|
|
67
|
+
rcKey = key;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
66
72
|
cliVersion: _version.version,
|
|
67
73
|
dependencyName: name,
|
|
68
74
|
versionString: eventVersion,
|
|
69
|
-
major: parsedVersion ?
|
|
70
|
-
minor: parsedVersion ?
|
|
71
|
-
patch: parsedVersion ?
|
|
75
|
+
major: parsedVersion ? `${parsedVersion.major}` : null,
|
|
76
|
+
minor: parsedVersion ? `${parsedVersion.minor}` : null,
|
|
77
|
+
patch: parsedVersion ? `${parsedVersion.patch}` : null,
|
|
72
78
|
date: new Date(date).toISOString(),
|
|
73
|
-
upgradeType
|
|
74
|
-
upgradeSubType
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
upgradeType,
|
|
80
|
+
upgradeSubType,
|
|
81
|
+
latestTag: (tags && tags['latest']) ?? null,
|
|
82
|
+
nextTag: tags['next'] ?? null,
|
|
83
|
+
hotfixTag: tags['hotfix'] ?? null,
|
|
84
|
+
rcTag: (rcKey && tags[rcKey]) ?? null,
|
|
85
|
+
...optionalArgs
|
|
86
|
+
};
|
|
79
87
|
}
|
|
80
|
-
function
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
tags: ['atlaskit'],
|
|
119
|
-
source: '@atlaskit/dependency-version-analytics',
|
|
120
|
-
action: 'upgraded',
|
|
121
|
-
actionSubject: 'akDependency',
|
|
122
|
-
attributes: _objectSpread({}, event),
|
|
123
|
-
origin: 'console',
|
|
124
|
-
platform: 'bot'
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}));
|
|
128
|
-
case 12:
|
|
129
|
-
promises = _context.sent;
|
|
130
|
-
console.log(_chalk.default.green("Sent ".concat(promises.length, " dependency version upgrade analytics events")));
|
|
131
|
-
_context.next = 21;
|
|
132
|
-
break;
|
|
133
|
-
case 16:
|
|
134
|
-
_context.prev = 16;
|
|
135
|
-
_context.t0 = _context["catch"](9);
|
|
136
|
-
console.error(_chalk.default.red('Sending analytics failed'));
|
|
137
|
-
console.error(_context.t0);
|
|
138
|
-
process.exit(1);
|
|
139
|
-
case 21:
|
|
140
|
-
case "end":
|
|
141
|
-
return _context.stop();
|
|
88
|
+
async function sendAnalytics(analyticsEvents, {
|
|
89
|
+
dev,
|
|
90
|
+
limit,
|
|
91
|
+
product,
|
|
92
|
+
skipPrompt
|
|
93
|
+
}) {
|
|
94
|
+
const analyticsEnv = dev ? 'dev' : 'prod';
|
|
95
|
+
const eventsToSend = limit != null ? analyticsEvents.slice(0, limit) : analyticsEvents;
|
|
96
|
+
const client = (0, _analyticsNodeClient.analyticsClient)({
|
|
97
|
+
env: dev ? 'dev' : 'prod',
|
|
98
|
+
product: product
|
|
99
|
+
});
|
|
100
|
+
if (!skipPrompt) {
|
|
101
|
+
const answers = await _inquirer.default.prompt([{
|
|
102
|
+
type: 'confirm',
|
|
103
|
+
name: 'continue',
|
|
104
|
+
message: `Are you sure you want to send ${eventsToSend.length} historical analytics events to '${analyticsEnv}' env for product '${product}?`,
|
|
105
|
+
default: false
|
|
106
|
+
}]);
|
|
107
|
+
if (!answers.continue) {
|
|
108
|
+
console.log('Aborting');
|
|
109
|
+
process.exit(0);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const promises = await Promise.all(eventsToSend.map(event => {
|
|
114
|
+
return client.sendTrackEvent({
|
|
115
|
+
anonymousId: 'unknown',
|
|
116
|
+
trackEvent: {
|
|
117
|
+
tags: ['atlaskit'],
|
|
118
|
+
source: '@atlaskit/dependency-version-analytics',
|
|
119
|
+
action: 'upgraded',
|
|
120
|
+
actionSubject: 'akDependency',
|
|
121
|
+
attributes: {
|
|
122
|
+
...event
|
|
123
|
+
},
|
|
124
|
+
origin: 'console',
|
|
125
|
+
platform: 'bot'
|
|
142
126
|
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
127
|
+
});
|
|
128
|
+
}));
|
|
129
|
+
console.log(_chalk.default.green(`Sent ${promises.length} dependency version upgrade analytics events`));
|
|
130
|
+
} catch (e) {
|
|
131
|
+
console.error(_chalk.default.red('Sending analytics failed'));
|
|
132
|
+
console.error(e);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
147
135
|
}
|
|
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = getFileHistoryFromGit;
|
|
7
7
|
var _child_process = require("child_process");
|
|
8
8
|
// Lock files tend to be huge
|
|
9
|
-
|
|
9
|
+
const FiveMBBuffer = 1024 * 5000;
|
|
10
10
|
function getFileHistoryFromGit(fileName) {
|
|
11
|
-
return new Promise(
|
|
12
|
-
(0, _child_process.exec)(
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
(0, _child_process.exec)(`git log ${fileName}`, {
|
|
13
13
|
maxBuffer: FiveMBBuffer
|
|
14
|
-
},
|
|
14
|
+
}, (error, stdout, stderr) => {
|
|
15
15
|
if (error) {
|
|
16
16
|
reject(error);
|
|
17
17
|
}
|
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = getPackageVersionHistoryAndTags;
|
|
7
7
|
var _child_process = require("child_process");
|
|
8
|
-
function
|
|
9
|
-
return new Promise(
|
|
10
|
-
(0, _child_process.exec)(
|
|
8
|
+
function getPackageVersionHistoryAndTags(packageName) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
(0, _child_process.exec)(`yarn info ${packageName} --json`, (error, stdout, stderr) => {
|
|
11
11
|
if (error) {
|
|
12
12
|
reject(error);
|
|
13
13
|
}
|
|
14
14
|
if (stderr) {
|
|
15
15
|
reject(stderr);
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
let json;
|
|
18
18
|
try {
|
|
19
|
-
|
|
19
|
+
const parseData = JSON.parse(stdout).data;
|
|
20
|
+
json = {
|
|
21
|
+
time: parseData['time'],
|
|
22
|
+
'dist-tags': parseData['dist-tags']
|
|
23
|
+
};
|
|
20
24
|
} catch (e) {
|
|
21
|
-
reject(
|
|
25
|
+
reject(`Error parsing json output: ${e}`);
|
|
22
26
|
}
|
|
23
27
|
resolve(json);
|
|
24
28
|
});
|
package/dist/cjs/util/git.js
CHANGED
|
@@ -11,54 +11,29 @@ exports.getHash = getHash;
|
|
|
11
11
|
exports.refetchTag = refetchTag;
|
|
12
12
|
exports.showFile = showFile;
|
|
13
13
|
exports.tagCommit = tagCommit;
|
|
14
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
17
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
18
14
|
var _simpleGit = _interopRequireDefault(require("simple-git"));
|
|
19
15
|
var _assert = require("./assert");
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
function getChangesSince(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Show filename changes - simple-git parses --stat flag but not --name-only unfortunately
|
|
42
|
-
'--stat=4096',
|
|
43
|
-
// Make +- graph width as small as possible to maximise filename length
|
|
44
|
-
'--stat-graph-width=1'].concat(revisionRange, [
|
|
45
|
-
// Any commit that modifies a package.json
|
|
46
|
-
':(glob)**/package.json']));
|
|
47
|
-
case 3:
|
|
48
|
-
listLogSummary = _context.sent;
|
|
49
|
-
return _context.abrupt("return", _objectSpread(_objectSpread({}, listLogSummary), {}, {
|
|
50
|
-
all: listLogSummary.all.map(function (logLine) {
|
|
51
|
-
return parseLogLine(logLine);
|
|
52
|
-
})
|
|
53
|
-
}));
|
|
54
|
-
case 5:
|
|
55
|
-
case "end":
|
|
56
|
-
return _context.stop();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}, _callee);
|
|
60
|
-
}));
|
|
61
|
-
return _getChangesSince.apply(this, arguments);
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
|
|
18
|
+
async function getChangesSince(since) {
|
|
19
|
+
const revisionRange = since ? [`${since}..`] : [];
|
|
20
|
+
const listLogSummary = await (0, _simpleGit.default)().log([
|
|
21
|
+
// Only commits on mainline master
|
|
22
|
+
'--first-parent',
|
|
23
|
+
// Show merge commit contents
|
|
24
|
+
'-m',
|
|
25
|
+
// Reverse the order
|
|
26
|
+
'--reverse',
|
|
27
|
+
// Show filename changes - simple-git parses --stat flag but not --name-only unfortunately
|
|
28
|
+
'--stat=4096',
|
|
29
|
+
// Make +- graph width as small as possible to maximise filename length
|
|
30
|
+
'--stat-graph-width=1', ...revisionRange,
|
|
31
|
+
// Any commit that modifies a package.json
|
|
32
|
+
':(glob)**/package.json']);
|
|
33
|
+
return {
|
|
34
|
+
...listLogSummary,
|
|
35
|
+
all: listLogSummary.all.map(logLine => parseLogLine(logLine))
|
|
36
|
+
};
|
|
62
37
|
}
|
|
63
38
|
function parseLogLine(logLine) {
|
|
64
39
|
if (!logLine.diff) {
|
|
@@ -66,185 +41,80 @@ function parseLogLine(logLine) {
|
|
|
66
41
|
}
|
|
67
42
|
|
|
68
43
|
// Split files into separate entries when a rename has occurred so both old and new files are processed
|
|
69
|
-
|
|
70
|
-
|
|
44
|
+
const parsedDiffFiles = logLine.diff.files.reduce((acc, curr) => {
|
|
45
|
+
const renameArrowCount = curr.file.match(/ => /g);
|
|
71
46
|
if (renameArrowCount == null) {
|
|
72
|
-
return [
|
|
47
|
+
return [...acc, curr];
|
|
73
48
|
}
|
|
74
49
|
// Multiple rename parts are not supported. They most likely don't exist in git but we check
|
|
75
50
|
// for them anyway just in case
|
|
76
|
-
(0, _assert.assert)(renameArrowCount.length === 1,
|
|
51
|
+
(0, _assert.assert)(renameArrowCount.length === 1, `Multiple rename parts detected: ${curr.file}`);
|
|
77
52
|
/* Matches:
|
|
78
53
|
* - '{new-frontend/src => src}/package.json'
|
|
79
54
|
* - 'new-frontend/.prettierrc.js => .prettierrc.js'
|
|
80
55
|
* - 'src/{ => platform}/analytics/package.json'
|
|
81
56
|
* - 'src/packages/spa/{main => }/package.json'
|
|
82
57
|
*/
|
|
83
|
-
|
|
84
|
-
(0, _assert.assert)(renameMatch != null,
|
|
85
|
-
|
|
58
|
+
const renameMatch = curr.file.match(/\{?([^{]+)? => ([^}]+)?\}?/);
|
|
59
|
+
(0, _assert.assert)(renameMatch != null, `Invalid rename format ${curr.file}`);
|
|
60
|
+
const oldFile = curr.file.replace(renameMatch[0], renameMatch[1] || '')
|
|
86
61
|
// If the previous name segment is empty, we will have a double slash
|
|
87
62
|
.replace('//', '/');
|
|
88
|
-
|
|
89
|
-
return [
|
|
63
|
+
const newFile = curr.file.replace(renameMatch[0], renameMatch[2] || '').replace('//', '/');
|
|
64
|
+
return [...acc, {
|
|
65
|
+
...curr,
|
|
90
66
|
file: oldFile
|
|
91
|
-
}
|
|
67
|
+
}, {
|
|
68
|
+
...curr,
|
|
92
69
|
file: newFile
|
|
93
|
-
}
|
|
70
|
+
}];
|
|
94
71
|
}, []);
|
|
95
|
-
return
|
|
96
|
-
|
|
72
|
+
return {
|
|
73
|
+
...logLine,
|
|
74
|
+
diff: {
|
|
75
|
+
...logLine.diff,
|
|
97
76
|
files: parsedDiffFiles
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function tagCommit(_x2) {
|
|
102
|
-
return _tagCommit.apply(this, arguments);
|
|
103
|
-
}
|
|
104
|
-
function _tagCommit() {
|
|
105
|
-
_tagCommit = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(tag) {
|
|
106
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
107
|
-
while (1) {
|
|
108
|
-
switch (_context2.prev = _context2.next) {
|
|
109
|
-
case 0:
|
|
110
|
-
return _context2.abrupt("return", (0, _simpleGit.default)().tag(['-f', tag]));
|
|
111
|
-
case 1:
|
|
112
|
-
case "end":
|
|
113
|
-
return _context2.stop();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}, _callee2);
|
|
117
|
-
}));
|
|
118
|
-
return _tagCommit.apply(this, arguments);
|
|
119
|
-
}
|
|
120
|
-
function doesTagExist(_x3) {
|
|
121
|
-
return _doesTagExist.apply(this, arguments);
|
|
122
|
-
}
|
|
123
|
-
function _doesTagExist() {
|
|
124
|
-
_doesTagExist = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(tag) {
|
|
125
|
-
var tags;
|
|
126
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
127
|
-
while (1) {
|
|
128
|
-
switch (_context3.prev = _context3.next) {
|
|
129
|
-
case 0:
|
|
130
|
-
_context3.next = 2;
|
|
131
|
-
return (0, _simpleGit.default)().tags((0, _defineProperty2.default)({}, tag, null));
|
|
132
|
-
case 2:
|
|
133
|
-
tags = _context3.sent;
|
|
134
|
-
return _context3.abrupt("return", tags.all.length > 0);
|
|
135
|
-
case 4:
|
|
136
|
-
case "end":
|
|
137
|
-
return _context3.stop();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}, _callee3);
|
|
141
|
-
}));
|
|
142
|
-
return _doesTagExist.apply(this, arguments);
|
|
143
|
-
}
|
|
144
|
-
function refetchTag(_x4) {
|
|
145
|
-
return _refetchTag.apply(this, arguments);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
146
79
|
}
|
|
147
|
-
function
|
|
148
|
-
|
|
149
|
-
var fetchTagResult;
|
|
150
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
151
|
-
while (1) {
|
|
152
|
-
switch (_context4.prev = _context4.next) {
|
|
153
|
-
case 0:
|
|
154
|
-
_context4.prev = 0;
|
|
155
|
-
_context4.next = 3;
|
|
156
|
-
return (0, _simpleGit.default)().tag(['-d', tag]);
|
|
157
|
-
case 3:
|
|
158
|
-
_context4.next = 9;
|
|
159
|
-
break;
|
|
160
|
-
case 5:
|
|
161
|
-
_context4.prev = 5;
|
|
162
|
-
_context4.t0 = _context4["catch"](0);
|
|
163
|
-
if (/tag.*not found/.test(_context4.t0.message)) {
|
|
164
|
-
_context4.next = 9;
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
throw _context4.t0;
|
|
168
|
-
case 9:
|
|
169
|
-
_context4.prev = 9;
|
|
170
|
-
_context4.next = 12;
|
|
171
|
-
return (0, _simpleGit.default)().fetch(['origin', 'tag', tag]);
|
|
172
|
-
case 12:
|
|
173
|
-
fetchTagResult = _context4.sent;
|
|
174
|
-
_context4.next = 19;
|
|
175
|
-
break;
|
|
176
|
-
case 15:
|
|
177
|
-
_context4.prev = 15;
|
|
178
|
-
_context4.t1 = _context4["catch"](9);
|
|
179
|
-
if (/Couldn't find remote ref refs\/tags\//.test(_context4.t1.message)) {
|
|
180
|
-
_context4.next = 19;
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
throw _context4.t1;
|
|
184
|
-
case 19:
|
|
185
|
-
return _context4.abrupt("return", {
|
|
186
|
-
fetchTagResult: fetchTagResult
|
|
187
|
-
});
|
|
188
|
-
case 20:
|
|
189
|
-
case "end":
|
|
190
|
-
return _context4.stop();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}, _callee4, null, [[0, 5], [9, 15]]);
|
|
194
|
-
}));
|
|
195
|
-
return _refetchTag.apply(this, arguments);
|
|
80
|
+
async function tagCommit(tag) {
|
|
81
|
+
return (0, _simpleGit.default)().tag(['-f', tag]);
|
|
196
82
|
}
|
|
197
|
-
function
|
|
198
|
-
|
|
83
|
+
async function doesTagExist(tag) {
|
|
84
|
+
const tags = await (0, _simpleGit.default)().tags({
|
|
85
|
+
[tag]: null
|
|
86
|
+
});
|
|
87
|
+
return tags.all.length > 0;
|
|
199
88
|
}
|
|
200
|
-
function
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
89
|
+
async function refetchTag(tag) {
|
|
90
|
+
try {
|
|
91
|
+
await (0, _simpleGit.default)().tag(['-d', tag]);
|
|
92
|
+
} catch (e) {
|
|
93
|
+
// Ignore tag not found errors
|
|
94
|
+
if (!/tag.*not found/.test(e.message)) {
|
|
95
|
+
throw e;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
let fetchTagResult;
|
|
99
|
+
try {
|
|
100
|
+
fetchTagResult = await (0, _simpleGit.default)().fetch(['origin', 'tag', tag]);
|
|
101
|
+
} catch (e) {
|
|
102
|
+
// Ignore can't find tag in remote errors
|
|
103
|
+
if (!/Couldn't find remote ref refs\/tags\//.test(e.message)) {
|
|
104
|
+
throw e;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
fetchTagResult
|
|
109
|
+
};
|
|
215
110
|
}
|
|
216
|
-
function
|
|
217
|
-
|
|
218
|
-
return (0, _simpleGit.default)(opts.cwd || process.cwd()).show(["".concat(ref, ":").concat(filename)]);
|
|
111
|
+
async function getHash(ref) {
|
|
112
|
+
return (0, _simpleGit.default)().revparse([ref]);
|
|
219
113
|
}
|
|
220
|
-
function
|
|
221
|
-
return
|
|
114
|
+
function showFile(ref, filename, opts = {}) {
|
|
115
|
+
return (0, _simpleGit.default)(opts.cwd || process.cwd()).show([`${ref}:${filename}`]);
|
|
222
116
|
}
|
|
223
|
-
function
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
result,
|
|
227
|
-
_args6 = arguments;
|
|
228
|
-
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
229
|
-
while (1) {
|
|
230
|
-
switch (_context6.prev = _context6.next) {
|
|
231
|
-
case 0:
|
|
232
|
-
opts = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : {};
|
|
233
|
-
_context6.next = 3;
|
|
234
|
-
return (0, _simpleGit.default)(opts.cwd || process.cwd()).raw(['grep', '--name-only', '', ref, '--', ":(glob)".concat(glob)]);
|
|
235
|
-
case 3:
|
|
236
|
-
result = _context6.sent;
|
|
237
|
-
return _context6.abrupt("return", result.split('\n').filter(function (line) {
|
|
238
|
-
return line !== '';
|
|
239
|
-
}).map(function (line) {
|
|
240
|
-
return line.split(':')[1];
|
|
241
|
-
}));
|
|
242
|
-
case 5:
|
|
243
|
-
case "end":
|
|
244
|
-
return _context6.stop();
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}, _callee6);
|
|
248
|
-
}));
|
|
249
|
-
return _getFiles.apply(this, arguments);
|
|
117
|
+
async function getFiles(ref, glob, opts = {}) {
|
|
118
|
+
const result = await (0, _simpleGit.default)(opts.cwd || process.cwd()).raw(['grep', '--name-only', '', ref, '--', `:(glob)${glob}`]);
|
|
119
|
+
return result.split('\n').filter(line => line !== '').map(line => line.split(':')[1]);
|
|
250
120
|
}
|