magnoline 0.1 → 0.2

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 (4) hide show
  1. data/README +36 -9
  2. data/lib/magnolia_i_e.rb +43 -8
  3. data/lib/main_client.rb +4 -4
  4. metadata +2 -2
data/README CHANGED
@@ -1,18 +1,45 @@
1
- Magnoline is a simple command line tool to import/export
1
+ Magnoline is a simple command line tool to import/export content from
2
+ the Magnolia (http://www.magnolia.info) CMS.
2
3
  The port done in ruby is good bit faster than the java implementation.
4
+ Also, you don't need to tweak the memory settings to just make it run.
3
5
 
4
- main_client.rb is the entry class, and you may want to type something like:
5
- ruby main_client.rb --help
6
+ == INSTALL
7
+ To install it, the only thing you should have to do is:
8
+
9
+ gem install magnoline
6
10
 
7
- to see the different options.
11
+ Magnoline requires:
12
+ - cooloptions as a dependencies, but that should be pulled up by the gem install.
13
+ Magnoline includes:
14
+ - http-access2: because it was not available as a separate gem.
15
+ I will remove it from current code as soon as it is.
8
16
 
9
- This tool requires:
10
- - cooloptions as a dependencies, but that should be pulled up by the gem install
17
+ == CLIENT OPTIONS
18
+ main_client.rb is the entry class, To see the different options you can simply type:
19
+
20
+ ruby main_client.rb --help
21
+
22
+ == EXAMPLES
11
23
 
12
- This tool includes:
13
- - http-access2: because it was not available as a separate gem. I will remove it from here
14
- as soon as it is.
24
+ ** export default from junkie.com server
25
+
26
+ ruby main_client.rb -a export -s http://junkie.com/magnoliaAuthor
27
+
28
+ ** export the superuser section from the users repository
29
+
30
+ ruby main_client.rb -a export -w users -r /superuser
31
+
32
+ ** pull the content of the website in a file named website.xml in the current folder.
33
+ (Note that this is not recommended, as all the jackrabbit secret and heavy info will be in the
34
+ exported file)
35
+
36
+ ruby main_client.rb -a export -w website -r /
15
37
 
38
+ ** batch file, processing:
39
+
40
+ ruby main_client.rb -a export --batch-file ./batch_export_example_file.txt
41
+
42
+ ==
16
43
  That's it. Enjoy !
17
44
 
18
45
  Niko
@@ -60,20 +60,44 @@ module MagnoliaClient
60
60
  opt.on 'behavior STRING', 'import behavior. One of new/remove/replace or 0/1/2', "0"
61
61
  opt.on 'verbose', 'give some more processing info on the command line', false
62
62
  opt.on 'console', 'output to standard output, bypass the out option', false
63
+ opt.on 'batch-file STRING','start a batch execution of actions from a file. Path to that file', nil
63
64
 
64
65
  opt.after do |r|
65
66
  r.out = File.expand_path(r.out)
66
67
  opt.error("Invalid action:"+r.action) unless (r.action == CMD_IMPORT || r.action == CMD_EXPORT)
67
68
  host = URI.parse(r.server_url).host
68
- opt.error("host is not reachable:" + host) unless Ping.pingecho(host,10)
69
+ #opt.error("host is not reachable:" + host) unless Ping.pingecho(host,10)
69
70
  r.behavior = parse_behavior(r.behavior) if r.action == CMD_IMPORT
70
-
71
71
  end
72
+
72
73
  end
73
74
 
75
+ if !options.batch_file
76
+ Array.new << get_action(options)
77
+ else
78
+ commands = Array.new
79
+ open(File.expand_path(options.batch_file)) do |file|
80
+ file.each do |l|
81
+ if not l[0] == '#'
82
+ opts = l.split(/\s+/)
83
+
84
+ options.workspace = opts[0]
85
+ options.repository_path = opts[1]
86
+ options.import_file = opts[2] if options.action == CMD_IMPORT
87
+
88
+ commands << get_action(options)
89
+ else
90
+ # skip the line. This is a comment
91
+ end
92
+ end
93
+ end
94
+ return commands
95
+ end
96
+ end
97
+
98
+ def get_action(options)
74
99
  return Export.new(options) if options.action == CMD_EXPORT
75
100
  return Import.new(options) if options.action == CMD_IMPORT
76
-
77
101
  end
78
102
 
79
103
  #
@@ -81,7 +105,7 @@ module MagnoliaClient
81
105
  # Do this while parsing to get proper error output when needed
82
106
  def parse_behavior(value)
83
107
  IMPORT_BEHAVIORS.each_with_index { |behavior, index|
84
- return index if value.to_i == index
108
+ return index if value.to_i == index
85
109
  return index if value.to_s == behavior.to_s
86
110
  }
87
111
  raise "Invalid behavior:#{value}"
@@ -107,12 +131,23 @@ module MagnoliaClient
107
131
  @workspace = options.workspace
108
132
  @user = options.user
109
133
  @password = options.password
110
- @out = File.expand_path(options.out+'/'+@workspace+@repository_path.gsub('/','.')+'.xml')
111
-
112
134
  @verbose = options.verbose
113
135
  @options = options
136
+ @out = outfile_path
114
137
  end
115
138
 
139
+ #
140
+ # compute the outfile path
141
+ # take special care when the repository_path is the root
142
+ def outfile_path
143
+ subr = if @repository_path == '/'
144
+ ''
145
+ else
146
+ @repository_path.gsub('/','.')
147
+ end
148
+ File.expand_path(@options.out+'/'+@workspace+subr+'.xml')
149
+ end
150
+
116
151
  #
117
152
  # prepare form data. Should return a hash with the needed parameters
118
153
  # this has to be implemented in the subclasses
@@ -126,8 +161,8 @@ module MagnoliaClient
126
161
  def pad_data(data)
127
162
  data.each { |key,value| begin
128
163
  if not key==:mgnlFileImport
129
- value = value + " ";
130
- data[key] = value.to_s
164
+ value = value + " ";
165
+ data[key] = value.to_s
131
166
  end
132
167
  rescue
133
168
  end
@@ -26,14 +26,14 @@ require 'magnolia_i_e'
26
26
  # Create command line parser
27
27
  ies = MagnoliaClient::ImportExportSetUp.new
28
28
 
29
- # parse the parameters
29
+ # parse the parameters, and get an array of commands
30
30
  t1 = Time.new
31
- ie = ies.parse(ARGV)
31
+ ie_array = ies.parse(ARGV)
32
32
  t2 = Time.new
33
33
  puts "parse took:"+ (t2 - t1).to_s
34
34
 
35
- # execute the command
35
+ # execute the command(s)
36
36
  t3 = Time.new
37
- ie.exec
37
+ ie_array.each {|ie| ie.exec}
38
38
  t4 = Time.new
39
39
  puts "exec took:"+ (t4 - t3).to_s
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: magnoline
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.1"
7
- date: 2007-01-24 00:00:00 +09:00
6
+ version: "0.2"
7
+ date: 2007-01-25 00:00:00 +09:00
8
8
  summary: A command line interface to the Magnolia CMS
9
9
  require_paths:
10
10
  - lib