Skip to content

Commit 8f5c519

Browse files
committed
Feature: Added touch to JS interface. Fixed some consistency issues
1 parent a6fc4cc commit 8f5c519

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

src/commands/solid-list.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { isDirectory, checkHeadersForAclAndMetadata, getResourceInfoFromDataset, getResourceInfoFromHeaders, ResourceInfo } from '../utils/util';
22
import { getContainedResourceUrlAll, getSolidDataset } from '@inrupt/solid-client';
3-
import type { Logger } from '../logger';
4-
import BashlibError from '../utils/errors/BashlibError';
53
import { ICommandOptions, setOptionDefaults } from './solid-command';
64

75
export interface ICommandOptionsList extends ICommandOptions{

src/commands/solid-mkdir.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1+
import { ResourceInfo } from './../utils/util';
12
import { createContainerAt } from '@inrupt/solid-client';
23
import type { Logger } from '../logger';
34
import { ICommandOptions, setOptionDefaults } from './solid-command';
45

6+
const LDP = "http://www.w3.org/ns/ldp#";
7+
58
export interface ICommandOptionsMakeDirectory extends ICommandOptions { }
69

710
export default async function makeDirectory(url: string, options: ICommandOptionsMakeDirectory) {
811
let commandOptions = setOptionDefaults<ICommandOptionsMakeDirectory>(options);
9-
10-
let info = await createContainerAt(url, { fetch: commandOptions.fetch });
12+
let container = await createContainerAt(url, { fetch: commandOptions.fetch });
13+
let info: ResourceInfo = {
14+
url,
15+
isDir: true,
16+
modified: new Date(),
17+
types: [LDP+"Container", LDP+"BasicContainer", LDP+"Resource"],
18+
}
1119
if (commandOptions.verbose) commandOptions.logger.log(`Container successfully created at ${url}`);
1220
return info
1321
}

src/commands/solid-perms.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ export interface IPermissionOperation {
9999
}
100100

101101
export async function changePermissions(resourceUrl: string, operations: IPermissionOperation[], options: ICommandOptionsPermissions) {
102-
const resourceInfo = await getResourceInfoWithAcl(resourceUrl, { fetch: options.fetch })
102+
let commandOptions = setOptionDefaults<ICommandOptionsPermissions>(options);
103+
104+
const resourceInfo = await getResourceInfoWithAcl(resourceUrl, { fetch: commandOptions.fetch })
103105
let aclDataset : AclDataset | null;
104106
if (await hasResourceAcl(resourceInfo)) {
105107
aclDataset = await getResourceAcl(resourceInfo);
@@ -148,21 +150,23 @@ export async function changePermissions(resourceUrl: string, operations: IPermis
148150
if (operation.default) aclDataset = await setPublicDefaultAccess(aclDataset, access)
149151
aclDataset = await setPublicResourceAccess(aclDataset, access)
150152
} else {
151-
if (options.verbose) writeErrorString("Incorrect operation type", 'Please provide an operation type of agent, group or public.', options)
153+
if (commandOptions.verbose) writeErrorString("Incorrect operation type", 'Please provide an operation type of agent, group or public.', commandOptions)
152154
}
153155
}
154156
// Post updated acl to pod
155157
if (aclDataset && await hasAccessibleAcl(resourceInfo)) {
156158
await saveAclFor(resourceInfo as WithAccessibleAcl, aclDataset, {fetch: options.fetch})
157-
if (options.verbose) (options.logger || console).log(`Updated permissions for: ${resourceUrl}`)
159+
if (commandOptions.verbose) commandOptions.logger.log(`Updated permissions for: ${resourceUrl}`)
158160
}
159161
}
160162

161163
export async function deletePermissions(resourceUrl: string, options: ICommandOptionsPermissions) {
162-
let resourceInfo = await getResourceInfoWithAcl(resourceUrl, {fetch: options.fetch})
164+
let commandOptions = setOptionDefaults<ICommandOptionsPermissions>(options);
165+
166+
let resourceInfo = await getResourceInfoWithAcl(resourceUrl, {fetch: commandOptions.fetch})
163167
if (hasAccessibleAcl(resourceInfo)) {
164-
await deleteAclFor(resourceInfo, {fetch: options.fetch})
165-
if (options.verbose) (options.logger || console).log(`Deleted resource at ${resourceUrl}`)
168+
await deleteAclFor(resourceInfo, {fetch: commandOptions.fetch})
169+
if (commandOptions.verbose) commandOptions.logger.log(`Deleted resource at ${resourceUrl}`)
166170
} else {
167171
throw Error(`Resource at ${resourceUrl} does not have an accessible ACL resource`)
168172
}

src/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import remove, {ICommandOptionsRemove} from "./commands/solid-remove"
55
import move, {ICommandOptionsMove} from "./commands/solid-move"
66
import find, {ICommandOptionsFind} from "./commands/solid-find"
77
import query, {ICommandOptionsQuery} from './commands/solid-query'
8-
import makeDirectory, {ICommandOptionsMakeDirectory} from "./commands/solid-mkdir"
8+
import makeDirectory, { ICommandOptionsMakeDirectory } from "./commands/solid-mkdir"
9+
import touch, {ICommandOptionsTouch} from "./commands/solid-touch"
910
// import shell from "./commands/solid-shell"
1011
import createSolidPods, {IAccountData} from "./commands/solid-pod-create"
1112
import { listPermissions, changePermissions, deletePermissions, ICommandOptionsPermissions, IPermissionOperation, IPermissionListing, Record } from './commands/solid-perms'
@@ -14,7 +15,7 @@ import { generateCSSToken, IClientCredentialsTokenGenerationOptions, CSSToken }
1415
import { FileInfo, ResourceInfo } from './utils/util';
1516

1617
// General Solid functionality
17-
export { copy, list, remove, move, find, query, listPermissions, changePermissions, deletePermissions, makeDirectory }
18+
export { copy, list, remove, move, find, query, listPermissions, changePermissions, deletePermissions, makeDirectory, touch }
1819

1920
// Authentication Functionality
2021
export { authenticateWithTokenFromJavascript as authenticateToken, generateCSSToken }
@@ -26,7 +27,7 @@ export { createSolidPods }
2627
export type { Logger } from './logger';
2728

2829
// Type exports of commands options
29-
export type { ICommandOptionsCopy, ICommandOptionsList, ICommandOptionsRemove, ICommandOptionsMove, ICommandOptionsFind, ICommandOptionsQuery, ICommandOptionsPermissions, ICommandOptionsMakeDirectory }
30+
export type { ICommandOptionsCopy, ICommandOptionsList, ICommandOptionsRemove, ICommandOptionsMove, ICommandOptionsFind, ICommandOptionsQuery, ICommandOptionsPermissions, ICommandOptionsMakeDirectory, ICommandOptionsTouch }
3031

3132
// Type exports
3233
export type { IAccountData, IClientCredentialsTokenGenerationOptions, CSSToken, IPermissionOperation, FileInfo, ResourceInfo, SessionInfo, IPermissionListing, Record }

0 commit comments

Comments
 (0)