@applicaster/zapplicaster-cli 16.0.0-alpha.5222020837 → 16.0.0-alpha.5803191443

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/zapplicaster-cli",
3
- "version": "16.0.0-alpha.5222020837",
3
+ "version": "16.0.0-alpha.5803191443",
4
4
  "description": "CLI Tool for the zapp app and Quick Brick project",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -28,10 +28,10 @@
28
28
  },
29
29
  "homepage": "https://github.com/applicaster/quickbrick#readme",
30
30
  "dependencies": {
31
- "@applicaster/zapp-react-dom-cli-template": "16.0.0-alpha.5222020837",
32
- "@applicaster/zapp-react-native-android-tv-cli-template": "16.0.0-alpha.5222020837",
33
- "@applicaster/zapp-react-native-cli-template": "16.0.0-alpha.5222020837",
34
- "@applicaster/zapp-react-native-tvos-cli-template": "16.0.0-alpha.5222020837",
31
+ "@applicaster/zapp-react-dom-cli-template": "16.0.0-alpha.5803191443",
32
+ "@applicaster/zapp-react-native-android-tv-cli-template": "16.0.0-alpha.5803191443",
33
+ "@applicaster/zapp-react-native-cli-template": "16.0.0-alpha.5803191443",
34
+ "@applicaster/zapp-react-native-tvos-cli-template": "16.0.0-alpha.5803191443",
35
35
  "axios": "^0.28.0",
36
36
  "camelize": "^1.0.0",
37
37
  "chalk": "^2.3.2",
@@ -1,7 +1,8 @@
1
1
  const R = require("ramda");
2
2
  const fs = require("fs");
3
3
  const semver = require("semver");
4
- const { resolve } = require("path");
4
+ const { resolve, join } = require("path");
5
+ const { existsSync } = require("fs");
5
6
  const packageJSON = require("../../../package.json");
6
7
 
7
8
  const {
@@ -30,6 +31,36 @@ const {
30
31
 
31
32
  const { buildMobileApp } = require("./buildMobile");
32
33
 
34
+ async function patchPackages() {
35
+ if (existsSync(join(process.cwd(), "quick_brick", "patch_rn.js"))) {
36
+ exec(`node ${process.cwd()}/quick_brick/patch_rn.js`);
37
+ } else if (
38
+ existsSync(join(process.cwd(), "development-app", "patch_rn.js"))
39
+ ) {
40
+ exec(`node ${process.cwd()}/development-app/patch_rn.js`);
41
+ } else if (
42
+ existsSync(
43
+ join(
44
+ process.cwd(),
45
+ "packages",
46
+ "zapp-react-dom-development-app",
47
+ "patch_rn.js"
48
+ )
49
+ )
50
+ ) {
51
+ const pathToFile = join(
52
+ process.cwd(),
53
+ "packages",
54
+ "zapp-react-dom-development-app",
55
+ "patch_rn.js"
56
+ );
57
+
58
+ exec(`node ${pathToFile}`);
59
+ } else {
60
+ logger.log("Cannot patch packages, can't find the patch_rn.js file");
61
+ }
62
+ }
63
+
33
64
  /**
34
65
  * fallback to en for missing dayjslocalization
35
66
  * converts the locale code to a dayjs compatible locale code
@@ -101,12 +132,7 @@ async function appBootstrapper(configuration) {
101
132
 
102
133
  const { templatePath, filesToCopy } = template.files;
103
134
 
104
- await copyFiles(
105
- templatePath,
106
- filesToCopy,
107
- quickBrickProjectPath,
108
- configuration
109
- );
135
+ copyFiles(templatePath, filesToCopy, quickBrickProjectPath, configuration);
110
136
 
111
137
  logger.log("injecting dependencies...");
112
138
  const { dependencies, scripts } = template;
@@ -190,6 +216,8 @@ async function appBootstrapper(configuration) {
190
216
  const quickBrickVersion = packageJSON.version;
191
217
  checkAllPluginsSatisfiesQuickBrickVersion({ quickBrickVersion, plugins });
192
218
 
219
+ await patchPackages();
220
+
193
221
  if (buildMobile) {
194
222
  await buildMobileApp(configuration);
195
223
  }
@@ -5,27 +5,10 @@ exports[`copyFiles when destination path has no package.json doesn't skips the c
5
5
  [
6
6
  "some/source/path/foo.json",
7
7
  "some/destination/Path/foo.json",
8
- [Function],
9
8
  ],
10
9
  [
11
10
  "some/source/path/package.json",
12
11
  "some/destination/Path/package.json",
13
- [Function],
14
- ],
15
- ]
16
- `;
17
-
18
- exports[`copyFiles when there is no package.json to copy copies the dir 1`] = `
19
- [
20
- [
21
- "some/source/path/files/file1.txt",
22
- "some/destination/Path/files/file1.txt",
23
- [Function],
24
- ],
25
- [
26
- "some/source/path/files/file2.txt",
27
- "some/destination/Path/files/file2.txt",
28
- [Function],
29
12
  ],
30
13
  ]
31
14
  `;
@@ -35,12 +18,10 @@ exports[`copyFiles when there is no package.json to copy copies the files 1`] =
35
18
  [
36
19
  "some/source/path/foo.json",
37
20
  "some/destination/Path/foo.json",
38
- [Function],
39
21
  ],
40
22
  [
41
23
  "some/source/path/bar.json",
42
24
  "some/destination/Path/bar.json",
43
- [Function],
44
25
  ],
45
26
  ]
46
27
  `;
@@ -38,27 +38,14 @@ describe("copyFiles", () => {
38
38
  fs.writeFile("foo.json", { foo: "bar" }, jest.fn());
39
39
  fs.writeFile("bar.json", { bar: "baz" }, jest.fn());
40
40
  fs.writeFile("qux.json", { qux: 42 }, jest.fn());
41
- fs.copyFile.mockClear();
42
- fs.readdir.mockClear();
41
+ fs.copyFileSync.mockClear();
43
42
  });
44
43
 
45
44
  describe("when there is no package.json to copy", () => {
46
- it("copies the files", async () => {
47
- await copyFiles(sourcePath, ["foo.json", "bar.json"], destinationPath);
48
- expect(fs.copyFile).toHaveBeenCalledTimes(2);
49
- expect(fs.copyFile.mock.calls).toMatchSnapshot();
50
- });
51
-
52
- it("copies the dir", async () => {
53
- // Mock fs.readdir to return some files when the directory is read
54
- fs.readdir.mockImplementationOnce((path, callback) => {
55
- callback(null, ["file1.txt", "file2.txt"]);
56
- });
57
-
58
- await copyFiles(sourcePath, ["files/"], destinationPath);
59
-
60
- expect(fs.copyFile).toHaveBeenCalledTimes(2);
61
- expect(fs.copyFile.mock.calls).toMatchSnapshot();
45
+ it("copies the files", () => {
46
+ copyFiles(sourcePath, ["foo.json", "bar.json"], destinationPath);
47
+ expect(fs.copyFileSync).toHaveBeenCalledTimes(2);
48
+ expect(fs.copyFileSync.mock.calls).toMatchSnapshot();
62
49
  });
63
50
  });
64
51
 
@@ -73,40 +60,29 @@ describe("copyFiles", () => {
73
60
  fs.__resetFiles();
74
61
  });
75
62
 
76
- it("overrides it", async () => {
63
+ it("overrides it", () => {
77
64
  const sourcePath = "some/source/path";
78
65
  const destinationPath = "some/destination/Path";
79
66
 
80
- await copyFiles(
81
- sourcePath,
82
- ["foo.json", "package.json"],
83
- destinationPath
84
- );
85
-
86
- expect(fs.copyFile).toHaveBeenCalledTimes(2);
67
+ copyFiles(sourcePath, ["foo.json", "package.json"], destinationPath);
68
+ expect(fs.copyFileSync).toHaveBeenCalledTimes(2);
87
69
 
88
- expect(fs.copyFile).toHaveBeenCalledWith(
70
+ expect(fs.copyFileSync).toHaveBeenCalledWith(
89
71
  `${sourcePath}/foo.json`,
90
- `${destinationPath}/foo.json`,
91
- expect.any(Function)
72
+ `${destinationPath}/foo.json`
92
73
  );
93
74
  });
94
75
  });
95
76
 
96
77
  describe("when destination path has no package.json", () => {
97
- it("doesn't skips the copy", async () => {
78
+ it("doesn't skips the copy", () => {
98
79
  const sourcePath = "some/source/path";
99
80
  const destinationPath = "some/destination/Path";
100
81
 
101
- await copyFiles(
102
- sourcePath,
103
- ["foo.json", "package.json"],
104
- destinationPath
105
- );
106
-
107
- expect(fs.copyFile).toHaveBeenCalledTimes(2);
82
+ copyFiles(sourcePath, ["foo.json", "package.json"], destinationPath);
83
+ expect(fs.copyFileSync).toHaveBeenCalledTimes(2);
108
84
 
109
- expect(fs.copyFile.mock.calls).toMatchSnapshot();
85
+ expect(fs.copyFileSync.mock.calls).toMatchSnapshot();
110
86
  expect(logger.warn).not.toHaveBeenCalled();
111
87
  });
112
88
  });
@@ -124,7 +100,7 @@ describe("copyFolder", () => {
124
100
  });
125
101
 
126
102
  beforeEach(() => {
127
- fs.copyFile.mockClear();
103
+ fs.copyFileSync.mockClear();
128
104
  });
129
105
 
130
106
  it("copies the file in the folder", async () => {
@@ -134,7 +110,7 @@ describe("copyFolder", () => {
134
110
  await copyFolder(sourcePath, destinationPath);
135
111
 
136
112
  expect(fs.readdir).toHaveBeenCalledWith(sourcePath, expect.any(Function));
137
- expect(fs.copyFile).toHaveBeenCalledTimes(2);
113
+ expect(fs.copyFileSync).toHaveBeenCalledTimes(2);
138
114
  });
139
115
 
140
116
  afterAll(() => {
package/src/file/index.js CHANGED
@@ -5,16 +5,7 @@ const R = require("ramda");
5
5
  * @module @applicaster/zapplicaster-cli/util/file
6
6
  */
7
7
 
8
- const {
9
- writeFile,
10
- readFile,
11
- readdir,
12
- copyFile,
13
- lstatSync,
14
- mkdirSync,
15
- existsSync,
16
- } = require("fs");
17
-
8
+ const { writeFile, readFile, readdir, copyFile, copyFileSync } = require("fs");
18
9
  const { promisify } = require("util");
19
10
  const { join } = require("path");
20
11
 
@@ -75,43 +66,19 @@ function destinationFileNameMapper(destinationFileName) {
75
66
  * @param {String} destination path
76
67
  * @returns {Promise[]} array of promises with the status of the copied files
77
68
  */
78
- async function copyFiles(source, filesOrFilesGetter, destination, config) {
69
+ function copyFiles(source, filesOrFilesGetter, destination, config) {
79
70
  const files =
80
71
  typeof filesOrFilesGetter === "function"
81
72
  ? filesOrFilesGetter(config)
82
73
  : filesOrFilesGetter;
83
74
 
84
- return Promise.all(
85
- R.map(async (file) => {
86
- let sourcePath, destinationPath;
87
-
88
- try {
89
- if (Array.isArray(file)) {
90
- sourcePath = join(source, file[0]);
91
-
92
- destinationPath = destinationFileNameMapper(
93
- join(destination, file[1])
94
- );
95
- } else {
96
- sourcePath = join(source, file);
97
- destinationPath = destinationFileNameMapper(join(destination, file));
98
- }
99
-
100
- if (lstatSync(sourcePath).isDirectory()) {
101
- if (!existsSync(destinationPath)) {
102
- mkdirSync(destinationPath, { recursive: true });
103
- }
104
-
105
- return await copyFolder(sourcePath, destinationPath);
106
- }
107
-
108
- return await copyFileAsync(sourcePath, destinationPath);
109
- } catch (error) {
110
- throw new Error(
111
- `Failed to copy "${sourcePath}" to "${destinationPath}": ${error.message}`
112
- );
113
- }
114
- }, files)
75
+ return R.map(
76
+ (file) =>
77
+ copyFileSync(
78
+ join(source, file),
79
+ destinationFileNameMapper(join(destination, file))
80
+ ),
81
+ files
115
82
  );
116
83
  }
117
84
 
@@ -2,10 +2,6 @@ const fs = jest.genMockFromModule("fs");
2
2
  const _fs = jest.requireActual("fs");
3
3
  const R = require("ramda");
4
4
 
5
- function mkdirSync() {
6
- return undefined;
7
- }
8
-
9
5
  function readdirSync(folder) {
10
6
  return _fs.readdirSync(folder);
11
7
  }
@@ -81,16 +77,10 @@ function __resetFiles() {
81
77
  fs.__writenFiles = [];
82
78
  }
83
79
 
84
- fs.lstatSync = (_path) => ({
85
- isDirectory: () => _path.endsWith("/"),
86
- isFile: () => _path.endsWith("/") === false,
87
- });
88
-
89
80
  fs.__writenFiles = [];
90
81
  fs.__resetFiles = __resetFiles;
91
82
  fs.__addMockedFiles = __addMockedFiles;
92
83
  fs.readdirSync = readdirSync;
93
- fs.mkdirSync = mkdirSync;
94
84
  fs.readdir = jest.fn(readdir);
95
85
  fs.writeFile = jest.fn(writeFile);
96
86
  fs.readFile = jest.fn(readFile);