@neurodevs/ndx-cli 0.0.1

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.
Files changed (47) hide show
  1. package/.nvmrc +1 -0
  2. package/.vscode/launch.json +58 -0
  3. package/.vscode/settings.json +67 -0
  4. package/.vscode/tasks.json +112 -0
  5. package/LICENSE +21 -0
  6. package/README.md +2 -0
  7. package/build/.spruce/settings.json +11 -0
  8. package/build/__tests__/modules/CliCommandRunner.test.d.ts +18 -0
  9. package/build/__tests__/modules/CliCommandRunner.test.js +132 -0
  10. package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -0
  11. package/build/__tests__/modules/NeurodevsAutocloner.test.d.ts +14 -0
  12. package/build/__tests__/modules/NeurodevsAutocloner.test.js +122 -0
  13. package/build/__tests__/modules/NeurodevsAutocloner.test.js.map +1 -0
  14. package/build/cli.d.ts +2 -0
  15. package/build/cli.js +17 -0
  16. package/build/cli.js.map +1 -0
  17. package/build/index.d.ts +0 -0
  18. package/build/index.js +3 -0
  19. package/build/index.js.map +1 -0
  20. package/build/modules/CliCommandRunner.d.ts +23 -0
  21. package/build/modules/CliCommandRunner.js +64 -0
  22. package/build/modules/CliCommandRunner.js.map +1 -0
  23. package/build/modules/NeurodevsAutocloner.d.ts +18 -0
  24. package/build/modules/NeurodevsAutocloner.js +60 -0
  25. package/build/modules/NeurodevsAutocloner.js.map +1 -0
  26. package/build/scripts/runNeurodevsAutocloner.d.ts +1 -0
  27. package/build/scripts/runNeurodevsAutocloner.js +15 -0
  28. package/build/scripts/runNeurodevsAutocloner.js.map +1 -0
  29. package/build/testDoubles/PresetUrlsAutocloner/FakeNeurodevsAutocloner.d.ts +7 -0
  30. package/build/testDoubles/PresetUrlsAutocloner/FakeNeurodevsAutocloner.js +15 -0
  31. package/build/testDoubles/PresetUrlsAutocloner/FakeNeurodevsAutocloner.js.map +1 -0
  32. package/build/testDoubles/prompts/fakePrompts.d.ts +5 -0
  33. package/build/testDoubles/prompts/fakePrompts.js +19 -0
  34. package/build/testDoubles/prompts/fakePrompts.js.map +1 -0
  35. package/eslint.config.mjs +3 -0
  36. package/package.json +71 -0
  37. package/src/.spruce/settings.json +11 -0
  38. package/src/__tests__/modules/CliCommandRunner.test.ts +121 -0
  39. package/src/__tests__/modules/NeurodevsAutocloner.test.ts +94 -0
  40. package/src/cli.ts +15 -0
  41. package/src/index.ts +1 -0
  42. package/src/modules/CliCommandRunner.ts +86 -0
  43. package/src/modules/NeurodevsAutocloner.ts +77 -0
  44. package/src/scripts/runNeurodevsAutocloner.ts +11 -0
  45. package/src/testDoubles/PresetUrlsAutocloner/FakeNeurodevsAutocloner.ts +15 -0
  46. package/src/testDoubles/prompts/fakePrompts.ts +16 -0
  47. package/tsconfig.json +39 -0
@@ -0,0 +1,77 @@
1
+ import { Autocloner, GitAutocloner } from '@neurodevs/meta-node'
2
+
3
+ export default class NeurodevsAutocloner implements PresetUrlsAutocloner {
4
+ public static Class?: PresetUrlsAutoclonerConstructor
5
+
6
+ private autocloner: Autocloner
7
+ private dirPath!: string
8
+
9
+ protected constructor(autocloner: Autocloner) {
10
+ this.autocloner = autocloner
11
+ }
12
+
13
+ public static Create() {
14
+ const autocloner = this.GitAutocloner()
15
+ return new (this.Class ?? this)(autocloner)
16
+ }
17
+
18
+ public async run(dirPath: string) {
19
+ this.dirPath = dirPath
20
+ await this.runGitCloner()
21
+ }
22
+
23
+ private async runGitCloner() {
24
+ await this.autocloner.run({
25
+ urls: this.repoUrls,
26
+ dirPath: this.dirPath,
27
+ })
28
+ }
29
+
30
+ private repoNames = [
31
+ 'fili.js',
32
+ 'labrecorder',
33
+ 'liblsl',
34
+ 'libxdf',
35
+ 'node-autocloner',
36
+ 'node-autopackage',
37
+ 'node-autoupgrader',
38
+ 'node-biometrics',
39
+ 'node-biosensors',
40
+ 'node-biosignal-experiments',
41
+ 'node-ble',
42
+ 'node-csv',
43
+ 'node-eeg',
44
+ 'node-file-checker',
45
+ 'node-file-loader',
46
+ 'node-html-loader',
47
+ 'node-knowledge-graphs',
48
+ 'node-lsl',
49
+ 'node-mangled-names',
50
+ 'node-neuropype',
51
+ 'node-ppg',
52
+ 'node-server-plots',
53
+ 'node-signal-processing',
54
+ 'node-task-queue',
55
+ 'node-test-counter',
56
+ 'node-xdf',
57
+ 'personomic',
58
+ ]
59
+
60
+ private repoUrls = this.repoNames.map(this.generateUrl)
61
+
62
+ private generateUrl(repoName: string) {
63
+ return `https://github.com/neurodevs/${repoName}.git`
64
+ }
65
+
66
+ private static GitAutocloner() {
67
+ return GitAutocloner.Create()
68
+ }
69
+ }
70
+
71
+ export interface PresetUrlsAutocloner {
72
+ run(dirPath: string): Promise<void>
73
+ }
74
+
75
+ export type PresetUrlsAutoclonerConstructor = new (
76
+ cloner: Autocloner
77
+ ) => PresetUrlsAutocloner
@@ -0,0 +1,11 @@
1
+ import NeurodevsAutocloner from '../modules/NeurodevsAutocloner'
2
+
3
+ async function main() {
4
+ const cloner = NeurodevsAutocloner.Create()
5
+ await cloner.run('/Users/ericthecurious/dev')
6
+ }
7
+
8
+ main().catch((err) => {
9
+ console.error(err)
10
+ process.exit(1)
11
+ })
@@ -0,0 +1,15 @@
1
+ import { PresetUrlsAutocloner } from '../../modules/NeurodevsAutocloner'
2
+
3
+ export default class FakeNeurodevsAutocloner implements PresetUrlsAutocloner {
4
+ public static numCallsToConstructor = 0
5
+ public static callsToRun: string[] = []
6
+
7
+ public async run(dirPath: string) {
8
+ FakeNeurodevsAutocloner.callsToRun.push(dirPath)
9
+ }
10
+
11
+ public static resetTestDouble() {
12
+ FakeNeurodevsAutocloner.numCallsToConstructor = 0
13
+ FakeNeurodevsAutocloner.callsToRun = []
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ export let callsToFakePrompts: Record<string, string>[][] = []
2
+
3
+ export function resetCallsToFakePrompts() {
4
+ callsToFakePrompts = []
5
+ }
6
+
7
+ export let fakeResponses: Record<string, string> = {}
8
+
9
+ export function setFakePromptsResponses(responses: Record<string, string>) {
10
+ fakeResponses = responses
11
+ }
12
+
13
+ export function fakePrompts(questions: Record<string, string>[]) {
14
+ callsToFakePrompts.push(questions)
15
+ return fakeResponses
16
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "compilerOptions": {
3
+ "skipLibCheck": true,
4
+ "module": "commonjs",
5
+ "esModuleInterop": true,
6
+ "target": "ES2020",
7
+ "lib": [
8
+ "DOM",
9
+ "ES2022"
10
+ ],
11
+ "declaration": true,
12
+ "noImplicitAny": true,
13
+ "allowJs": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "noImplicitReturns": true,
16
+ "strict": true,
17
+ "noUnusedLocals": true,
18
+ "resolveJsonModule": true,
19
+ "moduleResolution": "node",
20
+ "sourceMap": false,
21
+ "outDir": "build",
22
+ "baseUrl": "src",
23
+ "experimentalDecorators": true,
24
+ "paths": {
25
+ "#spruce/*": [
26
+ ".spruce/*"
27
+ ]
28
+ }
29
+ },
30
+ "include": [
31
+ "./src/*.ts",
32
+ "./src/**/*.ts",
33
+ "./src/.spruce/**/*"
34
+ ],
35
+ "exclude": [
36
+ "build",
37
+ "esm"
38
+ ]
39
+ }