Last active
August 29, 2015 14:25
-
-
Save footearth/fc160fba594b76612796 to your computer and use it in GitHub Desktop.
Use_python_install_node_env
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python | |
| import envoy | |
| import os | |
| import shutil | |
| _path_ = { | |
| 'home': os.environ['HOME'], | |
| 'script': os.path.split(os.path.realpath(__file__))[0] | |
| } | |
| isPrintCommander = True | |
| # isPrintCommander = False | |
| _source_ = { | |
| 'nvm': 'https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh', | |
| 'nvm-fish-wrapper': 'git://github.com/passcod/nvm-fish-wrapper.git' | |
| } | |
| node_version = '0.12.7' | |
| pkgs = [ | |
| 'pm2', | |
| 'http-server', | |
| 'coffee-script', | |
| 'bower', | |
| 'cson', | |
| 'harp', | |
| 'gitbook-cli', | |
| 'hexo-cli', | |
| 'npb-coffee', | |
| 'gulp', | |
| 'node-inspector' | |
| ] | |
| def print_log (r): | |
| print r.status_code | |
| print r.std_out | |
| print r.std_err | |
| def add_line (line_str, file_path): | |
| lines = [] | |
| indexs = [] | |
| with open(file_path, 'r+') as f: | |
| lines = f.readlines() | |
| for index, line in enumerate(lines): | |
| if line_str in line: | |
| indexs.append(index) | |
| if len(indexs) is 0: | |
| f.write(line_str) | |
| f.closed | |
| def run_commander (commander): | |
| if isPrintCommander == True: | |
| print commander | |
| r = envoy.run(commander) | |
| print_log(r) | |
| def nvm_install(): | |
| commander = "curl {nvm_install_file} | bash" | |
| commander = commander.format( | |
| nvm_install_file = _source_['nvm'] | |
| ) | |
| run_commander(commander) | |
| def nvm_config(): | |
| line_str = ". {path_home}/.nvm/nvm.sh" | |
| line_str = line_str.format( | |
| path_home = _path_['home'] | |
| ) | |
| zsh_rc = "{path_home}/.zshrc".format( | |
| path_home = _path_['home'] | |
| ) | |
| add_line(line_str, zsh_rc) | |
| def nvm_fish_wrapper_get(): | |
| nvm_wrapper_path = "{home}/.config/fish/nvm-wrapper" | |
| nvm_wrapper_path = nvm_wrapper_path.format(home = _path_['home']) | |
| # clean nvm_wrapper | |
| if os.path.exists(nvm_wrapper_path): | |
| shutil.rmtree(nvm_wrapper_path) | |
| commander = "git clone {source_nvm_fish_wrapper} {nvm_wrapper_path}" | |
| commander = commander.format( | |
| source_nvm_fish_wrapper = _source_['nvm-fish-wrapper'], | |
| nvm_wrapper_path = nvm_wrapper_path | |
| ) | |
| run_commander(commander) | |
| def nvm_support_fish(): | |
| line_str = ". {path_home}/.config/fish/nvm-wrapper/nvm.fish" | |
| line_str = line_str.format( | |
| path_home = _path_['home'] | |
| ) | |
| fish_config = "{path_home}/.config/fish/config.fish" | |
| fish_config = fish_config.format( | |
| path_home = _path_['home'] | |
| ) | |
| add_line(line_str, fish_config) | |
| def node_install(): | |
| commanders = [ | |
| 'nvm install {node_version}'.format(node_version = node_version), | |
| 'nvm alias 12 {node_version}'.format(node_version = node_version), | |
| 'nvm alias default 12', | |
| 'nvm use default' | |
| ] | |
| for commander in commanders: | |
| run_commander( | |
| "fish -c '{commander}'".format(commander = commander) | |
| ) | |
| def cnpm_install(): | |
| commander = 'npm install -g cnpm --registry=https://r.cnpmjs.org' | |
| commander = "bash -lc '{commander}'".format(commander = commander) | |
| run_commander(commander) | |
| def pkgs_install_all(): | |
| pkg_names = ' '.join(pkgs) | |
| commander = 'npm install -g {pkg_names}'.format(pkg_names = pkg_names) | |
| commander = "bash -lc '{commander}'".format(commander = commander) | |
| run_commander(commander) | |
| def pkgs_install(): | |
| for pkg in pkgs: | |
| commander = 'npm install -g {pkg}'.format(pkg = pkg) | |
| commander = "bash -lc '{commander}'".format(commander = commander) | |
| run_commander(commander) | |
| nvm_install() | |
| nvm_config() | |
| nvm_fish_wrapper_get() | |
| nvm_support_fish() | |
| node_install() | |
| pkgs_install() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment