Esempio n. 1
0
def source(rcfile, clean=False, update=False):
  assert_shell_perms('source')
  pipe = Popen("env -i sh -c 'set -a && source %s && env'" % rcfile, stdout=PIPE, shell=True)
  data = pipe.communicate()[0]
  env = dict((line.decode().split("=", 1) for line in data.splitlines()))
  cleanup_env(env)
  return env
Esempio n. 2
0
def sed_find_block(open_st, close_st, src):
    assert_shell_perms('sed')
    pattern = f'/{open_st}/,/{close_st}/p'
    cmd = f'gsed -n "{pattern}" {src}'
    res = sed_fcmd(cmd, src)
    if res: ok(f'Found block {open_st}')
    else: err(f'Did not find block {open_st}')
    return True if res else False
Esempio n. 3
0
def sed_replace_kv(key, new_val, src):
    assert_shell_perms('sed')
    quotes = '([\'\\"])?'  #tricky use quote if found
    pattern = fr's|^\s*(export )?{key}\={quotes}[^=]*$|\1{key}=\2{new_val}\2|'
    cmd = fr'gsed -r -i.bak "{pattern}" {src}'
    res = sed_fcmd(cmd, src)
    info(
        f' Replacing key[{key}] with value[{new_val}] on {src} {res.decode()}')
Esempio n. 4
0
def sed_add_line(line, src, force=False):
    assert_shell_perms('sed')
    out_str = (f"{line}{NL}")
    found = False
    if force or not found:
        with open(src, "a") as dest:
            dest.write(out_str)
    else:
        warn('Line already found. Not adding!')
Esempio n. 5
0
def sed_insert_file_where(where, insert, src):
    assert_shell_perms('sed')
    pattern = f'/{where}/r {insert}'
    cmd = f'gsed -e "{pattern}" -e /{where}/d {src}'
    res = sed_fcmd(cmd, src)
    src_new = f'{src}.new'
    with open(src_new, 'wb') as dest:
        dest.write(res)
    info(f' Attempting insert of [{where}] on {src}')
    rename_file(src_new, src)
Esempio n. 6
0
def sed_add_block(open_st, close_st, data, src, force=False):
    assert_shell_perms('sed')
    #add date string to data prior to add block
    out_str = (f"{NL}{open_st}{NL}" f"{data}{NL}" f"{close_st}{NL}")
    found = sed_find_block(open_st, close_st, src)
    if force or not found:
        with open(src, "a") as dest:
            dest.write(out_str)
    else:
        warn('Block already found. Not adding!')
Esempio n. 7
0
def unit_test():
  try:
    assert_shell_perms('mv')
    file1='../../inf/.testrc'
    file2='../../inf/.include'
    dir1='../../inf/'
    print(path_type(dir1))
    print(path_type(file1))
    print(path_type('./moo'))


    return 0
  except KeyboardInterrupt:
    info('\nDone')
Esempio n. 8
0
def unit_test():
    try:
        assert_shell_perms('sed')
        file = '../../inf/.testrc'
        file2 = '../../inf/.include'
        sed_delete_block('# ----test:str---- #', '# ----test:end---- #', file)
        sed_replace_kv('VAL2', 'moop', file)
        sed_replace_kv('VAL3', 'soop', file)
        sed_replace_kv('XY', '999', file)

        print(line_comment('hey girl', 'js'))
        print(line_marker('hello', 'sh')[0])
        print(line_marker('hello', 'sh')[1])

        sed_find_block(*line_marker('test', 'sh'), file)

        date_st = date_comment('sh', 'Last Updated')

        sed_add_block(
            *line_marker('hey girl', 'sh'), f'''{date_st}{NL}
      # you know I like that pussy
    ''', file, False)

        sed_insert_file_where('\#include_me', file2, file)

        sed_add_block(*line_marker('test', 'sh'), f'''{date_st}{NL}
      # next
    ''', file, False)

        sed_find_block(*line_marker('test', 'sh'), file)

        #sed_delete_line("#happy pussy",file)
        sed_add_line(f'#include_me', file)

        return 0
    except KeyboardInterrupt:
        info('\nDone')
Esempio n. 9
0
def sed_delete_line(line, src):
    assert_shell_perms('sed')
    cmd = f'gsed -i.bak "s|{line}||gi" {src}'
    res = sed_fcmd(cmd, src)
    info(f' Deleting line [{line}] on {src} {res.decode()}')
Esempio n. 10
0
def rem_file(src):
  try:
    assert_shell_perms('rm')
    if is_file(src): remove(src)
  except FileNotFoundError as e:
    err(f'File [{src}] does not exist.')
Esempio n. 11
0
def rename_file(src,dest):
  try:
    assert_shell_perms('rename')
    rename(src,dest)
  except FileNotFoundError as e:
    pass
Esempio n. 12
0
def copy_file(src,dest):
  try:
    assert_shell_perms('mv')

  except FileNotFoundError as e:
    pass
Esempio n. 13
0
def find_cmd(cmd, src, **options):
  assert_shell_perms('find')
Esempio n. 14
0
def grep_cmd(cmd, src, **options):
  assert_shell_perms('grep')
Esempio n. 15
0
def sed_delete_block(open_st, close_st, src, verify=False):
    assert_shell_perms('sed')
    pattern = f'/{open_st}/,/{close_st}/d'
    cmd = f'gsed -i.bak "{pattern}" {src}'
    res = sed_fcmd(cmd, src)
    info(f' Deleting block [{open_st}] on {src} {res.decode()}')
Esempio n. 16
0
def sed_fcmd(cmd, src, **options):
    assert_shell_perms('sed')
    assert_file_exists(src)
    res = check_output([f'{cmd}'], shell=True)
    rem_file(f'{src}.bak')
    return res
Esempio n. 17
0
def sed_esc(st):
    assert_shell_perms('sed')
    pattern = r"s/[^^]/[&]/g; s/\^/\\^/g; $!a\'$'\n''\\n"
    cmd = f'sed -e "{pattern}" <<< "{st}" | tr -d "\n"'
    res = check_output([f'{cmd}'], shell=True)
    return res