Holger Frey
5 years ago
4 changed files with 102 additions and 0 deletions
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
""" Some helper scripts for the day to day work with Ubuntu in WSL2 """ |
||||
|
||||
__version__ = "0.0.1" |
@ -0,0 +1,76 @@
@@ -0,0 +1,76 @@
|
||||
import click |
||||
import re |
||||
import pyperclip |
||||
|
||||
a2z = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
||||
EXCEL_COLUMNS = list(a2z) |
||||
for prefix in a2z: |
||||
further = [prefix + c for c in a2z] |
||||
EXCEL_COLUMNS.extend(further) |
||||
|
||||
|
||||
|
||||
sheet = "Input_Data_*" |
||||
col_start = "A" |
||||
row_start = 8 |
||||
|
||||
|
||||
def text_to_changelog(raw_text, sheet, start_column, start_row): |
||||
cells = [line.split("\t") for line in raw_text.splitlines()] |
||||
|
||||
output = [] |
||||
current_row = 1 |
||||
columns_start_index = EXCEL_COLUMNS.index(start_column) |
||||
columns_used = EXCEL_COLUMNS[columns_start_index:] |
||||
|
||||
for row, line in enumerate(cells, start=start_row): |
||||
if row != current_row: |
||||
output.append("") |
||||
current_row = row |
||||
for column, cell in zip(columns_used, line): |
||||
cell = cell.strip() |
||||
if not cell: |
||||
continue |
||||
output.append(f"{sheet}\t{column}{row}\t{cell}") |
||||
|
||||
iterator = iter(output) |
||||
prev = next(iterator) |
||||
yield prev |
||||
|
||||
for current in iterator: |
||||
if current != prev: |
||||
yield current |
||||
prev = current |
||||
|
||||
|
||||
def clipboard_to_changelog(sheet, start_column, start_row): |
||||
xls = pyperclip.paste() |
||||
result = list(text_to_changelog(xls, sheet, start_column, start_row)) |
||||
line_count = len(result) |
||||
if line_count == 1: |
||||
print(f"Copied one line to the clipboard") |
||||
print(result[0]) |
||||
else: |
||||
print(f"Copied {line_count} lines to the clipboard") |
||||
first_line = next(l for l in result if l.strip()) |
||||
print(first_line) |
||||
print("...") |
||||
last_line = next(l for l in result[::-1] if l.strip()) |
||||
print(last_line) |
||||
|
||||
|
||||
pyperclip.copy("\r\n".join(result)) |
||||
|
||||
|
||||
@click.command() |
||||
@click.option("-s", "--sheet", prompt=True, required=True) |
||||
@click.option("-w", "--well", prompt=True, required=True) |
||||
def cli(sheet, well): |
||||
regex_well = r"(?P<column>[A-Z]{1,2})(?P<row>\d+)" |
||||
match = re.match(regex_well, well.upper()) |
||||
if match is None: |
||||
raise ValueError(f"No Excel Well: {well}") |
||||
regex_result = match.groupdict() |
||||
start_column = regex_result["column"] |
||||
start_row = int(regex_result["row"]) |
||||
clipboard_to_changelog(sheet, start_column, start_row) |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
[build-system] |
||||
requires = ["flit_core >=2,<4"] |
||||
build-backend = "flit_core.buildapi" |
||||
|
||||
[tool.flit.metadata] |
||||
module = "linux_helpers" |
||||
author = "Holger Frey" |
||||
author-email = "frey@imtek.de" |
||||
home-page = "https://git.cpi.imtek.uni-freiburg.de/holgi/linux-helpers" |
||||
description-file = "README.md" |
||||
license = "Beerware" |
||||
|
||||
|
||||
requires = [ |
||||
"pyperclip >=1.8.0", |
||||
"click >= 7.1.2", |
||||
] |
||||
|
||||
|
||||
[tool.flit.scripts] |
||||
xls2changelog = "linux_helpers.excel2changelog:cli" |
Loading…
Reference in new issue