Skip to content

Commit 5c6dc98

Browse files
committed
1.0.0 rm reset cmd + prefer snake_case
1 parent a070996 commit 5c6dc98

File tree

6 files changed

+70
-157
lines changed

6 files changed

+70
-157
lines changed

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Features:
1414
# Usage
1515

1616
```
17-
Usage: npx upgrade-deps [options] [command]
17+
Usage: npx upgrade-deps [options]
1818
1919
CLI for automating upgrading package.json dependencies. Semver prefixes will be stripped in favor of using exact versions.
2020
@@ -23,9 +23,6 @@ Options:
2323
-b, --breaking include breaking/major version upgrades
2424
-d, --dry-run just print which packages are out of date
2525
-h, --help display help for command
26-
27-
Commands:
28-
reset does a fresh install of all dependencies
2926
```
3027

3128
## npx

bin/cli.js

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
const { program } = require('commander');
44
const { version } = require('../package.json');
5-
const upgradeDeps = require('../lib/upgrade-deps');
6-
const reset = require('../lib/reset');
5+
const upgrade_deps = require('../lib/upgrade-deps');
76

87
program
98
.name('npx upgrade-deps')
@@ -16,20 +15,6 @@ program
1615
'CLI for automating upgrading package.json dependencies.',
1716
'Semver prefixes will be stripped in favor of using exact versions.'
1817
].join(' ') )
19-
.action( upgradeDeps );
20-
21-
program
22-
.command('reset')
23-
.description('does a fresh install of all dependencies')
24-
.addHelpText( 'after', `
25-
reset command will:
26-
- switch to the node version specified in local .nvmrc
27-
- build a manual 'npm install ...' string via dependencies from local package.json
28-
- install the npm deps
29-
30-
dependencies are installed individually rather than via 'npm install' as a
31-
workaround to 'npm install' sometimes crashing.
32-
` )
33-
.action( reset );
18+
.action( upgrade_deps );
3419

3520
program.parse( process.argv );

lib/reset.js

Lines changed: 0 additions & 71 deletions
This file was deleted.

lib/upgrade-deps.js

Lines changed: 62 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,142 +1,144 @@
11
const fs = require('fs');
22
const { promisify } = require('util');
33
const path = require('path');
4-
const execAsync = require('./util/exec-async');
4+
const exec_async = require('./util/exec-async');
55

66
const storage = '~/.upgrade-deps';
77

8-
const writeFileAsync = promisify( fs.writeFile );
9-
const semverRegexStr = '[0-9]+\\.[0-9]+\\.[0-9]+';
10-
const semverRegex = new RegExp( semverRegexStr );
11-
const gitSemverRegex = new RegExp( `^.+#${ semverRegexStr }$` );
8+
const write_file_async = promisify( fs.writeFile );
9+
const semver_regex_str = '[0-9]+\\.[0-9]+\\.[0-9]+';
10+
const semver_regex = new RegExp( semver_regex_str );
11+
const git_semver_regex = new RegExp( `^.+#${ semver_regex_str }$` );
1212

13-
const getLatestNpm = async( pkgName ) => {
14-
const { stdout, stderr } = await execAsync( `npm show ${ pkgName } version` );
13+
async function get_latest_npm( pkg_name ) {
14+
const { stdout, stderr } = await exec_async( `npm show ${ pkg_name } version` );
1515

1616
if ( stderr ) {
1717
throw new Error( stderr );
1818
}
1919

2020
return stdout.trim();
21-
};
21+
}
2222

23-
const getLatestGit = async( version ) => {
23+
async function get_latest_git( version ) {
2424
const [ repo ] = version.split('#');
2525

2626
const destination = `${ storage }/${ repo }`;
2727

28-
await execAsync( `git clone git@github.com:${ repo } ${ destination }` );
28+
await exec_async( `git clone git@github.com:${ repo } ${ destination }` );
2929

30-
const { stdout: latestTag } = await execAsync([
30+
const { stdout: latest_tag } = await exec_async([
3131
`cd ${ destination }`,
3232
'&& git describe --tags `git rev-list --tags --max-count=1`'
3333
].join(' ') );
3434

35-
return `${ repo }#${ latestTag.trim() }`;
36-
};
35+
return `${ repo }#${ latest_tag.trim() }`;
36+
}
3737

38-
const getLatest = async([ pkgName, version ]) => {
38+
async function get_latest([ pkg_name, version ]) {
3939
let latest = version;
4040

41-
if ( gitSemverRegex.test( version ) ) {
42-
latest = await getLatestGit( version );
43-
} else if ( semverRegex.test( version ) ) {
44-
latest = await getLatestNpm( pkgName );
41+
if ( git_semver_regex.test( version ) ) {
42+
latest = await get_latest_git( version );
43+
} else if ( semver_regex.test( version ) ) {
44+
latest = await get_latest_npm( pkg_name );
4545
}
4646

47-
return [ pkgName, latest ];
48-
};
47+
return [ pkg_name, latest ];
48+
}
4949

50-
const getPackageJSON = () => {
51-
const pkgJSONPath = path.join( process.cwd(), 'package.json' );
50+
function get_pkg_json() {
51+
const pkg_json_path = path.join( process.cwd(), 'package.json' );
5252

5353
try {
54-
return require( pkgJSONPath );
54+
return require( pkg_json_path );
5555
} catch ( ex ) {
5656
if ( ex.code === 'MODULE_NOT_FOUND' ) {
57-
throw new Error( `couldnt find package.json in current directory: ${ pkgJSONPath }` );
57+
throw new Error( `couldnt find package.json in current directory: ${ pkg_json_path }` );
5858
}
5959
throw ex;
6060
}
61-
};
61+
}
6262

63-
const upgradeDeps = async({ breaking, dryRun }) => {
63+
async function upgrade_deps({ breaking, dryRun: dry_run }) {
6464
try {
65-
const packageJSON = getPackageJSON();
65+
const pkg_json = get_pkg_json();
6666

67-
await execAsync( `[ ! -d ${ storage } ]` ).catch( () => {
67+
await exec_async( `[ ! -d ${ storage } ]` ).catch( () => {
6868
console.log( `State directory "${ storage }" must be deleted to continue` );
6969
process.exit( 1 );
7070
});
7171

72-
await execAsync( `mkdir -p ${ storage }` );
72+
await exec_async( `mkdir -p ${ storage }` );
7373

74-
const depsPromise = Promise.all(
75-
Object.entries( packageJSON.dependencies || {} ).map( getLatest )
74+
const deps_promise = Promise.all(
75+
Object.entries( pkg_json.dependencies || {} ).map( get_latest )
7676
);
7777

78-
const devDepsPromise = Promise.all(
79-
Object.entries( packageJSON.devDependencies || {} ).map( getLatest )
78+
const dev_deps_promise = Promise.all(
79+
Object.entries( pkg_json.devDependencies || {} ).map( get_latest )
8080
);
8181

82-
83-
const [ dependencies, devDependencies ] = await Promise.all([
84-
depsPromise,
85-
devDepsPromise
82+
const [ dependencies, dev_dependencies ] = await Promise.all([
83+
deps_promise,
84+
dev_deps_promise
8685
]);
8786

88-
const updated = Object.assign( {}, packageJSON );
89-
const dryRunUpdates = { dependencies: {}, devDependencies: {} };
87+
const updated = Object.assign( {}, pkg_json );
88+
const dry_run_updates = { dependencies: {}, devDependencies: {} };
9089

9190
if ( dependencies.length ) {
9291
updated.dependencies = Object.fromEntries(
9392
dependencies.map( ([name, version]) => {
94-
const prevVersion = packageJSON.dependencies[name];
95-
const majorBump = prevVersion.split('.')[0] !== version.split('.')[0];
96-
const newVersion = !majorBump || breaking ? version : prevVersion;
93+
const prev_version = pkg_json.dependencies[name];
94+
const major_bump = prev_version.split('.')[0] !== version.split('.')[0];
95+
const new_version = !major_bump || breaking ? version : prev_version;
9796

98-
if ( prevVersion !== newVersion ) {
99-
dryRunUpdates.dependencies[ name ] = `${ prevVersion } -> ${ newVersion }`;
97+
if ( prev_version !== new_version ) {
98+
dry_run_updates.dependencies[ name ] = `${ prev_version } -> ${ new_version }`;
10099
}
101100

102-
return [name, newVersion];
101+
return [name, new_version];
103102
})
104103
);
105104
}
106105

107-
if ( devDependencies.length ) {
106+
if ( dev_dependencies.length ) {
108107
updated.devDependencies = Object.fromEntries(
109-
devDependencies.map( ([name, version]) => {
110-
const prevVersion = packageJSON.devDependencies[name];
111-
const majorBump = prevVersion.split('.')[0] !== version.split('.')[0];
112-
const newVersion = !majorBump || breaking ? version : prevVersion;
108+
dev_dependencies.map( ([name, version]) => {
109+
const prev_version = pkg_json.devDependencies[name];
110+
const major_bump = prev_version.split('.')[0] !== version.split('.')[0];
111+
const new_version = !major_bump || breaking ? version : prev_version;
113112

114-
if ( prevVersion !== newVersion ) {
115-
dryRunUpdates.devDependencies[ name ] = `${ prevVersion } -> ${ newVersion }`;
113+
if ( prev_version !== new_version ) {
114+
dry_run_updates.devDependencies[ name ] = `${ prev_version } -> ${ new_version }`;
116115
}
117116

118-
return [name, newVersion];
117+
return [name, new_version];
119118
})
120119
);
121120
}
122121

123-
if ( dryRun ) {
122+
if ( dry_run ) {
124123
console.log('Dry run package updates:\n');
125-
console.log( JSON.stringify( dryRunUpdates, null, 2 ) );
124+
console.log( JSON.stringify( dry_run_updates, null, 2 ) );
126125
} else {
127-
await writeFileAsync( 'package.json', JSON.stringify( updated, null, 2 ).trim() );
126+
await write_file_async(
127+
'package.json',
128+
JSON.stringify( updated, null, 2 ).trim() + '\n'
129+
);
128130
}
129131

130-
await execAsync( `rm -rf ${ storage }` );
132+
await exec_async( `rm -rf ${ storage }` );
131133

132134
process.exit( 0 );
133135
} catch ( ex ) {
134136
console.error( 'Failure upgrading deps', ex );
135137

136-
await execAsync( `rm -rf ${ storage }` );
138+
await exec_async( `rm -rf ${ storage }` );
137139

138140
process.exit( 1 );
139141
}
140-
};
142+
}
141143

142-
module.exports = upgradeDeps;
144+
module.exports = upgrade_deps;

lib/util/exec-async.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const { exec } = require('child_process');
22
const { promisify } = require('util');
33

4-
const execAsync = promisify( exec );
4+
const exec_async = promisify( exec );
55

6-
module.exports = execAsync;
6+
module.exports = exec_async;

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "upgrade-deps",
3-
"version": "0.3.3",
3+
"version": "1.0.0",
44
"description": "CLI for automating updating package.json dependencies",
55
"main": "index.js",
66
"scripts": {
@@ -13,10 +13,10 @@
1313
"upgrade-deps": "./bin/cli.js"
1414
},
1515
"dependencies": {
16-
"commander": "9.1.0"
16+
"commander": "9.4.1"
1717
},
1818
"devDependencies": {
19-
"@edwmurph/eslint-config": "4.0.0"
19+
"@edwmurph/eslint-config": "5.0.0"
2020
},
2121
"author": "edward",
2222
"homepage": "https://github.com/edwmurph/upgrade-deps#readme",

0 commit comments

Comments
 (0)