New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

copy-config

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

copy-config - npm Package Compare versions

Comparing version 0.2.1 to 0.3.0-0

13

dist/configs.js

@@ -35,5 +35,11 @@ "use strict";

pattern: '{.,.vscode,.devcontainer,config}/*.json',
ignore: ['package-lock.json'],
merge: mergeStrategies.jsonRemoteDefaults,
},
{
pattern: '{.,.vscode,.devcontainer,config}/*.{yml,yaml}',
ignore: ['**/pnpm-lock.{yaml,yml}'],
merge: mergeStrategies.yamlRemoteDefaults,
},
{
pattern: '*.codeworkspace',

@@ -55,3 +61,7 @@ merge: mergeStrategies.jsonRemoteDefaults,

{
pattern: '.github/**/*.{yml,yaml,md}',
pattern: '.github/**/*.{yml,yaml}',
merge: mergeStrategies.yamlRemoteDefaults,
},
{
pattern: '.github/**/*.md',
merge: mergeStrategies.preferLocal,

@@ -67,2 +77,3 @@ },

[mergeStrategies.jsonRemoteDefaults, mergeStrategies.jsonAggressiveMerge],
[mergeStrategies.yamlRemoteDefaults, mergeStrategies.yamlAggressiveMerge],
[mergeStrategies.concat, mergeStrategies.replace],

@@ -69,0 +80,0 @@ [mergeStrategies.preferLocal, mergeStrategies.replace],

@@ -26,2 +26,16 @@ import type { PackageJson } from 'type-fest';

};
export declare const yamlRemoteDefaults: MergeStrategy & {
jsonMergeStrategy: (params: {
remoteJson: any;
localJson: any;
meta: Meta;
}) => any;
};
export declare const yamlAggressiveMerge: MergeStrategy & {
jsonMergeStrategy: (params: {
remoteJson: any;
localJson: any;
meta: Meta;
}) => any;
};
export declare const replace: MergeStrategy;

@@ -28,0 +42,0 @@ export declare const concat: MergeStrategy;

29

dist/merge.js

@@ -26,4 +26,5 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.aggressivePackageJson = exports.fairlySensiblePackageJson = exports.preferLocal = exports.concat = exports.replace = exports.jsonAggressiveMerge = exports.jsonRemoteDefaults = void 0;
exports.aggressivePackageJson = exports.fairlySensiblePackageJson = exports.preferLocal = exports.concat = exports.replace = exports.yamlAggressiveMerge = exports.yamlRemoteDefaults = exports.jsonAggressiveMerge = exports.jsonRemoteDefaults = void 0;
const cp = __importStar(require("child_process"));
const jsYaml = __importStar(require("js-yaml"));
const lodash = __importStar(require("lodash"));

@@ -33,17 +34,27 @@ const os = __importStar(require("os"));

const variables_1 = require("./variables");
const jsonMergeStrategy = (fn) => {
const YAML = {
parse: str => jsYaml.load(str),
stringify: obj => jsYaml.dump(obj),
};
const formatterMergeStrategy = (formatter, fn) => {
const mergeStrategy = ({ remoteContent, localContent, meta }) => {
const remoteJson = JSON.parse(remoteContent);
const localJson = JSON.parse(localContent || '{}');
const remoteJson = formatter.parse(remoteContent);
const localJson = formatter.parse(localContent || '{}');
const updated = fn({ remoteJson, localJson, meta });
return JSON.stringify(updated, null, 2) + os.EOL;
return formatter.stringify(updated, null, 2) + os.EOL;
};
return Object.assign(mergeStrategy, { jsonMergeStrategy: fn });
};
exports.jsonRemoteDefaults = jsonMergeStrategy(({ remoteJson, localJson }) => {
exports.jsonRemoteDefaults = formatterMergeStrategy(JSON, ({ remoteJson, localJson }) => {
return lodash.defaultsDeep(localJson, remoteJson);
});
exports.jsonAggressiveMerge = jsonMergeStrategy(({ remoteJson, localJson }) => {
exports.jsonAggressiveMerge = formatterMergeStrategy(JSON, ({ remoteJson, localJson }) => {
return lodash.merge({}, localJson, remoteJson);
});
exports.yamlRemoteDefaults = formatterMergeStrategy(YAML, ({ remoteJson, localJson }) => {
return lodash.defaultsDeep(localJson, remoteJson);
});
exports.yamlAggressiveMerge = formatterMergeStrategy(JSON, ({ remoteJson, localJson }) => {
return lodash.merge({}, localJson, remoteJson);
});
const replace = ({ remoteContent }) => remoteContent;

@@ -72,3 +83,3 @@ exports.replace = replace;

*/
exports.fairlySensiblePackageJson = jsonMergeStrategy(({ remoteJson, localJson, meta }) => {
exports.fairlySensiblePackageJson = formatterMergeStrategy(JSON, ({ remoteJson, localJson, meta }) => {
const remoteDevDeps = remoteJson.devDependencies || {};

@@ -89,3 +100,3 @@ // this is an (unavoidably?) confusing name. This is the name of the *git* remote for the local repo, nothing to do with the remote repo

});
exports.aggressivePackageJson = jsonMergeStrategy(({ remoteJson, localJson, meta }) => {
exports.aggressivePackageJson = formatterMergeStrategy(JSON, ({ remoteJson, localJson, meta }) => {
const { name, version, remotePkg } = exports.fairlySensiblePackageJson.jsonMergeStrategy({

@@ -92,0 +103,0 @@ remoteJson,

@@ -24,2 +24,3 @@ /// <reference types="node" />

'--aggressive'?: boolean | undefined;
'--diff-check'?: string | undefined;
} | undefined;

@@ -26,0 +27,0 @@ logger?: Logger | undefined;

@@ -62,2 +62,3 @@ "use strict";

'--aggressive': Boolean,
'--diff-check': String,
};

@@ -76,2 +77,3 @@ const parseArgv = (argv = process.argv.slice(2)) => {

const runWithArgs = async ({ fs = realFs, cwd = process.cwd(), args = parseArgv(process.argv.slice(2)), logger = console, }) => {
var _a;
if (args['--help']) {

@@ -87,3 +89,6 @@ // crappy markdown parser!

.split('\n#')[0]
.trim();
.trim()
.split('\n')
.map(line => ' ' + line)
.join('\n');
return [{ option, doc }];

@@ -96,2 +101,12 @@ });

const outputPath = path.resolve(cwd, args['--output'] || '.');
const diffCheckCommand = (_a = args['--diff-check']) !== null && _a !== void 0 ? _a : 'git diff --exit-code';
try {
if (diffCheckCommand) {
cp.execSync(diffCheckCommand, { stdio: 'inherit' });
}
}
catch (error) {
const msg = `Diff check command "${diffCheckCommand}" failed. To resolve this you can stage your working changes before rerunning, or override the command, e.g. \`--diff-check ""\``;
throw Object.assign(new Error(msg), { cause: error });
}
const getTempRepoDir = () => {

@@ -126,3 +141,3 @@ let repo = args['--repo'];

reversed.forEach(rule => {
const files = globSync(rule.pattern, { cwd: copyFrom });
const files = globSync(rule.pattern, { cwd: copyFrom, ignore: rule.ignore });
const filtered = args['--filter'] ? (0, lodash_1.intersection)(files, globSync(args['--filter'], { cwd: copyFrom })) : files;

@@ -129,0 +144,0 @@ filtered.forEach(relPath => {

@@ -5,2 +5,3 @@ import type * as mergeStrategies from './merge';

pattern: string;
ignore?: string | string[];
merge: mergeStrategies.MergeStrategy;

@@ -7,0 +8,0 @@ }

{
"name": "copy-config",
"version": "0.2.1",
"version": "0.3.0-0",
"description": "Copies another repo's configuration",

@@ -28,2 +28,3 @@ "main": "dist/index.js",

"glob": "^10.0.0",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",

@@ -35,2 +36,3 @@ "type-fest": "^3.5.0"

"@types/jest": "29.5.1",
"@types/js-yaml": "4.0.5",
"@types/lodash": "4.14.195",

@@ -41,5 +43,5 @@ "eslint": "8.41.0",

"jest": "29.5.0",
"np": "8.0.4",
"ts-jest": "29.1.0",
"typescript": "5.0.4",
"np": "8.0.1"
"typescript": "5.0.4"
},

@@ -46,0 +48,0 @@ "files": [

@@ -88,2 +88,24 @@ # copy-config

### `--diff-check`
A command which will make sure there are no working-copy changes in the current repo. This will run before modifying your file system to avoid making changes that get mixed up with yours. This defaults to `git diff --exit-code`.
You could set to something more fine-grained:
```bash
npx copy-config --repo someuser/somerepo --diff-check "git diff path/to/configs --exit-code"
```
Or something else completely:
```bash
npx copy-config --repo someuser/somerepo --diff-check "npm run somescript"
```
To disable checking completely you can set the command to empty string:
```bash
npx copy-config --repo someuser/somerepo --diff-check ""
```
### `--help`

@@ -90,0 +112,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc