| 
									
										
										
										
											2016-01-01 20:51:48 +02:00
										 |  |  | # Copyright 2014-2016 Ivan Kravets <me@ikravets.com> | 
					
						
							| 
									
										
										
										
											2015-11-18 17:16:17 +02:00
										 |  |  | # | 
					
						
							|  |  |  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  | # you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | # You may obtain a copy of the License at | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #    http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and | 
					
						
							|  |  |  | # limitations under the License. | 
					
						
							| 
									
										
										
										
											2014-11-29 22:58:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | import click | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from platformio import app | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @click.group(short_help="Manage PlatformIO settings") | 
					
						
							|  |  |  | def cli(): | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @cli.command("get", short_help="Get existing setting/-s") | 
					
						
							|  |  |  | @click.argument("name", required=False) | 
					
						
							|  |  |  | def settings_get(name): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     list_tpl = "{name:<40} {value:<35} {description}" | 
					
						
							| 
									
										
										
										
											2015-04-20 17:20:27 +01:00
										 |  |  |     terminal_width, _ = click.get_terminal_size() | 
					
						
							| 
									
										
										
										
											2014-11-29 22:58:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     click.echo(list_tpl.format( | 
					
						
							|  |  |  |         name=click.style("Name", fg="cyan"), | 
					
						
							|  |  |  |         value=(click.style("Value", fg="green") + | 
					
						
							|  |  |  |                click.style(" [Default]", fg="yellow")), | 
					
						
							|  |  |  |         description="Description" | 
					
						
							|  |  |  |     )) | 
					
						
							| 
									
										
										
										
											2015-04-20 17:20:27 +01:00
										 |  |  |     click.echo("-" * terminal_width) | 
					
						
							| 
									
										
										
										
											2014-11-29 22:58:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     for _name, _data in sorted(app.DEFAULT_SETTINGS.items()): | 
					
						
							|  |  |  |         if name and name != _name: | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         _value = app.get_setting(_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         _value_str = str(_value) | 
					
						
							|  |  |  |         if isinstance(_value, bool): | 
					
						
							|  |  |  |             _value_str = "Yes" if _value else "No" | 
					
						
							|  |  |  |         _value_str = click.style(_value_str, fg="green") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if _value != _data['value']: | 
					
						
							|  |  |  |             _defvalue_str = str(_data['value']) | 
					
						
							|  |  |  |             if isinstance(_data['value'], bool): | 
					
						
							|  |  |  |                 _defvalue_str = "Yes" if _data['value'] else "No" | 
					
						
							|  |  |  |             _value_str += click.style(" [%s]" % _defvalue_str, fg="yellow") | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             _value_str += click.style(" ", fg="yellow") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         click.echo(list_tpl.format( | 
					
						
							|  |  |  |             name=click.style(_name, fg="cyan"), | 
					
						
							|  |  |  |             value=_value_str, | 
					
						
							|  |  |  |             description=_data['description'] | 
					
						
							|  |  |  |         )) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @cli.command("set", short_help="Set new value for the setting") | 
					
						
							|  |  |  | @click.argument("name") | 
					
						
							|  |  |  | @click.argument("value") | 
					
						
							|  |  |  | @click.pass_context | 
					
						
							|  |  |  | def settings_set(ctx, name, value): | 
					
						
							|  |  |  |     app.set_setting(name, value) | 
					
						
							|  |  |  |     click.secho("The new value for the setting has been set!", fg="green") | 
					
						
							|  |  |  |     ctx.invoke(settings_get, name=name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @cli.command("reset", short_help="Reset settings to default") | 
					
						
							|  |  |  | @click.pass_context | 
					
						
							|  |  |  | def settings_reset(ctx): | 
					
						
							|  |  |  |     app.reset_settings() | 
					
						
							|  |  |  |     click.secho("The settings have been reseted!", fg="green") | 
					
						
							|  |  |  |     ctx.invoke(settings_get) |