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