one-way-git-sync 3.1.0 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/index.js +30 -23
- package/dist/index.js.map +1 -1
- package/package.json +43 -37
package/README.md
CHANGED
|
@@ -40,12 +40,12 @@ yarn one-way-git-sync \
|
|
|
40
40
|
### How to Deal with Conflicts
|
|
41
41
|
|
|
42
42
|
If the last commit in the dest repo isn't a sync commit and if it is not first time,
|
|
43
|
-
the dest repo probably has
|
|
44
|
-
You need to merge
|
|
43
|
+
the dest repo probably has some commits (`conflict commits`) which don't exist in the src repo.
|
|
44
|
+
You need to merge conflict commits in the src repo manually at first,
|
|
45
45
|
then, you need to force synchronizing the dest repo with the src repo.
|
|
46
46
|
The sample commands are as follows:
|
|
47
47
|
|
|
48
|
-
1. `yarn one-way-git-sync` fails
|
|
48
|
+
1. `yarn one-way-git-sync` fails then you notice there exist conflict commits
|
|
49
49
|
2. `cd one-way-git-sync`
|
|
50
50
|
3. `git remote add upstream https://github.com/WillBooster/sample-of-one-way-git-sync`
|
|
51
51
|
4. `git merge --allow-unrelated-histories upstream/main`
|
|
@@ -57,7 +57,7 @@ The sample commands are as follows:
|
|
|
57
57
|
|
|
58
58
|
## Example Repository and Example GitHub Actions Workflows
|
|
59
59
|
|
|
60
|
-
[sample-of-one-way-git-sync](https://github.com/WillBooster/sample-of-one-way-git-sync)
|
|
61
|
-
[release.yml](.github/workflows/release.yml)
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
- [sample-of-one-way-git-sync](https://github.com/WillBooster/sample-of-one-way-git-sync): an example synchronized repository.
|
|
61
|
+
- [release.yml](.github/workflows/release.yml): releases a new npm package and add a tag automatically in this repository using `semantic-release`.
|
|
62
|
+
- [sync.yml](.github/workflows/sync.yml): it synchronizes `sample-of-one-way-git-sync` repository using `one-way-git-sync` when a new version is released.
|
|
63
|
+
- [force-sync.yml](.github/workflows/sync-force.yml): we can manually trigger this workflow which forces synchronizing `sample-of-one-way-git-sync` repository.
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ const logger = winston.createLogger({
|
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
const syncDirPath = path__default["default"].join('node_modules', '.temp', 'sync-git-repo');
|
|
34
|
-
const ignoreNames = ['.git', 'node_modules'];
|
|
34
|
+
const ignoreNames = ['.git', '.github', 'node_modules'];
|
|
35
35
|
async function sync(opts, init) {
|
|
36
36
|
await fsp__default["default"].mkdir(syncDirPath, {
|
|
37
37
|
recursive: true
|
|
@@ -46,22 +46,23 @@ async function sync(opts, init) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
async function syncCore(destRepoPath, opts, init) {
|
|
49
|
-
var _srcLog$latest;
|
|
49
|
+
var _srcLog$latest, _opts$prefix;
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
'--
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
const cloneOpts = {
|
|
52
|
+
'--single-branch': undefined
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
if (!opts.force) {
|
|
56
|
+
cloneOpts['--depth'] = 1;
|
|
57
|
+
}
|
|
56
58
|
|
|
57
59
|
if (opts.branch) {
|
|
58
|
-
|
|
59
|
-
await dstGit.checkout(opts.branch);
|
|
60
|
-
} catch (_) {
|
|
61
|
-
await dstGit.checkoutLocalBranch(opts.branch);
|
|
62
|
-
}
|
|
60
|
+
cloneOpts['--branch'] = opts.branch;
|
|
63
61
|
}
|
|
64
62
|
|
|
63
|
+
await simpleGit__default["default"]().clone(opts.dest, destRepoPath, cloneOpts);
|
|
64
|
+
logger.verbose(`Cloned a destination repo on ${destRepoPath}`);
|
|
65
|
+
const dstGit = simpleGit__default["default"](destRepoPath);
|
|
65
66
|
const dstLog = await dstGit.log();
|
|
66
67
|
let from;
|
|
67
68
|
|
|
@@ -87,7 +88,7 @@ async function syncCore(destRepoPath, opts, init) {
|
|
|
87
88
|
'--first-parent': undefined
|
|
88
89
|
} : undefined);
|
|
89
90
|
} catch (e) {
|
|
90
|
-
logger.error(
|
|
91
|
+
logger.error(`Failed to get source commit history: ${e.stack}`);
|
|
91
92
|
return false;
|
|
92
93
|
}
|
|
93
94
|
|
|
@@ -122,7 +123,13 @@ async function syncCore(destRepoPath, opts, init) {
|
|
|
122
123
|
srcTag = child_process__default["default"].execSync(describeCommand).toString().trim();
|
|
123
124
|
}
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
let prefix = (_opts$prefix = opts.prefix) !== null && _opts$prefix !== void 0 ? _opts$prefix : '';
|
|
127
|
+
|
|
128
|
+
if (prefix && !prefix.endsWith('/')) {
|
|
129
|
+
prefix += '/';
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const link = `${prefix}${latestHash}`;
|
|
126
133
|
const title = srcTag ? `sync ${srcTag} (${link})` : `sync ${link}`;
|
|
127
134
|
const body = init ? `Initialize one-way-git-sync by replacing all the files with those of ${opts.dest}` : srcLog.all.map(l => `* ${l.message}`).join('\n\n');
|
|
128
135
|
|
|
@@ -131,7 +138,7 @@ async function syncCore(destRepoPath, opts, init) {
|
|
|
131
138
|
logger.verbose(`Created a commit: ${title}`);
|
|
132
139
|
logger.verbose(` with body: ${body}`);
|
|
133
140
|
} catch (e) {
|
|
134
|
-
logger.error(
|
|
141
|
+
logger.error(`Failed to commit changes: ${e.stack}\`);`);
|
|
135
142
|
return false;
|
|
136
143
|
}
|
|
137
144
|
|
|
@@ -142,7 +149,7 @@ async function syncCore(destRepoPath, opts, init) {
|
|
|
142
149
|
await dstGit.addTag(destTag);
|
|
143
150
|
logger.verbose(`Created a tag: ${destTag}`);
|
|
144
151
|
} catch (e) {
|
|
145
|
-
logger.error(
|
|
152
|
+
logger.error(`Failed to commit changes: ${e.stack}\`);`);
|
|
146
153
|
return false;
|
|
147
154
|
}
|
|
148
155
|
}
|
|
@@ -161,11 +168,11 @@ async function syncCore(destRepoPath, opts, init) {
|
|
|
161
168
|
});
|
|
162
169
|
}
|
|
163
170
|
} catch (e) {
|
|
164
|
-
logger.error(
|
|
171
|
+
logger.error(`Failed to push the commit: ${e.stack}`);
|
|
165
172
|
return false;
|
|
166
173
|
}
|
|
167
174
|
|
|
168
|
-
logger.verbose('Pushed
|
|
175
|
+
logger.verbose('Pushed the commit');
|
|
169
176
|
return true;
|
|
170
177
|
}
|
|
171
178
|
|
|
@@ -183,7 +190,7 @@ function extractCommitHash(logResult) {
|
|
|
183
190
|
}
|
|
184
191
|
}
|
|
185
192
|
|
|
186
|
-
logger.error(
|
|
193
|
+
logger.error(`No sync commit: ${logResult.all[0].message}`);
|
|
187
194
|
return;
|
|
188
195
|
}
|
|
189
196
|
|
|
@@ -217,8 +224,8 @@ const yargsOptions = {
|
|
|
217
224
|
prefix: {
|
|
218
225
|
type: 'string',
|
|
219
226
|
alias: 'p',
|
|
220
|
-
describe: `A prefix of a commit hash used to generate a commit
|
|
221
|
-
|
|
227
|
+
describe: `A prefix of a commit hash used to generate a commit title, e.g. 'sync <prefix>/<hash>'.
|
|
228
|
+
A typical value is like 'https://github.com/WillBooster/one-way-git-sync/commits'`
|
|
222
229
|
},
|
|
223
230
|
branch: {
|
|
224
231
|
type: 'string',
|
|
@@ -228,7 +235,7 @@ const yargsOptions = {
|
|
|
228
235
|
tag: {
|
|
229
236
|
type: 'string',
|
|
230
237
|
alias: 't',
|
|
231
|
-
describe: 'Specify tag created in destination repo.'
|
|
238
|
+
describe: 'Specify tag to be created in destination repo.'
|
|
232
239
|
},
|
|
233
240
|
'tag-hash': {
|
|
234
241
|
type: 'boolean',
|
|
@@ -236,7 +243,7 @@ const yargsOptions = {
|
|
|
236
243
|
},
|
|
237
244
|
'tag-version': {
|
|
238
245
|
type: 'boolean',
|
|
239
|
-
describe: 'Create version tag (e.g. v1.31.5). It
|
|
246
|
+
describe: 'Create version tag (e.g. v1.31.5). It could be a non-unique tag.'
|
|
240
247
|
},
|
|
241
248
|
dry: {
|
|
242
249
|
type: 'boolean',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/logger.ts","../src/index.ts","../src/initCommand.ts","../src/syncCommand.ts","../src/yargsOptions.ts","../src/cli.ts"],"sourcesContent":["import { createLogger, format, transports } from 'winston';\n\nexport const logger = createLogger({\n transports: [\n new transports.Console({\n format: format.cli({ colors: { error: 'red' } }),\n }),\n ],\n});\n","import child_process from 'child_process';\nimport fsp from 'fs/promises';\nimport path from 'path';\n\nimport fse from 'fs-extra';\nimport simpleGit, { SimpleGit } from 'simple-git';\nimport type { LogResult } from 'simple-git/typings/response';\nimport { InferredOptionTypes } from 'yargs';\n\nimport { logger } from './logger';\nimport { yargsOptions } from './yargsOptions';\n\nconst syncDirPath = path.join('node_modules', '.temp', 'sync-git-repo');\nconst ignoreNames = ['.git', 'node_modules'];\n\nexport async function sync(opts: InferredOptionTypes<typeof yargsOptions>, init: boolean): Promise<void> {\n await fsp.mkdir(syncDirPath, { recursive: true });\n const dirPath = await fsp.mkdtemp(path.join(syncDirPath, 'repo-'));\n const ret = await syncCore(dirPath, opts, init);\n await fsp.rm(dirPath, { recursive: true, force: true });\n process.exit(ret ? 0 : 1);\n}\n\nasync function syncCore(\n destRepoPath: string,\n opts: InferredOptionTypes<typeof yargsOptions>,\n init: boolean\n): Promise<boolean> {\n await simpleGit().clone(opts.dest, destRepoPath, opts.force ? undefined : { '--depth': 1 });\n logger.verbose('Cloned a destination repo');\n\n const dstGit: SimpleGit = simpleGit(destRepoPath);\n if (opts.branch) {\n try {\n await dstGit.checkout(opts.branch);\n } catch (_) {\n await dstGit.checkoutLocalBranch(opts.branch);\n }\n }\n const dstLog = await dstGit.log();\n\n let from: string | undefined;\n if (!init) {\n from = extractCommitHash(dstLog);\n if (!from) {\n logger.error('No valid commit in destination repo');\n return false;\n }\n logger.verbose(`Extracted a valid commit: ${from}`);\n }\n\n const srcGit: SimpleGit = simpleGit();\n let srcLog: LogResult;\n try {\n // '--first-parent' hides children commits of merge commits\n srcLog = await srcGit.log(from ? { from, to: 'HEAD', '--first-parent': undefined } : undefined);\n } catch (e) {\n logger.error('Failed to get source commit history:', e);\n return false;\n }\n\n const latestHash = srcLog.latest?.hash;\n if (!latestHash) {\n logger.info('No synchronizable commit');\n return true;\n }\n\n const [destFiles, srcFiles] = await Promise.all([fsp.readdir(destRepoPath), fsp.readdir('.')]);\n for (const destFile of destFiles) {\n if (ignoreNames.includes(destFile)) continue;\n await fsp.rm(path.join(destRepoPath, destFile), { recursive: true, force: true });\n }\n for (const srcFile of srcFiles) {\n if (ignoreNames.includes(srcFile)) continue;\n fse.copySync(srcFile, path.join(destRepoPath, srcFile));\n }\n await dstGit.add('-A');\n\n let srcTag = '';\n if (opts['tag-hash'] || opts['tag-version']) {\n // e.g. `--abbrev=0` changes `v1.31.5-2-gcdde507` to `v1.31.5`\n const describeCommand = `git describe --tags --always ${opts['tag-version'] ? '--abbrev=0' : ''}`;\n srcTag = child_process.execSync(describeCommand).toString().trim();\n }\n const link = `${opts.prefix || ''}${latestHash}`;\n const title = srcTag ? `sync ${srcTag} (${link})` : `sync ${link}`;\n const body = init\n ? `Initialize one-way-git-sync by replacing all the files with those of ${opts.dest}`\n : srcLog.all.map((l) => `* ${l.message}`).join('\\n\\n');\n try {\n await dstGit.commit(`${title}\\n\\n${body}`);\n logger.verbose(`Created a commit: ${title}`);\n logger.verbose(` with body: ${body}`);\n } catch (e) {\n logger.error('Failed to commit changes:', e);\n return false;\n }\n\n const destTag = srcTag || opts.tag;\n if (destTag) {\n try {\n await dstGit.addTag(destTag);\n logger.verbose(`Created a tag: ${destTag}`);\n } catch (e) {\n logger.error('Failed to commit changes:', e);\n return false;\n }\n }\n\n if (opts.dry) {\n logger.verbose('Finished dry run');\n return true;\n }\n\n try {\n await dstGit.push();\n if (destTag) {\n await dstGit.push({ '--tags': null });\n }\n } catch (e) {\n logger.error('Failed to push a commit:', e);\n return false;\n }\n\n logger.verbose('Pushed a commit');\n return true;\n}\n\nfunction extractCommitHash(logResult: LogResult): string | undefined {\n if (logResult.all.length === 0) {\n logger.error('No commit history');\n return;\n }\n\n for (const log of logResult.all) {\n const [head, ...words] = log.message.replace(/[()]/g, '').split(/[\\s/]/);\n if (head === 'sync' && words.length) {\n return words[words.length - 1];\n }\n }\n logger.error('No sync commit: ', logResult.all[0]);\n return;\n}\n","import type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { yargsOptions } from './yargsOptions';\n\nimport { sync } from './index';\n\nexport const initCommand: CommandModule<unknown, InferredOptionTypes<typeof yargsOptions>> = {\n command: 'init',\n describe: 'Initialize a destination git repository',\n async handler(argv) {\n await sync(argv, true);\n },\n};\n","import type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { yargsOptions } from './yargsOptions';\n\nimport { sync } from './index';\n\nexport const syncCommand: CommandModule<unknown, InferredOptionTypes<typeof yargsOptions>> = {\n command: 'sync',\n describe: 'Synchronize a destination git repository with a source git repository',\n async handler(argv) {\n await sync(argv, false);\n },\n};\n","export const yargsOptions = {\n dest: {\n type: 'string',\n alias: 'd',\n describe: 'A URL of a destination git repository.',\n demand: true,\n },\n prefix: {\n type: 'string',\n alias: 'p',\n describe: `A prefix of a commit hash used to generate a commit message.\n The typical value is like \"https://github.com/WillBooster/one-way-git-sync/commits/\"`,\n },\n branch: {\n type: 'string',\n alias: 'b',\n describe: 'Specify branch of destination repo.',\n },\n tag: {\n type: 'string',\n alias: 't',\n describe: 'Specify tag created in destination repo.',\n },\n 'tag-hash': {\n type: 'boolean',\n describe: 'Create version+hash tag (e.g. v1.31.5-2-gcdde507). It should be a unique tag.',\n },\n 'tag-version': {\n type: 'boolean',\n describe: 'Create version tag (e.g. v1.31.5). It may be a non-unique tag.',\n },\n dry: {\n type: 'boolean',\n describe: 'Enable dry-run mode.',\n },\n force: {\n type: 'boolean',\n describe: 'Force to overwrite the destination git repository.',\n },\n verbose: {\n type: 'boolean',\n alias: 'v',\n describe: 'Show details logs.',\n },\n} as const;\n","import { hideBin } from 'yargs/helpers';\nimport yargs from 'yargs/yargs';\n\nimport { initCommand } from './initCommand';\nimport { logger } from './logger';\nimport { syncCommand } from './syncCommand';\nimport { yargsOptions } from './yargsOptions';\n\nexport async function cli(argv: string[]): Promise<void> {\n await yargs(hideBin(argv))\n .options(yargsOptions)\n .middleware((argv) => {\n logger.level = argv.verbose ? 'verbose' : 'info';\n })\n .command(initCommand)\n .command(syncCommand).argv;\n}\n"],"names":["logger","createLogger","transports","Console","format","cli","colors","error","syncDirPath","path","join","ignoreNames","sync","opts","init","fsp","mkdir","recursive","dirPath","mkdtemp","ret","syncCore","rm","force","process","exit","destRepoPath","simpleGit","clone","dest","undefined","verbose","dstGit","branch","checkout","_","checkoutLocalBranch","dstLog","log","from","extractCommitHash","srcGit","srcLog","to","e","latestHash","latest","hash","info","destFiles","srcFiles","Promise","all","readdir","destFile","includes","srcFile","fse","copySync","add","srcTag","describeCommand","child_process","execSync","toString","trim","link","prefix","title","body","map","l","message","commit","destTag","tag","addTag","dry","push","logResult","length","head","words","replace","split","initCommand","command","describe","handler","argv","syncCommand","yargsOptions","type","alias","demand","yargs","hideBin","options","middleware","level"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/logger.ts","../src/index.ts","../src/initCommand.ts","../src/syncCommand.ts","../src/yargsOptions.ts","../src/cli.ts"],"sourcesContent":["import { createLogger, format, transports } from 'winston';\n\nexport const logger = createLogger({\n transports: [\n new transports.Console({\n format: format.cli({ colors: { error: 'red' } }),\n }),\n ],\n});\n","import child_process from 'child_process';\nimport fsp from 'fs/promises';\nimport path from 'path';\n\nimport fse from 'fs-extra';\nimport type { LogResult } from 'simple-git';\nimport simpleGit, { SimpleGit } from 'simple-git';\nimport { InferredOptionTypes } from 'yargs';\n\nimport { logger } from './logger';\nimport { yargsOptions } from './yargsOptions';\n\nconst syncDirPath = path.join('node_modules', '.temp', 'sync-git-repo');\nconst ignoreNames = ['.git', '.github', 'node_modules'];\n\nexport async function sync(opts: InferredOptionTypes<typeof yargsOptions>, init: boolean): Promise<void> {\n await fsp.mkdir(syncDirPath, { recursive: true });\n const dirPath = await fsp.mkdtemp(path.join(syncDirPath, 'repo-'));\n const ret = await syncCore(dirPath, opts, init);\n await fsp.rm(dirPath, { recursive: true, force: true });\n process.exit(ret ? 0 : 1);\n}\n\nasync function syncCore(\n destRepoPath: string,\n opts: InferredOptionTypes<typeof yargsOptions>,\n init: boolean\n): Promise<boolean> {\n const cloneOpts: Record<string, any> = { '--single-branch': undefined };\n if (!opts.force) {\n cloneOpts['--depth'] = 1;\n }\n if (opts.branch) {\n cloneOpts['--branch'] = opts.branch;\n }\n await simpleGit().clone(opts.dest, destRepoPath, cloneOpts);\n logger.verbose(`Cloned a destination repo on ${destRepoPath}`);\n\n const dstGit: SimpleGit = simpleGit(destRepoPath);\n const dstLog = await dstGit.log();\n\n let from: string | undefined;\n if (!init) {\n from = extractCommitHash(dstLog);\n if (!from) {\n logger.error('No valid commit in destination repo');\n return false;\n }\n logger.verbose(`Extracted a valid commit: ${from}`);\n }\n\n const srcGit: SimpleGit = simpleGit();\n let srcLog: LogResult;\n try {\n // '--first-parent' hides children commits of merge commits\n srcLog = await srcGit.log(from ? { from, to: 'HEAD', '--first-parent': undefined } : undefined);\n } catch (e) {\n logger.error(`Failed to get source commit history: ${(e as Error).stack}`);\n return false;\n }\n\n const latestHash = srcLog.latest?.hash;\n if (!latestHash) {\n logger.info('No synchronizable commit');\n return true;\n }\n\n const [destFiles, srcFiles] = await Promise.all([fsp.readdir(destRepoPath), fsp.readdir('.')]);\n for (const destFile of destFiles) {\n if (ignoreNames.includes(destFile)) continue;\n await fsp.rm(path.join(destRepoPath, destFile), { recursive: true, force: true });\n }\n for (const srcFile of srcFiles) {\n if (ignoreNames.includes(srcFile)) continue;\n fse.copySync(srcFile, path.join(destRepoPath, srcFile));\n }\n await dstGit.add('-A');\n\n let srcTag = '';\n if (opts['tag-hash'] || opts['tag-version']) {\n // e.g. `--abbrev=0` changes `v1.31.5-2-gcdde507` to `v1.31.5`\n const describeCommand = `git describe --tags --always ${opts['tag-version'] ? '--abbrev=0' : ''}`;\n srcTag = child_process.execSync(describeCommand).toString().trim();\n }\n let prefix = opts.prefix ?? '';\n if (prefix && !prefix.endsWith('/')) {\n prefix += '/';\n }\n const link = `${prefix}${latestHash}`;\n const title = srcTag ? `sync ${srcTag} (${link})` : `sync ${link}`;\n const body = init\n ? `Initialize one-way-git-sync by replacing all the files with those of ${opts.dest}`\n : srcLog.all.map((l) => `* ${l.message}`).join('\\n\\n');\n try {\n await dstGit.commit(`${title}\\n\\n${body}`);\n logger.verbose(`Created a commit: ${title}`);\n logger.verbose(` with body: ${body}`);\n } catch (e) {\n logger.error(`Failed to commit changes: ${(e as Error).stack}\\`);`);\n return false;\n }\n\n const destTag = srcTag || opts.tag;\n if (destTag) {\n try {\n await dstGit.addTag(destTag);\n logger.verbose(`Created a tag: ${destTag}`);\n } catch (e) {\n logger.error(`Failed to commit changes: ${(e as Error).stack}\\`);`);\n return false;\n }\n }\n\n if (opts.dry) {\n logger.verbose('Finished dry run');\n return true;\n }\n\n try {\n await dstGit.push();\n if (destTag) {\n await dstGit.push({ '--tags': null });\n }\n } catch (e) {\n logger.error(`Failed to push the commit: ${(e as Error).stack}`);\n return false;\n }\n\n logger.verbose('Pushed the commit');\n return true;\n}\n\nfunction extractCommitHash(logResult: LogResult): string | undefined {\n if (logResult.all.length === 0) {\n logger.error('No commit history');\n return;\n }\n\n for (const log of logResult.all) {\n const [head, ...words] = log.message.replace(/[()]/g, '').split(/[\\s/]/);\n if (head === 'sync' && words.length) {\n return words[words.length - 1];\n }\n }\n logger.error(`No sync commit: ${logResult.all[0].message}`);\n return;\n}\n","import type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { yargsOptions } from './yargsOptions';\n\nimport { sync } from './index';\n\nexport const initCommand: CommandModule<unknown, InferredOptionTypes<typeof yargsOptions>> = {\n command: 'init',\n describe: 'Initialize a destination git repository',\n async handler(argv) {\n await sync(argv, true);\n },\n};\n","import type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { yargsOptions } from './yargsOptions';\n\nimport { sync } from './index';\n\nexport const syncCommand: CommandModule<unknown, InferredOptionTypes<typeof yargsOptions>> = {\n command: 'sync',\n describe: 'Synchronize a destination git repository with a source git repository',\n async handler(argv) {\n await sync(argv, false);\n },\n};\n","export const yargsOptions = {\n dest: {\n type: 'string',\n alias: 'd',\n describe: 'A URL of a destination git repository.',\n demand: true,\n },\n prefix: {\n type: 'string',\n alias: 'p',\n describe: `A prefix of a commit hash used to generate a commit title, e.g. 'sync <prefix>/<hash>'.\n A typical value is like 'https://github.com/WillBooster/one-way-git-sync/commits'`,\n },\n branch: {\n type: 'string',\n alias: 'b',\n describe: 'Specify branch of destination repo.',\n },\n tag: {\n type: 'string',\n alias: 't',\n describe: 'Specify tag to be created in destination repo.',\n },\n 'tag-hash': {\n type: 'boolean',\n describe: 'Create version+hash tag (e.g. v1.31.5-2-gcdde507). It should be a unique tag.',\n },\n 'tag-version': {\n type: 'boolean',\n describe: 'Create version tag (e.g. v1.31.5). It could be a non-unique tag.',\n },\n dry: {\n type: 'boolean',\n describe: 'Enable dry-run mode.',\n },\n force: {\n type: 'boolean',\n describe: 'Force to overwrite the destination git repository.',\n },\n verbose: {\n type: 'boolean',\n alias: 'v',\n describe: 'Show details logs.',\n },\n} as const;\n","import { hideBin } from 'yargs/helpers';\nimport yargs from 'yargs/yargs';\n\nimport { initCommand } from './initCommand';\nimport { logger } from './logger';\nimport { syncCommand } from './syncCommand';\nimport { yargsOptions } from './yargsOptions';\n\nexport async function cli(argv: string[]): Promise<void> {\n await yargs(hideBin(argv))\n .options(yargsOptions)\n .middleware((argv) => {\n logger.level = argv.verbose ? 'verbose' : 'info';\n })\n .command(initCommand)\n .command(syncCommand).argv;\n}\n"],"names":["logger","createLogger","transports","Console","format","cli","colors","error","syncDirPath","path","join","ignoreNames","sync","opts","init","fsp","mkdir","recursive","dirPath","mkdtemp","ret","syncCore","rm","force","process","exit","destRepoPath","cloneOpts","undefined","branch","simpleGit","clone","dest","verbose","dstGit","dstLog","log","from","extractCommitHash","srcGit","srcLog","to","e","stack","latestHash","latest","hash","info","destFiles","srcFiles","Promise","all","readdir","destFile","includes","srcFile","fse","copySync","add","srcTag","describeCommand","child_process","execSync","toString","trim","prefix","endsWith","link","title","body","map","l","message","commit","destTag","tag","addTag","dry","push","logResult","length","head","words","replace","split","initCommand","command","describe","handler","argv","syncCommand","yargsOptions","type","alias","demand","yargs","hideBin","options","middleware","level"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,67 +18,73 @@
|
|
|
18
18
|
"cleanup": "yarn format && yarn lint-fix",
|
|
19
19
|
"format": "sort-package-json && yarn prettify",
|
|
20
20
|
"_postinstall": "husky install",
|
|
21
|
-
"lint": "eslint --color \"./{src,__tests__}/**/*.{js,jsx,ts,tsx}\"",
|
|
21
|
+
"lint": "eslint --color \"./{src,__tests__}/**/*.{cjs,js,jsx,mjs,ts,tsx}\"",
|
|
22
22
|
"lint-fix": "yarn lint --fix",
|
|
23
23
|
"prepublishOnly": "pinst --disable",
|
|
24
|
-
"prettify": "prettier --color --write \"**/{.*/,}*.{css,htm,html,js,json,json5,jsx,md,scss,ts,tsx,vue,yaml,yml}\" \"!**/test-fixtures/**\"",
|
|
24
|
+
"prettify": "prettier --color --write \"**/{.*/,}*.{cjs,css,htm,html,js,json,json5,jsx,md,mjs,scss,ts,tsx,vue,yaml,yml}\" \"!**/test-fixtures/**\"",
|
|
25
25
|
"postpublish": "pinst --enable",
|
|
26
|
-
"
|
|
27
|
-
"start
|
|
26
|
+
"release": "yarn build && semantic-release",
|
|
27
|
+
"start": "babel-node -x .js,.jsx,.es6,.es,.ts -- src/start.ts",
|
|
28
|
+
"start-prod": "yarn build && yarn one-way-git-sync",
|
|
28
29
|
"typecheck": "tsc --noEmit --Pretty"
|
|
29
30
|
},
|
|
30
31
|
"prettier": "@willbooster/prettier-config",
|
|
32
|
+
"resolutions": {
|
|
33
|
+
"npm/chalk": "^4.1.2"
|
|
34
|
+
},
|
|
31
35
|
"dependencies": {
|
|
32
36
|
"fs-extra": "10.0.0",
|
|
33
|
-
"simple-git": "2.
|
|
34
|
-
"winston": "3.
|
|
35
|
-
"yargs": "17.
|
|
37
|
+
"simple-git": "3.2.6",
|
|
38
|
+
"winston": "3.5.1",
|
|
39
|
+
"yargs": "17.3.1"
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
|
-
"@babel/core": "7.
|
|
39
|
-
"@babel/helper-plugin-utils": "7.
|
|
40
|
-
"@babel/node": "7.16.
|
|
41
|
-
"@babel/plugin-proposal-class-properties": "7.16.
|
|
42
|
-
"@babel/plugin-proposal-numeric-separator": "7.16.
|
|
43
|
-
"@babel/preset-env": "7.16.
|
|
44
|
-
"@babel/preset-typescript": "7.16.
|
|
42
|
+
"@babel/core": "7.17.2",
|
|
43
|
+
"@babel/helper-plugin-utils": "7.16.7",
|
|
44
|
+
"@babel/node": "7.16.8",
|
|
45
|
+
"@babel/plugin-proposal-class-properties": "7.16.7",
|
|
46
|
+
"@babel/plugin-proposal-numeric-separator": "7.16.7",
|
|
47
|
+
"@babel/preset-env": "7.16.11",
|
|
48
|
+
"@babel/preset-typescript": "7.16.7",
|
|
45
49
|
"@rollup/plugin-babel": "5.3.0",
|
|
46
50
|
"@rollup/plugin-commonjs": "21.0.1",
|
|
47
|
-
"@rollup/plugin-node-resolve": "13.
|
|
48
|
-
"@types/eslint": "
|
|
51
|
+
"@rollup/plugin-node-resolve": "13.1.3",
|
|
52
|
+
"@types/eslint": "8.4.1",
|
|
49
53
|
"@types/fs-extra": "9.0.13",
|
|
50
54
|
"@types/micromatch": "4.0.2",
|
|
51
|
-
"@types/semantic-release": "17.2.
|
|
52
|
-
"@types/yargs": "17.0.
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
54
|
-
"@typescript-eslint/parser": "5.
|
|
55
|
-
"@willbooster/eslint-config-ts": "
|
|
56
|
-
"@willbooster/prettier-config": "
|
|
57
|
-
"@willbooster/renovate-config": "
|
|
55
|
+
"@types/semantic-release": "17.2.3",
|
|
56
|
+
"@types/yargs": "17.0.8",
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "5.12.0",
|
|
58
|
+
"@typescript-eslint/parser": "5.12.0",
|
|
59
|
+
"@willbooster/eslint-config-ts": "9.0.0",
|
|
60
|
+
"@willbooster/prettier-config": "9.0.0",
|
|
61
|
+
"@willbooster/renovate-config": "9.2.0",
|
|
58
62
|
"babel-plugin-transform-remove-console": "6.9.4",
|
|
59
63
|
"babel-plugin-unassert": "3.2.0",
|
|
60
64
|
"babel-preset-power-assert": "3.0.0",
|
|
61
|
-
"conventional-changelog-conventionalcommits": "4.6.
|
|
62
|
-
"core-js": "3.
|
|
63
|
-
"eslint": "8.
|
|
65
|
+
"conventional-changelog-conventionalcommits": "4.6.3",
|
|
66
|
+
"core-js": "3.21.0",
|
|
67
|
+
"eslint": "8.9.0",
|
|
64
68
|
"eslint-config-prettier": "8.3.0",
|
|
65
|
-
"eslint-import-resolver-
|
|
66
|
-
"eslint-plugin-import": "2.25.
|
|
69
|
+
"eslint-import-resolver-typescript": "2.5.0",
|
|
70
|
+
"eslint-plugin-import": "2.25.4",
|
|
71
|
+
"eslint-plugin-sort-class-members": "1.14.1",
|
|
72
|
+
"eslint-plugin-sort-destructure-keys": "1.4.0",
|
|
67
73
|
"husky": "7.0.4",
|
|
68
|
-
"lint-staged": "
|
|
74
|
+
"lint-staged": "12.3.4",
|
|
69
75
|
"micromatch": "4.0.4",
|
|
70
76
|
"pinst": "2.1.6",
|
|
71
77
|
"power-assert": "1.6.1",
|
|
72
|
-
"prettier": "2.
|
|
73
|
-
"rollup": "2.
|
|
74
|
-
"rollup-plugin-node-externals": "
|
|
75
|
-
"semantic-release": "
|
|
76
|
-
"sort-package-json": "1.
|
|
77
|
-
"typescript": "4.
|
|
78
|
+
"prettier": "2.5.1",
|
|
79
|
+
"rollup": "2.67.2",
|
|
80
|
+
"rollup-plugin-node-externals": "4.0.0",
|
|
81
|
+
"semantic-release": "19.0.2",
|
|
82
|
+
"sort-package-json": "1.54.0",
|
|
83
|
+
"typescript": "4.5.5"
|
|
78
84
|
},
|
|
79
85
|
"engines": {
|
|
80
86
|
"node": ">=14"
|
|
81
87
|
},
|
|
82
|
-
"packageManager": "yarn@3.0.
|
|
83
|
-
"version": "3.1.
|
|
88
|
+
"packageManager": "yarn@3.2.0-rc.15",
|
|
89
|
+
"version": "3.1.4"
|
|
84
90
|
}
|