microsoft/vscode-react-native

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
82faad1b2a34fe7e0e57e2a7c54d2e288e3aef76

Branches

Tags

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

Clone

HTTPS

Download ZIP

gulp_scripts/release.js

109lines · modecode

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