• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License
15  */
16 
17 package com.android.dialer.commandline;
18 
19 import com.android.dialer.commandline.impl.Blocking;
20 import com.android.dialer.commandline.impl.Echo;
21 import com.android.dialer.commandline.impl.Help;
22 import com.android.dialer.commandline.impl.Version;
23 import com.android.dialer.function.Supplier;
24 import com.google.common.collect.ImmutableMap;
25 import dagger.Module;
26 import dagger.Provides;
27 import javax.inject.Inject;
28 
29 /** Provides {@link Command} */
30 @Module
31 public abstract class CommandLineModule {
32 
33   @Provides
provideCommandSupplier( AospCommandInjector aospCommandInjector)34   static Supplier<ImmutableMap<String, Command>> provideCommandSupplier(
35       AospCommandInjector aospCommandInjector) {
36 
37     return aospCommandInjector.inject(CommandSupplier.builder()).build();
38   }
39 
40   /** Injects standard commands to the builder */
41   public static class AospCommandInjector {
42     private final Help help;
43     private final Version version;
44     private final Echo echo;
45     private final Blocking blocking;
46 
47     @Inject
AospCommandInjector(Help help, Version version, Echo echo, Blocking blocking)48     AospCommandInjector(Help help, Version version, Echo echo, Blocking blocking) {
49       this.help = help;
50       this.version = version;
51       this.echo = echo;
52       this.blocking = blocking;
53     }
54 
inject(CommandSupplier.Builder builder)55     public CommandSupplier.Builder inject(CommandSupplier.Builder builder) {
56       builder.addCommand("help", help);
57       builder.addCommand("version", version);
58       builder.addCommand("echo", echo);
59       builder.addCommand("blocking", blocking);
60       return builder;
61     }
62   }
63 }
64