include ./Version
LIBRARY_NAME = libOGoContentStore
-TOOL_NAME = ocs_ls
+TOOL_NAME = ocs_ls ocs_mkdir
libOGoContentStore_HEADER_FILES += \
NSURL+OCS.h \
OCSFolderType.m \
OCSChannelManager.m \
-ocs_ls_OBJC_FILES += \
- ocs_ls.m
+ocs_ls_OBJC_FILES += ocs_ls.m
+ocs_mkdir_OBJC_FILES += ocs_mkdir.m
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/library.make
model and manage the tables required for a folder.
*/
-@class NSString, NSArray, NSURL, NSDictionary;
+@class NSString, NSArray, NSURL, NSDictionary, NSException;
@class OCSChannelManager, OCSFolder, OCSFolderType;
@interface OCSFolderManager : NSObject
- (OCSFolder *)folderAtPath:(NSString *)_path;
+- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path;
+
/* folder types */
- (OCSFolderType *)folderTypeWithName:(NSString *)_name;
return [self folderForRecord:record];
}
+- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path{
+ // TODO: implement folder create
+ return [NSException exceptionWithName:@"NotYetImplemented"
+ reason:@"no money, no time, ..."
+ userInfo:nil];
+}
+
/* folder types */
- (OCSFolderType *)folderTypeWithName:(NSString *)_name {
--- /dev/null
+// $Id$
+
+#import <Foundation/NSObject.h>
+
+@class NSUserDefaults;
+@class OCSFolderManager;
+
+@interface Tool : NSObject
+{
+ NSUserDefaults *ud;
+ OCSFolderManager *folderManager;
+}
+
++ (int)run;
+
+@end
+
+#include <OGoContentStore/OCSFolder.h>
+#include <OGoContentStore/OCSFolderManager.h>
+#include "common.h"
+
+@implementation Tool
+
+- (id)init {
+ if ((self = [super init])) {
+ self->ud = [[NSUserDefaults standardUserDefaults] retain];
+ self->folderManager = [[OCSFolderManager defaultFolderManager] retain];
+ }
+ return self;
+}
+- (void)dealloc {
+ [self->ud release];
+ [self->folderManager release];
+ [super dealloc];
+}
+
+/* operation */
+
+- (int)runOnPath:(NSString *)_path type:(NSString *)_type {
+ NSException *error;
+
+ [self logWithFormat:@"mkdir %@ at path: '%@'", _type, _path];
+
+ if ([self->folderManager folderExistsAtPath:_path]) {
+ [self logWithFormat:@"folder already exist at path: '%@'", _path];
+ return 1;
+ }
+
+ if ((error = [self->folderManager createFolderOfType:_type atPath:_path])) {
+ [self logWithFormat:@"creation of folder %@ at %@ failed: %@",
+ _type, _path, error];
+ return 1;
+ }
+
+ if ([self->folderManager folderExistsAtPath:_path])
+ [self logWithFormat:@"CREATED."];
+ else
+ [self logWithFormat:@"cannot find fresh folder?"];
+
+ return 0;
+}
+
+- (int)run {
+ NSEnumerator *e;
+ NSString *type;
+ NSString *path;
+
+ [self logWithFormat:@"manager: %@", self->folderManager];
+
+ if (![self->folderManager canConnect]) {
+ [self logWithFormat:@"cannot connect folder-info database!"];
+ return 1;
+ }
+
+ e = [[[NSProcessInfo processInfo] argumentsWithoutDefaults]
+ objectEnumerator];
+ [e nextObject]; // skip tool name
+
+ type = [[[e nextObject] copy] autorelease];
+
+ while ((path = [e nextObject]))
+ [self runOnPath:path type:type];
+
+ return 0;
+}
++ (int)run {
+ return [(Tool *)[[[self alloc] init] autorelease] run];
+}
+
+@end /* Tool */
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ int rc;
+
+ pool = [[NSAutoreleasePool alloc] init];
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ rc = [Tool run];
+
+ [pool release];
+ return rc;
+}