Skip to main content

Python to shell script transcompiler

Project description

wip pypi pypi-version travis-ci Code Climate Test Coverage Open Source Love

sherlock

Sherlock은 Python으로 작성한 코드를 shell script언어로 바꿔주는 transpiler입니다.

Motivation

map to buried treasure

< Shell script를 작성하는 명탐정의 모습 >

Shell script는 많은 Unix-like 운영체제에서 보편적으로 사용되는 script language입니다. 이 언어는 Unix-like 운영체제에서 동작이 보장되어 많은 사람들이 Install script나 configure 스크립트에 사용됩니다. 하지만 개발된지 오래되어 다양한 문제가 있고 유지보수에 문제가 있습니다.

Install

$ pip install sherlock.py

Sherlock은 python버전 2.6 이상, 3.3 이상에서 동작을 보장하고 Linux 계열 운영체제와 macOS에서 동작을 보장합니다. 그 이외의 운영체제 혹은 버전에 대해서 문제가 있으면 issue를 남겨주세요.

Usage

usage: sherlock [-h] [-o output] [-c] [-v] [--version] [file | command]

Python to bash trans-compiler.

positional arguments:
  [file | command]  program read from script file

optional arguments:
  -h, --help        show this help message and exit
  -o output         output file path
  -c, --command     program passed in as string
  -v, --verbose     program run in verbose mode
  --version         show program's version number and exit

다음은 기본적인 사용 예제입니다.

$ sherlock target.py

위 커맨드를 사용하면 target.py를 shell script로 컴파일하고 이를 sh 명령어를 이용하여 실행합니다. 실행 결과를 통해서 내가 작성하고 있는 코드가 shell script로 잘 컴파일 되는지 확인하고 디버깅할 수 있습니다.

$ sherlock target.py -o output.sh

-o플래그를 통해 sherlock의 결과물을 파일로 저장할 수 있습니다. 이 경우 유저가 작성한 스크립트가 실행되지 않습니다.

$ sherlock -c "echo 'Hello World.'"

-c플래그를 사용하면 입력한 커맨드가 즉시 bash로 컴파일 되고 이를 실행합니다.

License

  • MIT © 2017 Luavis

  • Icon designed by cyoh Sherlock Holmes graphic by Matthew Davis from the Noun Project

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sherlock.py-0.1.1.tar.gz (8.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page