Skip to content

Commit

Permalink
feat(bin): override package locations using repeatable --source options
Browse files Browse the repository at this point in the history
BREAKING CHANGE:
Previously the location of package.json files could be overridden like so:

```
syncpack list './package.json' './packages/*/package.json'
```

This is now done using a repeatable `--source` option:

```
syncpack list --source './package.json' --source './packages/*/package.json'
```

This change is to make way for new commands which will also require an
overridable `--target` option.
  • Loading branch information
JamieMason committed Aug 25, 2018
1 parent a40a3da commit 5dbcfd4
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 65 deletions.
18 changes: 7 additions & 11 deletions src/bin-fix-mismatches.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
#!/usr/bin/env node

import chalk from 'chalk';
import * as program from 'commander';
import * as _ from 'lodash';
import program = require('commander');
import _ = require('lodash');
import { relative } from 'path';
import { FIX_MISMATCHES } from './constants';
import { OPTION_SOURCES } from './constants';
import { setVersionsToNewestMismatch } from './manifests';

let packages: string[] = [];
const collect = (value: string, values: string[] = []) => values.concat(value);

program
.action((...args) => {
packages = args.filter((arg) => arg && typeof arg === 'string');
})
.parse(process.argv);
program.option(OPTION_SOURCES.spec, OPTION_SOURCES.description, collect).parse(process.argv);

const patterns: string[] = packages.length ? packages : FIX_MISMATCHES.defaultPatterns;
const sources: string[] = program.source && program.source.length ? program.source : OPTION_SOURCES.default;

setVersionsToNewestMismatch(...patterns).then((descriptors) => {
setVersionsToNewestMismatch(...sources).then((descriptors) => {
_.each(descriptors, (descriptor) => {
console.log(chalk.blue(`./${relative('.', descriptor.path)}`));
});
Expand Down
18 changes: 7 additions & 11 deletions src/bin-format.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
#!/usr/bin/env node

import chalk from 'chalk';
import * as program from 'commander';
import * as _ from 'lodash';
import program = require('commander');
import _ = require('lodash');
import { relative } from 'path';
import { FORMAT } from './constants';
import { OPTION_SOURCES } from './constants';
import { format } from './manifests';

let packages: string[] = [];
const collect = (value: string, values: string[] = []) => values.concat(value);

program
.action((...args) => {
packages = args.filter((arg) => arg && typeof arg === 'string');
})
.parse(process.argv);
program.option(OPTION_SOURCES.spec, OPTION_SOURCES.description, collect).parse(process.argv);

const patterns: string[] = packages.length ? packages : FORMAT.defaultPatterns;
const sources: string[] = program.source && program.source.length ? program.source : OPTION_SOURCES.default;

format(...patterns).then((descriptors) => {
format(...sources).then((descriptors) => {
_.each(descriptors, (descriptor) => {
console.log(chalk.blue(`./${relative('.', descriptor.path)}`));
});
Expand Down
18 changes: 7 additions & 11 deletions src/bin-list-mismatches.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
#!/usr/bin/env node

import chalk from 'chalk';
import * as program from 'commander';
import * as _ from 'lodash';
import { LIST_MISMATCHES } from './constants';
import program = require('commander');
import _ = require('lodash');
import { OPTION_SOURCES } from './constants';
import { getMismatchedVersions } from './manifests';

let packages: string[] = [];
const collect = (value: string, values: string[] = []) => values.concat(value);

program
.action((...args) => {
packages = args.filter((arg) => arg && typeof arg === 'string');
})
.parse(process.argv);
program.option(OPTION_SOURCES.spec, OPTION_SOURCES.description, collect).parse(process.argv);

const patterns: string[] = packages.length ? packages : LIST_MISMATCHES.defaultPatterns;
const sources: string[] = program.source && program.source.length ? program.source : OPTION_SOURCES.default;

getMismatchedVersions(...patterns).then((versionByName) => {
getMismatchedVersions(...sources).then((versionByName) => {
_.each(versionByName, (versions, name) => {
console.log(chalk.yellow(name), chalk.dim(versions.join(', ')));
});
Expand Down
18 changes: 7 additions & 11 deletions src/bin-list.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
#!/usr/bin/env node

import chalk from 'chalk';
import * as program from 'commander';
import * as _ from 'lodash';
import { LIST } from './constants';
import program = require('commander');
import _ = require('lodash');
import { OPTION_SOURCES } from './constants';
import { getVersions } from './manifests';

let packages: string[] = [];
const collect = (value: string, values: string[] = []) => values.concat(value);

program
.action((...args) => {
packages = args.filter((arg) => arg && typeof arg === 'string');
})
.parse(process.argv);
program.option(OPTION_SOURCES.spec, OPTION_SOURCES.description, collect).parse(process.argv);

const patterns: string[] = packages.length ? packages : LIST.defaultPatterns;
const sources: string[] = program.source && program.source.length ? program.source : OPTION_SOURCES.default;

getVersions(...patterns).then((versionByName) => {
getVersions(...sources).then((versionByName) => {
_.each(versionByName, (versions, name) => {
if (versions.length > 1) {
console.log(chalk.yellow(name), chalk.dim(versions.join(', ')));
Expand Down
16 changes: 7 additions & 9 deletions src/bin-set-semver-ranges.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
#!/usr/bin/env node

import chalk from 'chalk';
import * as program from 'commander';
import * as _ from 'lodash';
import program = require('commander');
import _ = require('lodash');
import { relative } from 'path';
import { OPTION_SEMVER_RANGE, SET_SEMVER_RANGES } from './constants';
import { OPTION_SEMVER_RANGE, OPTION_SOURCES } from './constants';
import { setVersionRange } from './manifests';

let packages: string[] = [];
const collect = (value: string, values: string[] = []) => values.concat(value);

program
.option(OPTION_SEMVER_RANGE.spec, OPTION_SEMVER_RANGE.description)
.action((...args) => {
packages = args.filter((arg) => arg && typeof arg === 'string');
})
.option(OPTION_SOURCES.spec, OPTION_SOURCES.description, collect)
.parse(process.argv);

const semverRange: string = program.semverRange || OPTION_SEMVER_RANGE.default;
const patterns: string[] = packages.length ? packages : SET_SEMVER_RANGES.defaultPatterns;
const sources: string[] = program.source && program.source.length ? program.source : OPTION_SOURCES.default;

setVersionRange(semverRange, ...patterns).then((descriptors) => {
setVersionRange(semverRange, ...sources).then((descriptors) => {
_.each(descriptors, (descriptor) => {
console.log(chalk.blue(`./${relative('.', descriptor.path)}`));
});
Expand Down
2 changes: 1 addition & 1 deletion src/bin.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env node

import * as program from 'commander';
import program = require('commander');
import { FIX_MISMATCHES, FORMAT, LIST, LIST_MISMATCHES, SET_SEMVER_RANGES, VERSION } from './constants';

program
Expand Down
22 changes: 11 additions & 11 deletions src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,36 +31,30 @@ export const SEMVER_ORDER = [
const DEFAULT_SEMVER_RANGE = RANGE_EXACT;
const MONOREPO_PATTERN = './package.json';
const PACKAGES_PATTERN = './packages/*/package.json';
const PACKAGES_PATTERNS = [PACKAGES_PATTERN];
const ALL_PATTERNS = [MONOREPO_PATTERN, PACKAGES_PATTERN];

export const FIX_MISMATCHES = {
command: 'fix-mismatches [packages...]',
defaultPatterns: PACKAGES_PATTERNS,
command: 'fix-mismatches',
description: 'set dependencies used with different versions to the same version'
};

export const FORMAT = {
command: 'format [packages...]',
defaultPatterns: ALL_PATTERNS,
command: 'format',
description: 'sort and shorten properties according to a convention'
};

export const LIST = {
command: 'list [packages...]',
defaultPatterns: ALL_PATTERNS,
command: 'list',
description: 'list every dependency used in your packages'
};

export const LIST_MISMATCHES = {
command: 'list-mismatches [packages...]',
defaultPatterns: PACKAGES_PATTERNS,
command: 'list-mismatches',
description: 'list every dependency used with different versions in your packages'
};

export const SET_SEMVER_RANGES = {
command: 'set-semver-ranges [packages...]',
defaultPatterns: ALL_PATTERNS,
command: 'set-semver-ranges',
description: 'set semver ranges to the given format'
};

Expand All @@ -71,3 +65,9 @@ export const OPTION_SEMVER_RANGE = {
`${RANGE_GTE}, ${RANGE_GT}, or ${RANGE_ANY}. defaults to "${DEFAULT_SEMVER_RANGE}"`,
spec: '-r, --semver-range <range>'
};

export const OPTION_SOURCES = {
default: ALL_PATTERNS,
description: 'glob pattern for package.json files to read from',
spec: '-s, --source [pattern]'
};

0 comments on commit 5dbcfd4

Please sign in to comment.