Skip to content

Commit

Permalink
main for z7 (#29)
Browse files Browse the repository at this point in the history
* refactor for z7

* update gitignore

* build workflow

* more refactoring (delete files)

* add tests

* revise and extend review

* add version to changelog

* bump version to 0.2.11

* Update updates.json and update.rdf

* minor change in changelog

* Update updates.json and update.rdf

* also change version in install.rdf for z6 version

* version in install.rdf

* delete comments

* Update updates.json and update.rdf

* change pr request mechanism
  • Loading branch information
denismaier authored Jun 26, 2024
1 parent 2d6777c commit e3e653f
Show file tree
Hide file tree
Showing 46 changed files with 2,957 additions and 49 deletions.
11 changes: 11 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
BASE_NAME="zotero-swisscovery-ubbern-locations"
REPO_OWNER="ub-unibe-ch"
REPO_NAME="zotero-swissbib-bb-locations"
PLUGIN_ID="[email protected]"
MANIFEST_JSON="src/manifest.json"
INSTALL_RDF="src/install.rdf"
UPDATE_TEMPLATE_FILE="updates.template.json"
UPDATE_JSON_FILE="updates.json"
UPDATE_RDF_FILE="update.rdf"
BUILD_DIR="build"
CHANGELOG="CHANGES.md"
75 changes: 75 additions & 0 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Create Release

on:
push:
branches:
- main

paths:
- 'src/manifest.json'

workflow_dispatch: # allows to manually trigger the workflow_dispatch

jobs:
create-release:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt install jq
- name: Set up Git user
run: |
git config --global user.name 'github-actions'
git config --global user.email '[email protected]'
- name: Load .env file
run: |
set -o allexport
source .env
set +o allexport
# Export all loaded variables to GITHUB_ENV
for var in $(cat .env | grep -v '^#' | xargs); do
echo "$var" >> $GITHUB_ENV
done
- name: Extract version number
id: extract_version
run: echo "VERSION=$(jq -r '.version' src/manifest.json)" >> $GITHUB_ENV

- name: Check changelog for version entry
run: |
if ! grep -q "## v${VERSION}" "${CHANGELOG}"; then
echo "Error: ${CHANGELOG} does not contain a heading for version v${VERSION}."
exit 1
fi
- name: Build release
run: |
echo "Building release ${BASE_NAME}-$VERSION"
scripts/build.sh ${BASE_NAME} $VERSION
echo "Built release ${BASE_NAME}-$VERSION"
- name: Get release notes
run: |
echo "Extract release notes from ${CHANGELOG}"
echo "## Changes" >> release-notes-${VERSION}.md
sed -n "/## v${VERSION}/,/^## /p" ${CHANGELOG} | sed '1d;$d' >> release-notes-${VERSION}.md
echo "Extracted release notes from ${CHANGELOG}"
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "Creating release $VERSION"
gh release create v${VERSION} ${BUILD_DIR}/${BASE_NAME}-${VERSION}.xpi -t "v${VERSION}" --notes-file release-notes-${VERSION}.md
echo "Created release $VERSION"
- name: Cleanup
run: |
rm release-notes-${VERSION}.md
rm -rf ${BUILD_DIR}
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
build/
.project
*.xpi
*.xpi
node_modules/
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Änderungen

## v0.2.11
- Kompatibilität mit Zotero 6 und 7 (Legacy-Code eingefroren und wird in einer der kommenden Versionen entfernt; neue Features nur noch in der Zotero 7 Codebase).
- Automatisierter Build- und Publish-Workflow
- Automatisierte Unit- und Integrationtests

## 0.2.10
- Rapido-Titel korrekt anzeigen

Expand Down
59 changes: 58 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,64 @@

`Zotero Swisscovery UB Bern Locations` ist ein Addon für das Literaturverwaltungsprogramm [Zotero](https://www.zotero.org/) sowie das darauf basierende [Jurism](https://juris-m.github.io/) zur Unterstützung des Bestandesaufbaus an der UB Bern. Das Addon kann über die SRU-Schnittstelle im [Swisscovery UB Bern](https://ubbern.swisscovery.slsp.ch/) Standortinformationen zu den ausgewählten Einträgen abrufen und -- je nach Ergebnis der Abfrage -- entsprechende Tags setzen.

Das Addon befindet sich in einem frühen Entwicklungsstadium. Bisher sind nur die grundlegenden Funktionen implementiert.
## Installation und Konfiguration

1. **Herunterladen der neuesten Version:**
- Besuchen Sie die [Releases-Seite](https://github.com/ub-unibe-ch/zotero-swissbib-bb-locations/releases).
- Unter Firefox: Rechtsklick auf die xpi-Datei -> "Speichern unter"; andernfalls wird versucht, das Plugin direkt in Firefox zu installieren, was zu einer Fehlermeldung führt.

2. **Installation in Zotero:**
- Gehen Sie zu: Werkzeuge -> Plugins -> Zahnrad-Symbol -> "Add-on aus Datei installieren".

3. **API-Key Konfiguration:**
- Damit die Ausleihbedingungen aus ALMA abgerufen werden können, muss der API-Key eingetragen werden. Je nach Zotero-Version finden Sie die Einstellung an folgenden Orten:
- Zotero 6: Werkzeuge -> Einstellungen für Swisscovery UB Bern Standortabfrage -> API Key
- Zotero 7: Allgemeines Zotero Einstellungsmenü -> Reiter "Swisscovery UB Bern Locations" -> API Key für Alma

## Benutzung

- **Kontextmenü-Funktionen:**
- Rechtsklick auf einen oder mehrere Titel -> "Swisscovery UB Bern Standortabfrage". Es stehen folgende Funktionen zur Verfügung:
- Standorte abfragen
- Bestellnotiz eintragen

### Standorte eintragen

Die Funktion "Standorte eintragen" fragt die Standorte der markierten Titel an der UB Bern ab und schreibt die Ergebnisse ins Zielfeld (Standard: Zusammenfassung, konfigurierbar in den Einstellungen). Zusätzlich werden Tags basierend auf den Ergebnissen gesetzt, um eine schnelle Filterung zu ermöglichen.

### Bestellnotiz eintragen

Die Funktion "Bestellnotiz eintragen" erstellt basierend auf gesetzten Tags die korrekte Bestellnotiz für den Bestellworkflow im TGW/Unitobler und schreibt diese ins Feld "Band". Erkannt werden Tags nach folgendem Muster:
- Etat: "Etat 20"
- DDCs: Pro DDC ein Tag nach dem Muster "DDC 200"
- Bestellcodes: Bestellcodes nach dem Muster "BC MEX"

Beispiel:
- Vergebene Tags:
- "Etat 20"
- "DDC 200"
- "DDC 230"
- "BC MEX"
- "BC E+p"

Ergebnis:
- "20 // 200, 230 // E+p, MEX"

Durch die Zuordnung der wichtigsten Tags auf die Tasten 1-9 kann man sehr effizient Tags vergeben und dann per "Bestellnotiz eintragen" die Bestellnotizen für eine gesamte Bestellung en bloc eintragen lassen.

## Entwicklung

1. Repository klonen oder forken.
2. Einrichtung der Entwicklungsumgebung:
- Befolgen Sie die Anweisungen zur [Einrichtung der Entwicklungsumgebung](https://www.zotero.org/support/dev/client_coding/plugin_development#setting_up_a_plugin_development_environment) und verwenden Sie die [Firefox Developer Tools](https://www.zotero.org/support/dev/zotero_7_for_developers#using_the_firefox_developer_tools).

3. Entwicklung in einem Branch.
4. Tests:
- Führen Sie Tests mit `npm test` durch (vorausgesetzt `node` und `jest` sind installiert).
- Passen Sie bestehende Tests an und erstellen Sie neue Tests, falls erforderlich.

5. Release-Workflow:
- Der Befehl `make` führt den Release-Workflow aus.

## License

Expand Down
62 changes: 59 additions & 3 deletions makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,62 @@
# Makefile

VERSION = 0.2.10
.PHONY: all check-tools version phony update-files pr clean

build:
7z a -tzip -r zotero-swisscovery-ubbern-locations-$(VERSION).xpi chrome/* defaults/* chrome.manifest install.rdf options.xul
# Helper to source .env and get variables
GET_VAR = ./scripts/get_env_var.sh

# Define variables by sourcing .env
BASE_NAME := $(shell $(GET_VAR) BASE_NAME)
BUILD_DIR := $(shell $(GET_VAR) BUILD_DIR)
MANIFEST_JSON= $(shell $(GET_VAR) MANIFEST_JSON)
UPDATE_JSON_FILE := $(shell $(GET_VAR) UPDATE_JSON_FILE)
UPDATE_RDF_FILE := $(shell $(GET_VAR) UPDATE_RDF_FILE)

# Function to get version from manifest.json
define get_version
$(shell jq -r '.version' src/manifest.json)
endef

# Get initial version
VERSION := $(call get_version)
XPI_FILE := $(BUILD_DIR)/$(BASE_NAME)-$(VERSION).xpi

# Export environment variables to make them available in scripts
export XPI_FILE
export VERSION

#########################
# Build targets
#########################

# Default Target
.DEFAULT_GOAL := all

# Define dependencies
all: pr

pr: update-files
./scripts/manage_pr.sh

update-files: build
./scripts/update_files.sh
cp $(UPDATE_JSON_FILE) $(UPDATE_RDF_FILE)

build: $(BUILD_DIR)/$(BASE_NAME)-$(call get_version).xpi

# Build target, depends on manifest.json and source files
$(BUILD_DIR)/$(BASE_NAME)-$(call get_version).xpi: $(wildcard src/*) $(MANIFEST_JSON)
./scripts/build.sh $(BASE_NAME) $(call get_version)

version: $(MANIFEST_JSON)

$(MANIFEST_JSON): check-tools
./scripts/manage_version.sh
$(eval VERSION := $(call get_version))
$(eval export VERSION)

check-tools:
./scripts/check_tools.sh

clean:
rm -f $(BUILD_DIR)/*.xpi
Loading

0 comments on commit e3e653f

Please sign in to comment.