Skip to content

Commit

Permalink
refactor(public/fs): renames types to be more explicit
Browse files Browse the repository at this point in the history
  • Loading branch information
rafamel committed May 20, 2019
1 parent 091e963 commit 0f6a9c6
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 30 deletions.
10 changes: 5 additions & 5 deletions src/public/fs/copy.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import path from 'path';
import fs from 'fs-extra';
import { absolute, exists } from '~/utils/file';
import { IFsWriteOptions } from './types';
import { IFsUpdateOptions } from './types';
import expose, { TExposedOverload } from '~/utils/expose';
import confirm from '~/utils/confirm';
import logger from '~/utils/logger';
Expand All @@ -14,12 +14,12 @@ export type TCopyFilterFn =
export default expose(copy) as TExposedOverload<
typeof copy,
| [string | string[] | Promise<string | string[]>, string]
| [string | string[] | Promise<string | string[]>, string, IFsWriteOptions]
| [string | string[] | Promise<string | string[]>, string, IFsUpdateOptions]
| [string | string[] | Promise<string | string[]>, string, TCopyFilterFn]
| [
string | string[] | Promise<string | string[]>,
string,
IFsWriteOptions | undefined,
IFsUpdateOptions | undefined,
TCopyFilterFn
]
>;
Expand All @@ -32,7 +32,7 @@ function copy(
function copy(
src: string | string[] | Promise<string | string[]>,
dest: string,
options?: IFsWriteOptions,
options?: IFsUpdateOptions,
filter?: TCopyFilterFn
): () => Promise<void>;
/**
Expand Down Expand Up @@ -63,7 +63,7 @@ export async function trunk(
dest: string,
args: any[]
): Promise<void> {
const options: IFsWriteOptions = Object.assign(
const options: IFsUpdateOptions = Object.assign(
{ overwrite: true },
args.find((x) => typeof x === 'object') || {}
);
Expand Down
4 changes: 2 additions & 2 deletions src/public/fs/json.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { IOfType } from '~/types';
import expose from '~/utils/expose';
import rw from './rw';
import { IFsWriteOptions } from './types';
import { IFsUpdateOptions } from './types';

export default expose(json);

Expand All @@ -15,7 +15,7 @@ function json(
fn: (
json?: IOfType<any>
) => IOfType<any> | void | Promise<IOfType<any> | void>,
options: IFsWriteOptions = {}
options: IFsUpdateOptions = {}
): () => Promise<void> {
return async () => {
const _fn = async (raw?: string): Promise<string | undefined> => {
Expand Down
6 changes: 3 additions & 3 deletions src/public/fs/mkdir.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ import { parallel } from 'promist';
import logger from '~/utils/logger';
import chalk from 'chalk';
import expose from '~/utils/expose';
import { IFsOptions } from './types';
import { IFsCreateDeleteOptions } from './types';

export default expose(mkdir);
/**
* Deep creates a directory or an array of them.
* It is an *exposed* function: call `mkdir.fn()`, which takes the same arguments, in order to execute on call.
* @param paths a path for a directory, or an array of them.
* @param options an `IFsOptions` object.
* @param options an `IFsCreateDeleteOptions` object.
* @returns An asynchronous function -hence, calling `mkdir` won't have any effect until the returned function is called.
*/
function mkdir(
paths: string | string[],
options: IFsOptions = {}
options: IFsCreateDeleteOptions = {}
): () => Promise<void> {
return async () => {
const cwd = process.cwd();
Expand Down
6 changes: 3 additions & 3 deletions src/public/fs/move.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import path from 'path';
import fs from 'fs-extra';
import { absolute, exists } from '~/utils/file';
import { IFsWriteOptions } from './types';
import { IFsUpdateOptions } from './types';
import expose from '~/utils/expose';
import confirm from '~/utils/confirm';
import logger from '~/utils/logger';
Expand All @@ -16,7 +16,7 @@ export default expose(move);
function move(
src: string | string[] | Promise<string | string[]>,
dest: string,
options: IFsWriteOptions = {}
options: IFsUpdateOptions = {}
): () => Promise<void> {
return async () => {
src = await src;
Expand All @@ -34,7 +34,7 @@ function move(
export async function trunk(
src: string,
dest: string,
options: IFsWriteOptions
options: IFsUpdateOptions
): Promise<void> {
options = Object.assign({ overwrite: true }, options);

Expand Down
6 changes: 3 additions & 3 deletions src/public/fs/remove.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ import { parallel } from 'promist';
import logger from '~/utils/logger';
import chalk from 'chalk';
import expose from '~/utils/expose';
import { IFsOptions } from './types';
import { IFsCreateDeleteOptions } from './types';

export default expose(remove);
/**
* Removes a file, a directory -recursively-, or an array of them.
* It is an *exposed* function: call `remove.fn()`, which takes the same arguments, in order to execute on call.
* @param paths a path for a file or directory, or an array of them.
* @param options an `IFsOptions` object.
* @param options an `IFsCreateDeleteOptions` object.
* @returns An asynchronous function -hence, calling `remove` won't have any effect until the returned function is called.
*/
function remove(
paths: string | string[] | Promise<string | string[]>,
options: IFsOptions = {}
options: IFsCreateDeleteOptions = {}
): () => Promise<void> {
return async () => {
const cwd = process.cwd();
Expand Down
4 changes: 2 additions & 2 deletions src/public/fs/rw.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import fs from 'fs-extra';
import { exists, absolute } from '~/utils/file';
import expose from '~/utils/expose';
import confirm from '~/utils/confirm';
import { IFsWriteOptions } from './types';
import { IFsUpdateOptions } from './types';
import logger from '~/utils/logger';
import { open } from '~/utils/errors';

Expand All @@ -17,7 +17,7 @@ export default expose(rw);
function rw(
file: string,
fn: (raw?: string) => string | void | Promise<string | void>,
options: IFsWriteOptions = {}
options: IFsUpdateOptions = {}
): () => Promise<void> {
return async () => {
options = Object.assign({ overwrite: true }, options);
Expand Down
8 changes: 2 additions & 6 deletions src/public/fs/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,17 @@ export interface IFsReadOptions {
/**
* Options taken by *fs* functions.
*/
export interface IFsOptions extends IFsReadOptions {
export interface IFsCreateDeleteOptions extends IFsReadOptions {
/**
* If `true`, it will require user confirmation for removal. Defaults to `false`.
*/
confirm?: boolean;
/**
* If `false`, it won't fail if a path doesn't exist for a read, or if it already exists for a write. Defaults to `false`.
*/
fail?: boolean;
}

/**
* Options taken by *fs* write functions.
*/
export interface IFsWriteOptions extends IFsOptions {
export interface IFsUpdateOptions extends IFsCreateDeleteOptions {
/**
* Overwrites files if they already exist. Defaults to `true`.
*/
Expand Down
12 changes: 6 additions & 6 deletions src/public/fs/write.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import fs from 'fs-extra';
import path from 'path';
import expose, { TExposedOverload } from '~/utils/expose';
import { IFsWriteOptions } from './types';
import { IFsUpdateOptions } from './types';
import { exists, absolute } from '~/utils/file';
import confirm from '~/utils/confirm';
import logger from '~/utils/logger';
Expand All @@ -11,19 +11,19 @@ export default expose(write) as TExposedOverload<
typeof write,
| [string]
| [string, string | (() => string | Promise<string>)]
| [string, IFsWriteOptions]
| [string, string | (() => string | Promise<string>), IFsWriteOptions]
| [string, IFsUpdateOptions]
| [string, string | (() => string | Promise<string>), IFsUpdateOptions]
>;

function write(
file: string,
raw?: string | (() => string | Promise<string>)
): () => Promise<void>;
function write(file: string, options?: IFsWriteOptions): () => Promise<void>;
function write(file: string, options?: IFsUpdateOptions): () => Promise<void>;
function write(
file: string,
raw: string | (() => string | Promise<string>),
options?: IFsWriteOptions
options?: IFsUpdateOptions
): () => Promise<void>;
/**
* Writes a `file` with `raw`. If no `raw` content is passed, it will simply ensure it does exist.
Expand All @@ -33,7 +33,7 @@ function write(
function write(file: string, ...args: any[]): () => Promise<void> {
return async () => {
const hasRaw = typeof args[0] === 'string' || typeof args[0] === 'function';
const options: IFsWriteOptions = Object.assign(
const options: IFsUpdateOptions = Object.assign(
{ overwrite: true },
(hasRaw ? args[1] : args[0]) || {}
);
Expand Down

0 comments on commit 0f6a9c6

Please sign in to comment.