Skip to main content

Create multiple sub commands with [Click]

Create multiple sub commands with [Click]

Description

I'd like to create the script that includes some options such as the awscli. We can create it easy to use the Click library. So, I write a sample code about creating sub-command with Click.

Premise

Python : >= 3.7 Click : >= 7.0

Code

import click def main(): cmd() @click.group() def cmd(): """First layer sub-command group """ pass @cmd.group() def sub_command_1(): """Second layer sub-command group """ pass @cmd.group() def sub_command_2(): """Second layer sub-command group """ pass @sub_command_1.command() def sub_command_1_1(): print("Hello, subcommand 1 under the 1st layer subcommand 1") @sub_command_1.command() def sub_command_1_2(): print("Hello, subcommand 2 under the 1st layer subcommand 1") @sub_command_1.command() def sub_command_1_3(): print("Hello, subcommand 3 under the 1st layer subcommand 1") @sub_command_2.command() def sub_command_2_1(): print("Hello, subcommand 1 under the 1st layer subcommand 2") @sub_command_2.command() def sub_command_2_2(): print("Hello, subcommand 2 under the 1st layer subcommand 2") if __name__ == "__main__": main()

Sample of executing result

  • Execute with no argument
(env) ~>python sample.py Usage: sample.py [OPTIONS] COMMAND [ARGS]... First layer sub-command group Options: --help Show this message and exit. Commands: sub-command-1 Second layer sub-command group sub-command-2 Second layer sub-command group
  • Execute with 1st argument
(env) ~>python sample.py sub-command-2 Usage: sample.py sub-command-2 [OPTIONS] COMMAND [ARGS]... Second layer sub-command group Options: --help Show this message and exit. Commands: sub-command-2-1 sub-command-2-2
  • Execute with until 2nd argument
(env) ~>python sample.py sub-command-2 sub-command-2-1 Hello, subcommand 1 under the 1st layer subcommand 2

Popular posts from this blog

How to mount the S3 bucket on to the Mac

How to mount the S3 bucket on to the Mac Description S3 is very powerful architecture. But it cannot use like normal directory. However, we have the solution to mount S3 on Mac PC. It's to use Storage Gateway . Archtecture Image ー ー ー Premise Storage Gateway: Requirements for Amazon EC2 instance types https://docs.aws.amazon.com/storagegateway/latest/userguide/Requirements.html#requirements-hardware-ec2 [Recommended for file gateway types] ・General-purpose instance family – m4 or m5 instance type. ・Compute-optimized instance family – c4 or c5 instance types. Choose the 2xlarge instance size or higher to meet the required RAM requirements. ・Memory-optimized instance family – r3 instance types. ・Storage-optimized instance family – i3 instance types. [Recommended for cached volumes and tape gateway type...

How to calculate the infinite product by SQL

How to calculate the infinite product by SQL Description I needed to calculate the infinite product in the creating ETL script. So I thought the solution to calculate it in the SQL. The following way is the solution I thought. Premise Use the standard SQL Code WITH sample_table AS ( SELECT 2 AS n1, 4 AS n2 UNION ALL SELECT 4 , 8 UNION ALL SELECT 10 , 20 UNION ALL SELECT 10 , 20 ) SELECT * FROM sample_table UNION ALL SELECT CAST ( EXP ( SUM ( LOG (n1))) AS INT64) AS inf_product1, CAST ( EXP ( SUM ( LOG (n2))) AS INT64) AS inf_product2 FROM sample_table The infinite product (∏) is able to convert to the total addition formula. ∏n1 ≒ e Σlog e n1 ∏n2 ≒ e Σlog e n2 Finally Actually, this calculated value is an approximation. So if you want an accurate number, this solution cannot use.

How to get the Phabricator's ticket No. by using the commit hash of `git`

How to get the Phabricator's ticket No. by using the commit hash of git Description Sometimes, we would like to check that the release branch has only completed task's commit. For example, we must prove to be not including unapproved commit in the release branch at IT audit. So, I write the operation to get the Phabricator's ticket No. Operations Get the commit-hash First of all, we get the difference of commits between the current branch and previous branch with git log command. git log --pretty=oneline $OLD_BRANCH..$NEW_BRANCH | awk '{print $1}' $OLD_BRANCH: Previous release branch $NEW_BRANCH: Current release branch Get the repository-ID Secondly, we need to get the repository's PHID to get the commit PHID. You can get it to use phid.lookup command. echo '{"names": ["$REPOSITORY_NAME"]}' | arc call-conduit --c...