Skip to content

Commit

Permalink
feat: Refactor code to isolate tomo UI from component API
Browse files Browse the repository at this point in the history
  • Loading branch information
jhwohlgemuth committed Nov 22, 2019
1 parent ec45a9b commit f2620c5
Show file tree
Hide file tree
Showing 100 changed files with 47,781 additions and 9,027 deletions.
15 changes: 15 additions & 0 deletions __tests__/__snapshots__/api.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,21 @@ Array [
"createModuleEditor",
"MakefileEditor",
"Scaffolder",
"CommandError",
"Debug",
"Description",
"ErrorMessage",
"ErrorBoundary",
"SubCommandSelect",
"UnderConstruction",
"Warning",
"OfflineWarning",
"Status",
"WarningAndErrorsHeader",
"Task",
"Tasks",
"TaskListTitle",
"TaskList",
"populateQueue",
"isUniqueTask",
"isValidTask",
Expand Down
7 changes: 4 additions & 3 deletions __tests__/offline.test.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import React from 'react';
import isOnline from 'is-online';
import {render} from 'ink-testing-library';
import {OfflineWarning, TaskList} from '../src/ui';
import {useTemporaryDirectory} from './tomo-test';
import {OfflineWarning, TaskList} from '../src/components';
import commands from '../src/commands';

jest.mock('is-online', () => (async () => false));

Expand Down Expand Up @@ -33,15 +34,15 @@ describe('Offline warning', () => {
});
test('does not render when offline and skipInstall === true', done => {
const options = {skipInstall: true};
const {lastFrame} = render(<TaskList command={'add'} terms={['babel']} options={options} done={complete}></TaskList>);
const {lastFrame} = render(<TaskList command={'add'} commands={commands} terms={['babel']} options={options} done={complete}></TaskList>);
function complete() {
expect(lastFrame()).toMatchSnapshot();
done();
}
});
test('renders when offline and skipInstall === false', done => {
const options = {skipInstall: false};
const {lastFrame} = render(<TaskList command={'add'} terms={['babel']} options={options} done={complete}></TaskList>);
const {lastFrame} = render(<TaskList command={'add'} commands={commands} terms={['babel']} options={options} done={complete}></TaskList>);
function complete() {
expect(lastFrame()).toMatchSnapshot();
done();
Expand Down
11 changes: 6 additions & 5 deletions __tests__/ui.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import Queue from 'p-queue';
import React from 'react';
import {render} from 'ink-testing-library';
import {populateQueue} from '../src/api';
import Tomo, {CommandError, Warning, Task} from '../src/ui';
import {CommandError, Warning, Task} from '../src/components';
import UI from '../src/main';

jest.mock('is-online', () => (async () => true));

Expand Down Expand Up @@ -159,22 +160,22 @@ describe('tomo', () => {
});
test('add', () => {
const input = ['add'];
const {lastFrame, stdin} = render(<Tomo input={input} flags={{skipInstall}}/>);
const {lastFrame, stdin} = render(<UI input={input} flags={{skipInstall}}/>);
expect(lastFrame()).toMatchSnapshot();
stdin.write(ARROW_DOWN);
expect(lastFrame()).toMatchSnapshot();
});
test('remove', () => {
const input = ['remove'];
const {lastFrame, stdin} = render(<Tomo input={input} flags={{skipInstall}} />);
const {lastFrame, stdin} = render(<UI input={input} flags={{skipInstall}} />);
expect(lastFrame()).toMatchSnapshot();
stdin.write(ARROW_DOWN);
expect(lastFrame()).toMatchSnapshot();
});
xtest('add eslint', done => {
const input = ['add', 'eslint'];
const flags = {skipInstall};
const {lastFrame} = render(<Tomo input={input} flags={flags} done={complete}/>);
const {lastFrame} = render(<UI input={input} flags={flags} done={complete}/>);
function complete() {
expect(lastFrame()).toMatchSnapshot();
done();
Expand All @@ -183,7 +184,7 @@ describe('tomo', () => {
xtest('add eslint --use-react', done => {
const input = ['add', 'eslint'];
const flags = {useReact: true, skipInstall};
const {lastFrame} = render(<Tomo input={input} flags={flags} done={complete}/>);
const {lastFrame} = render(<UI input={input} flags={flags} done={complete}/>);
function complete() {
expect(lastFrame()).toMatchSnapshot();
done();
Expand Down
2 changes: 1 addition & 1 deletion dist/api.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions dist/components.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env node
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault"),_asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")),_path=require("path"),_react=_interopRequireDefault(require("react")),_chalk=require("chalk"),_ink=require("ink"),_meow=_interopRequireDefault(require("meow")),_readPkg=_interopRequireDefault(require("read-pkg")),_getStdin=_interopRequireDefault(require("get-stdin")),_ui=_interopRequireDefault(require("./ui")),_updateNotifier=_interopRequireDefault(require("update-notifier"));// Notify updater
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault"),_asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")),_path=require("path"),_react=_interopRequireDefault(require("react")),_chalk=require("chalk"),_ink=require("ink"),_meow=_interopRequireDefault(require("meow")),_readPkg=_interopRequireDefault(require("read-pkg")),_getStdin=_interopRequireDefault(require("get-stdin")),_updateNotifier=_interopRequireDefault(require("update-notifier")),_main=_interopRequireDefault(require("./main"));// Notify updater
const pkg=require(`../package.json`);(0,_updateNotifier.default)({pkg}).notify();const showVersion=()=>{const a=(0,_path.join)(__dirname,".."),{version:b}=_readPkg.default.sync({cwd:a});// eslint-disable-line no-console
console.log(b),process.exit()},help=`
${_chalk.dim.bold("Usage")}
Expand Down Expand Up @@ -48,4 +48,4 @@ console.log(b),process.exit()},help=`
--browser Indicate tasks are intended for the browser [Default: false]
--port, -p Configure port for workflow tasks that use it [Default: 4669]
--debug Show debug data [Default: false]
`,options={help,flags:{version:{type:"boolean",default:!1,alias:"v"},sourceDirectory:{type:"string",default:"./src",alias:"d"},outputDirectory:{type:"string",default:"./dist",alias:"o"},assetsDirectory:{type:"string",default:"./assets",alias:"a"},useRollup:{type:"boolean",default:!1,alias:"rollup"},useParcel:{type:"boolean",default:!1,alias:"parcel"},useReact:{type:"boolean",default:!1,alias:["r","react"]},reactVersion:{type:"string",default:"16.8"},withCesium:{type:"boolean",default:!1},help:{type:"boolean",default:!1,alias:"h"},ignoreWarnings:{type:"boolean",default:!1,alias:"i"},skipInstall:{type:"boolean",default:!1,alias:"s"},browser:{type:"boolean",default:!1,alias:"b"},port:{type:"number",default:4669,alias:"p"},overwrite:{type:"boolean",default:!1},debug:{type:"boolean",default:!1}}},{input,flags}=(0,_meow.default)(options);("version"===input[0]||flags.version)&&showVersion(),(0,_asyncToGenerator2.default)(function*(){const a=yield(0,_getStdin.default)();(0,_ink.render)(_react.default.createElement(_ui.default,{input:input,flags:flags,stdin:a}),{exitOnCtrlC:!0})})();
`,options={help,flags:{version:{type:"boolean",default:!1,alias:"v"},sourceDirectory:{type:"string",default:"./src",alias:"d"},outputDirectory:{type:"string",default:"./dist",alias:"o"},assetsDirectory:{type:"string",default:"./assets",alias:"a"},useRollup:{type:"boolean",default:!1,alias:"rollup"},useParcel:{type:"boolean",default:!1,alias:"parcel"},useReact:{type:"boolean",default:!1,alias:["r","react"]},reactVersion:{type:"string",default:"16.8"},withCesium:{type:"boolean",default:!1},help:{type:"boolean",default:!1,alias:"h"},ignoreWarnings:{type:"boolean",default:!1,alias:"i"},skipInstall:{type:"boolean",default:!1,alias:"s"},browser:{type:"boolean",default:!1,alias:"b"},port:{type:"number",default:4669,alias:"p"},overwrite:{type:"boolean",default:!1},debug:{type:"boolean",default:!1}}},{input,flags}=(0,_meow.default)(options);("version"===input[0]||flags.version)&&showVersion(),(0,_asyncToGenerator2.default)(function*(){const a=yield(0,_getStdin.default)();(0,_ink.render)(_react.default.createElement(_main.default,{input:input,flags:flags,stdin:a}),{exitOnCtrlC:!0})})();
13 changes: 13 additions & 0 deletions dist/main.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit f2620c5

Please sign in to comment.