def remove(option, refresh=True): """ Remove option line from remote settings.ini """ option = option.lower() before = '^%s\s+?=\s+?.*' % option after = '' if contains(env.PROJECT.settings, before, use_re=True): sed(env.PROJECT.settings, before, after, backup='', flags='I') run(r"tr -s '\n' < %(settings)s > %(settings)s.new && mv %(settings)s{.new,}" % env.PROJECT) # sanity check assert not contains(env.PROJECT.settings, '%s.*' % option), 'Config found: "%s"' % option if refresh: restart()
def set(option, value=None): """ Update or create option line from remote settings.ini fab production config.set:DEBUG,False If value is omitted, a prompt will ask for it. This helps avoid problems settings values with $ and alike. """ if value is None: value = prompt('Value: ') option = option.upper() after = '%s = %s' % (option, value) remove(option, refresh=False) # remove option if exists. append(env.PROJECT.settings, after) # sanity check assert contains(env.PROJECT.settings, after), 'Config not found: "%s"' % after restart()