microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.10.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

gulp_scripts/release.js

109lines · modeblame

c29f0740benjaminbi3 years ago1const gulp = require("gulp");
2const log = require("fancy-log");
3const path = require("path");
4const os = require("os");
5const fs = require("fs");
6const GulpExtras = require("../tools/gulp-extras");
7
8const isNightly = process.argv.includes("--nightly");
b203fbbfbenjaminbi3 years ago9const extensionName = isNightly ? "vscode-react-native-preview" : "vscode-react-native";
c29f0740benjaminbi3 years ago10const executeCommand = GulpExtras.executeCommand;
11
12function release(cb) {
13prepareLicenses();
14cb();
15}
16
17function prepareLicenses() {
18const backupFiles = [
19"LICENSE.txt",
20"ThirdPartyNotices.txt",
21"package.json",
22"package-lock.json",
23];
24const backupFolder = path.resolve(path.join(os.tmpdir(), "vscode-react-native"));
25if (!fs.existsSync(backupFolder)) {
26fs.mkdirSync(backupFolder);
27}
28
29return Promise.resolve()
30.then(() => {
31/* back up LICENSE.txt, ThirdPartyNotices.txt, README.md */
32log("Backing up license files to " + backupFolder + "...");
33backupFiles.forEach(fileName => {
34fs.writeFileSync(path.join(backupFolder, fileName), fs.readFileSync(fileName));
35});
36
37/* copy over the release package license files */
38log("Preparing license files for release...");
39fs.writeFileSync("LICENSE.txt", fs.readFileSync("release/LICENSE.txt"));
40fs.writeFileSync(
41"ThirdPartyNotices.txt",
42fs.readFileSync("release/ThirdPartyNotices.txt"),
43);
44})
45.then(() => {
46let packageJson = readJson("/package.json");
47packageJson.main = "/dist/rn-extension";
48if (isNightly) {
b203fbbfbenjaminbi3 years ago49log("Performing gul release...");
c29f0740benjaminbi3 years ago50packageJson.version = getVersionNumber();
51packageJson.name = extensionName;
52packageJson.preview = true;
53packageJson.displayName += " (Preview)";
54}
55writeJson("/package.json", packageJson);
56log("Creating release package...");
57return new Promise((resolve, reject) => {
58// NOTE: vsce must see npm 3.X otherwise it will not correctly strip out dev dependencies.
59executeCommand(
60"vsce",
61["package"],
62arg => {
63if (arg) {
64reject(arg);
65}
66resolve();
67},
68{ cwd: appRoot },
69);
70});
71})
72.finally(() => {
73/* restore backed up files */
74log("Restoring modified files...");
75backupFiles.forEach(fileName => {
76fs.writeFileSync(
77path.join(appRoot, fileName),
78fs.readFileSync(path.join(backupFolder, fileName)),
79);
80});
81});
82}
83
84function readJson(file) {
85const contents = fs.readFileSync(path.join(appRoot, file), "utf-8").toString();
86return JSON.parse(contents);
87}
88
89function writeJson(file, jsonObj) {
90const content = JSON.stringify(jsonObj, null, 2);
91fs.writeFileSync(path.join(appRoot, file), content);
92}
93
94const getVersionNumber = () => {
95const date = new Date(new Date().toLocaleString("en-US", { timeZone: "America/Los_Angeles" }));
96
97return [
98// YY
99date.getFullYear(),
100// MM,
101date.getMonth() + 1,
102//DDHH
103`${date.getDate()}${String(date.getHours()).padStart(2, "0")}`,
104].join(".");
105};
106
107module.exports = {
108release,
e4001e74benjaminbi3 years ago109};