View Javadoc
1   /***
2    * 
3    */
4   package com.fernsroth.squashfs;
5   
6   import java.io.File;
7   import java.io.FileInputStream;
8   import java.util.Arrays;
9   import java.util.LinkedList;
10  import java.util.Queue;
11  
12  import com.fernsroth.easyio.EasyIORandomAccessFile;
13  import com.fernsroth.squashfs.model.Manifest;
14  
15  /***
16   * 
17   * @author Joseph M. Ferner (Near Infinity Corporation)
18   */
19  public final class Squashfs {
20  
21      /***
22       * hide constructor. 
23       */
24      private Squashfs() {
25          // empty.
26      }
27  
28      /***
29       * main entry point.
30       * @param args the command line arguments.
31       * @throws Exception 
32       */
33      public static void main(String args[]) throws Exception {
34  
35          Queue<String> argQueue = new LinkedList<String>(Arrays.asList(args));
36  
37          if (argQueue.isEmpty()) {
38              printUsage("source is required");
39              return;
40          }
41          String source = argQueue.remove();
42          if (argQueue.isEmpty()) {
43              printUsage("destination is required");
44              return;
45          }
46          String dest = argQueue.remove();
47  
48          while (argQueue.size() > 1) {
49              {
50                  printUsage("invalid command line argument '" + argQueue.peek()
51                          + "'");
52                  return;
53              }
54          }
55  
56          File sourceFile = new File(source);
57          File sourceDir = sourceFile.getParentFile();
58          Manifest manifest = SquashFSManifest.load(new FileInputStream(
59                  sourceFile), sourceDir);
60          SquashFSWriter writer = new SquashFSWriter(manifest,
61                  new FileSystemDataProvider(sourceDir));
62          File destFile = new File(dest);
63          EasyIORandomAccessFile randDest = new EasyIORandomAccessFile(destFile,
64                  "rw");
65          writer.write(randDest);
66      }
67  
68      /***
69       * prints the usage.
70       * @param message the message to print in the help.
71       */
72      private static void printUsage(String message) {
73          if (message != null) {
74              System.err.println(message);
75          }
76          System.err.println("SYNTAX: " + Squashfs.class.getName()
77                  + " source destination [options]");
78      }
79  
80  }