Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 6 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 4 additions & 22 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,14 @@
"require": "./dist/cjs/index.cjs"
},
"scripts": {
"data": "node dist/esm/cli.js ../../dev/data",
"data:abs": "node dist/esm/cli.js ~/Documents/work/ursi2024/metadata/dev/data ~/Documents/work/ursi2024/metadata/dev/options/metadata-options.json",
"data:rec": "node dist/esm/cli.js ../../dev/data-rec",
"options": "node dist/esm/cli.js ../../dev/data ../../dev/options/metadata-options.json",
"build": "npm run build:esm && npm run build:cjs",
"build:esm": "npm run build:no-prompt:esm && npm run build:data:esm && npm run build:validate:esm && npm run build:files:esm && npm run build:utils:esm && npm run build:cli:esm",
"build:no-prompt:esm": "esbuild src/cli.ts --bundle --format=esm --platform=node --outfile=dist/esm/cli.js",
"build:data:esm": "esbuild src/data.ts --packages=external --format=esm --platform=node --outfile=dist/esm/data.js",
"build:validate:esm": "esbuild src/validatefunctions.ts --packages=external --format=esm --platform=node --outfile=dist/esm/validatefunctions.js",
"build:files:esm": "esbuild src/handlefiles.ts --packages=external --format=esm --platform=node --outfile=dist/esm/handlefiles.js",
"build:utils:esm": "esbuild src/utils.ts --packages=external --format=esm --platform=node --outfile=dist/esm/utils.js",
"build:cli:esm": "esbuild src/index.ts --packages=external --format=esm --platform=node --outfile=dist/esm/index.js",
"cli": "node dist/esm/index.js",
"build:cjs": "npm run build:no-prompt:cjs && npm run build:data:cjs && npm run build:validate:cjs && npm run build:files:cjs && npm run build:utils:cjs && npm run build:cli:cjs",
"build:no-prompt:cjs": "esbuild src/cli.ts --bundle --format=cjs --platform=node --outfile=dist/cjs/cli.js",
"build:data:cjs": "esbuild src/data.ts --packages=external --format=cjs --platform=node --outfile=dist/cjs/data.js",
"build:validate:cjs": "esbuild src/validatefunctions.ts --packages=external --format=cjs --platform=node --outfile=dist/cjs/validatefunctions.js",
"build:files:cjs": "esbuild src/handlefiles.ts --packages=external --format=cjs --platform=node --outfile=dist/cjs/handlefiles.js",
"build:utils:cjs": "esbuild src/utils.ts --packages=external --format=cjs --platform=node --outfile=dist/cjs/utils.js",
"build:cli:cjs": "npm run build:utils:cjs && npm run build:files:cjs && npm run build:validate:cjs && npm run build:data:cjs && esbuild src/index.ts --packages=external --format=cjs --platform=node --outfile=dist/cjs/index.cjs"
"build:esm": "esbuild src/index.ts --bundle --format=esm --platform=node --outfile=dist/esm/index.js",
"build:cjs": "esbuild src/index.ts --bundle --format=cjs --platform=node --outfile=dist/cjs/index.cjs",
"cli": "node dist/esm/index.js"
},
"dependencies": {
"@inquirer/prompts": "^5.1.2",
"fuzzy": "^0.1.3",
"inquirer": "^10.0.1",
"@jspsych/metadata": "^0.0.3",
"@jspsych/metadata": "*",
"yargs": "^17.7.2"
}
}
33 changes: 0 additions & 33 deletions packages/cli/src/cli.ts

This file was deleted.

33 changes: 10 additions & 23 deletions packages/cli/src/data.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import fs from "fs";
import path from "path";
import { expandHomeDir } from "./utils.js";
import JsPsychMetadata from "@jspsych/metadata";
import { expandHomeDir } from "./utils";

// creating path -> handles the absolute vs non-absolute paths
export const generatePath = (inputPath) => {
export const generatePath = (inputPath: string): string => {
if (path.isAbsolute(inputPath)) {
return inputPath;
} else {
return path.resolve(process.cwd(), inputPath);
}
};

const copyFileWithStructure = async (sourceFilePath, verbose, targetDirectoryPath) => {
const copyFileWithStructure = async (sourceFilePath: string, verbose: boolean, targetDirectoryPath: string) => {
try {
sourceFilePath = expandHomeDir(sourceFilePath);
targetDirectoryPath = expandHomeDir(targetDirectoryPath);
Expand All @@ -32,7 +33,7 @@ const copyFileWithStructure = async (sourceFilePath, verbose, targetDirectoryPat
};

// processing single file, need to refactor this into a seperate call
const processFile = async (metadata, directoryPath, file, verbose, targetDirectoryPath?) => {
const processFile = async (metadata: JsPsychMetadata, directoryPath: string, file: string, verbose: boolean, targetDirectoryPath?: string) => {
const filePath = path.join(directoryPath, file);
if (verbose) console.log("Reading file:", filePath);

Expand Down Expand Up @@ -63,12 +64,12 @@ const processFile = async (metadata, directoryPath, file, verbose, targetDirecto
}

// Processing directory recursively up to one level
export const processDirectory = async (metadata, directoryPath, verbose=false, targetDirectoryPath?) => {
export const processDirectory = async (metadata: JsPsychMetadata, directoryPath: string, verbose: boolean = false, targetDirectoryPath?: string) => {
directoryPath = expandHomeDir(directoryPath);
let total = 0;
let failed = 0;

const processDirectoryRecursive = async (currentPath, level) => {
const processDirectoryRecursive = async (currentPath: string, level: number) => {
if (level > 1){
console.warn("Can only read subdirectories one level deep:", directoryPath);
return;
Expand Down Expand Up @@ -110,7 +111,7 @@ export const processDirectory = async (metadata, directoryPath, verbose=false, t
};

// Processing metadata options json
export const processOptions = async (metadata, filePath, verbose=false) => {
export const processOptions = async (metadata: JsPsychMetadata, filePath: string, verbose: boolean = false) => {
try {
const metadata_options_path = expandHomeDir(generatePath(filePath));
const data = fs.readFileSync(metadata_options_path, "utf8"); // synchronous read
Expand All @@ -127,21 +128,7 @@ export const processOptions = async (metadata, filePath, verbose=false) => {
}
}

// Saving data
export function saveTextToFile(textstr, filename, directory = '.') {
const filePath = path.join(directory, filename);

fs.writeFile(filePath, textstr, 'utf8', (err) => {
if (err) {
console.error(`Error writing to file ${filePath}:`, err);
} else {
console.log(`File ${filePath} has been saved.`);
}
});
}

// in case path goes to file already
export function saveTextToPath(textstr, filePath = './file.txt') {
export function saveTextToPath(textstr: string, filePath: string = './file.txt') {
filePath = expandHomeDir(filePath);

fs.writeFile(filePath, textstr, 'utf8', (err) => {
Expand All @@ -154,7 +141,7 @@ export function saveTextToPath(textstr, filePath = './file.txt') {
}

// function for loading metadata
export const loadMetadata = async (metadata, filePath) => {
export const loadMetadata = async (metadata: JsPsychMetadata, filePath: string) => {
filePath = expandHomeDir(filePath);
const fileName = path.basename(filePath).toLowerCase(); // Extract the file name from the filePath

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/handlefiles.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from 'fs';
import path from 'path';
import { expandHomeDir } from './utils.js';
import { expandHomeDir } from './utils';


// creates directory structure for the Psych-Ds format allowing future functions to write data to here
Expand Down
12 changes: 6 additions & 6 deletions packages/cli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
import { input, select } from '@inquirer/prompts';
import JsPsychMetadata from "@jspsych/metadata";
import { processDirectory, processOptions, saveTextToPath, loadMetadata } from "./data.js";
import { validateDirectory, validateJson } from './validatefunctions.js';
import { createDirectoryWithStructure } from './handlefiles.js';
import { processDirectory, processOptions, saveTextToPath, loadMetadata } from "./data";
import { validateDirectory, validateJson } from './validatefunctions';
import { createDirectoryWithStructure } from './handlefiles';

// Define a type for the parsed arguments
interface Argv {
Expand Down Expand Up @@ -43,7 +43,7 @@ const argv = yargs(hideBin(process.argv))
.help()
.argv as Argv;

async function metadataOptionsPrompt(metadata, verbose){
async function metadataOptionsPrompt(metadata: JsPsychMetadata, verbose: boolean){
const answer = await select({
message: 'Would you like to customize the metadata by providing a .json specifying changes?',
choices: [
Expand Down Expand Up @@ -78,7 +78,7 @@ async function metadataOptionsPrompt(metadata, verbose){

}

const promptProjectStructure = async (metadata) => {
const promptProjectStructure = async (metadata: JsPsychMetadata) => {
const answer = await select({
message: 'Would you like to generate a new project directory or update an existing project directory?',
choices: [
Expand Down Expand Up @@ -144,7 +144,7 @@ const promptName = async () => {
return project_name;
}

const promptData = async (metadata, verbose, targetDirectoryPath) => {
const promptData = async (metadata: JsPsychMetadata, verbose: boolean, targetDirectoryPath: string) => {
// can prompt an additional reading data -> keeps reading data until it is done and then writes it to the data_directory of the folder
var data_path;

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/validatefunctions.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from "fs";
import path from "path";
import { expandHomeDir } from "./utils.js";
import { expandHomeDir } from "./utils";

// Validating if input is a directory
export const validateDirectory = async (filePath: string): Promise<boolean> => {
Expand Down
Loading