12be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka/*
22be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project
32be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka *
42be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not
52be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of
62be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * the License at
72be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka *
82be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0
92be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka *
102be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
112be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
122be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
132be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * License for the specific language governing permissions and limitations under
142be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka * the License.
152be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka */
162be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
17ca6acfdd6b3400ad6e29d45c29b0ec40ea92a968Tadashi G. Takaokapackage com.android.inputmethod.keyboard.tools;
182be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
192be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaokaimport java.util.Arrays;
202be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaokaimport java.util.LinkedList;
212be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaokaimport java.util.NoSuchElementException;
222be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaokaimport java.util.jar.JarFile;
232be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
24ca6acfdd6b3400ad6e29d45c29b0ec40ea92a968Tadashi G. Takaokapublic class MakeKeyboardText {
252be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka    static class Options {
262be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        private static final String OPTION_JAVA = "-java";
272be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
282be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        public final String mJava;
292be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
302be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        public static void usage(String message) {
312be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            if (message != null) {
322be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                System.err.println(message);
332be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            }
34ca6acfdd6b3400ad6e29d45c29b0ec40ea92a968Tadashi G. Takaoka            System.err.println("usage: make-keyboard-text " + OPTION_JAVA + " <java_output_dir>");
352be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            System.exit(1);
362be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        }
372be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
382be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        public Options(final String[] argsArray) {
39a91561aa58db1c43092c1caecc051a11fa5391c7Tadashi G. Takaoka            final LinkedList<String> args = new LinkedList<>(Arrays.asList(argsArray));
402be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            String arg = null;
412be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            String java = null;
422be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            try {
432be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                while (!args.isEmpty()) {
442be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                    arg = args.removeFirst();
452be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                    if (arg.equals(OPTION_JAVA)) {
462be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                        java = args.removeFirst();
472be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                    } else {
482be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                        usage("Unknown option: " + arg);
492be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                    }
502be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                }
512be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            } catch (NoSuchElementException e) {
522be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka                usage("Option " + arg + " needs argument");
532be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            }
542be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
552be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka            mJava = java;
562be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        }
572be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka    }
582be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka
592be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka    public static void main(final String[] args) {
602be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        final Options options = new Options(args);
61ca6acfdd6b3400ad6e29d45c29b0ec40ea92a968Tadashi G. Takaoka        final JarFile jar = JarUtils.getJarFile(MakeKeyboardText.class);
622be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        final MoreKeysResources resources = new MoreKeysResources(jar);
632be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka        resources.writeToJava(options.mJava);
642be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka    }
652be51f4fd0c5cd70c7a2757558ffe45e703700cfTadashi G. Takaoka}
66