feat: rename files/contents

This commit is contained in:
2026-04-05 20:51:51 +03:00
parent 043805d398
commit d9c078e9b8
52 changed files with 187 additions and 331 deletions

View File

@@ -71,8 +71,8 @@ jobs:
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: nextcloudapptemplate.tar.gz
path: build/artifacts/appstore/nextcloudapptemplate.tar.gz
name: pantry.tar.gz
path: build/artifacts/appstore/pantry.tar.gz
upload:
runs-on: ubuntu-latest
@@ -86,18 +86,18 @@ jobs:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: nextcloudapptemplate.tar.gz
name: pantry.tar.gz
- name: Prepare Artifact Upload
run: test -f "$PWD/nextcloudapptemplate.tar.gz"
run: test -f "$PWD/pantry.tar.gz"
- name: Upload to Release
if: ${{ needs.release.outputs.release_created }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv nextcloudapptemplate.tar.gz "nextcloudapptemplate-${{ needs.release.outputs.tag_name }}.tar.gz"
gh release upload ${{ needs.release.outputs.tag_name }} nextcloudapptemplate-${{ needs.release.outputs.tag_name }}.tar.gz
mv pantry.tar.gz "pantry-${{ needs.release.outputs.tag_name }}.tar.gz"
gh release upload ${{ needs.release.outputs.tag_name }} pantry-${{ needs.release.outputs.tag_name }}.tar.gz
release-nextcloud:
name: Release to Nextcloud Apps
@@ -115,7 +115,7 @@ jobs:
echo "Private key not provided"
exit 1
fi
echo -n "${{ secrets.NEXTCLOUD_APP_PRIVATE_KEY }}" > ~/.nextcloud/certificates/nextcloudapptemplate.key
echo -n "${{ secrets.NEXTCLOUD_APP_PRIVATE_KEY }}" > ~/.nextcloud/certificates/pantry.key
- name: Release to Nextcloud Apps
if: ${{ needs.release.outputs.release_created }}

View File

@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Your Name <your@email.com>
# SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
# SPDX-License-Identifier: AGPL-3.0-or-later
name: Vitest

View File

@@ -2,8 +2,8 @@
host = https://www.transifex.com
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi, he_IL: he, ar_AR: ar
[o:nextcloud:p:nextcloud:r:nextcloudapptemplate]
file_filter = translationfiles/<lang>/nextcloudapptemplate.po
source_file = translationfiles/templates/nextcloudapptemplate.pot
[o:nextcloud:p:nextcloud:r:pantry]
file_filter = translationfiles/<lang>/pantry.po
source_file = translationfiles/templates/pantry.pot
source_lang = en
type = PO

View File

@@ -1,5 +1,5 @@
name: Bug Report
description: Report a bug or issue with the NextcloudAppTemplate app
description: Report a bug or issue with the Pantry app
labels: ["bug"]
body:
- type: markdown
@@ -59,8 +59,8 @@ body:
- type: input
id: app-version
attributes:
label: NextcloudAppTemplate App Version
description: What version of the NextcloudAppTemplate app are you using?
label: Pantry App Version
description: What version of the Pantry app are you using?
placeholder: e.g., 1.0.0
validations:
required: true
@@ -108,21 +108,21 @@ body:
description: |
**How to check migration status:**
This shows which database migrations have been executed for the NextcloudAppTemplate app.
This shows which database migrations have been executed for the Pantry app.
**For Docker installations:**
```bash
docker exec --user www-data -i nextcloud-aio-nextcloud php occ migrations:status nextcloudapptemplate
docker exec --user www-data -i nextcloud-aio-nextcloud php occ migrations:status pantry
```
**For standard installations:**
```bash
php occ migrations:status nextcloudapptemplate
php occ migrations:status pantry
```
Or from the Nextcloud directory:
```bash
sudo -u www-data php occ migrations:status nextcloudapptemplate
sudo -u www-data php occ migrations:status pantry
```
placeholder: Paste the migration status output here...
render: shell
@@ -134,25 +134,25 @@ body:
description: |
**How to get server logs:**
Look for errors related to the NextcloudAppTemplate app (last 20-50 lines recommended).
Look for errors related to the Pantry app (last 20-50 lines recommended).
**Via Web UI:**
- Go to Nextcloud Settings → Administration → Logging (or `/settings/admin/logging`)
- Look for entries containing "nextcloudapptemplate"
- Look for entries containing "pantry"
**For Docker installations:**
```bash
docker exec --user www-data -i nextcloud-aio-nextcloud tail -100 /var/www/html/data/nextcloud.log | grep -i nextcloudapptemplate
docker exec --user www-data -i nextcloud-aio-nextcloud tail -100 /var/www/html/data/nextcloud.log | grep -i pantry
```
**For standard installations:**
```bash
tail -100 /path/to/nextcloud/data/nextcloud.log | grep -i nextcloudapptemplate
tail -100 /path/to/nextcloud/data/nextcloud.log | grep -i pantry
```
Or from the Nextcloud directory:
```bash
sudo -u www-data tail -100 data/nextcloud.log | grep -i nextcloudapptemplate
sudo -u www-data tail -100 data/nextcloud.log | grep -i pantry
```
placeholder: Paste Nextcloud server logs here...
render: shell
@@ -166,7 +166,7 @@ body:
1. Open the page where the issue occurs
2. Press **F12** (or right-click → Inspect → Console tab)
3. Look for red error messages
4. Copy any errors related to the NextcloudAppTemplate app
4. Copy any errors related to the Pantry app
**Tip:** You can right-click on an error and select "Copy message" or "Copy stack trace"
placeholder: Paste browser console errors here...
@@ -184,13 +184,13 @@ body:
4. Look for failed requests (shown in red or with 4xx/5xx status codes)
5. Click on the failed request
6. Copy the following information:
- **Request URL** (e.g., `/apps/nextcloudapptemplate/api/...`)
- **Request URL** (e.g., `/apps/pantry/api/...`)
- **Status Code** (e.g., 500, 404, 403)
- **Response** tab content (the error message/data returned)
**Example format:**
```
Request: POST /apps/nextcloudapptemplate/api/...
Request: POST /apps/pantry/api/...
Status: 500 Internal Server Error
Response: {"error": "Database connection failed"}
```

View File

@@ -4,5 +4,5 @@ contact_links:
url: https://help.nextcloud.com
about: Ask questions and get help from the Nextcloud community
- name: Security Issue
url: https://github.com/chenasraf/nextcloud-nextcloudapptemplate/security/advisories/new
url: https://github.com/chenasraf/nextcloud-pantry/security/advisories/new
about: Report a security vulnerability privately

View File

@@ -1,5 +1,5 @@
name: Feature Request
description: Suggest a new feature or enhancement for the NextcloudAppTemplate app
description: Suggest a new feature or enhancement for the Pantry app
labels: ["enhancement"]
body:
- type: markdown

View File

@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: Bernhard Posselt <dev@bernhard-posselt.com>
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# NextcloudAppTemplate — Makefile
# Pantry — Makefile
# ---------------------------------
# A friendly, batteries-included Makefile for building and packaging a Nextcloud app
# that uses pnpm (JS) and Composer (PHP).
@@ -26,8 +26,8 @@
# make release → upload release to Nextcloud App Store
#
app_name=nextcloudapptemplate
repo_path=your-user/nextcloud-$(app_name)
app_name=pantry
repo_path=chenasraf/nextcloud-$(app_name)
build_tools_directory=$(CURDIR)/build/tools
source_build_directory=$(CURDIR)/build/artifacts/source
source_intermediate_directory=$(CURDIR)/build/artifacts/intermediate-source/$(app_name)

View File

@@ -1,9 +1,9 @@
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
SPDX-License-Identifier: CC0-1.0
-->
# Nextcloud App Template
# Pantry
This is a starter template for a Nextcloud app, using Vue 3 with Vite as frontend.

View File

@@ -1,41 +1,41 @@
<?xml version="1.0"?>
<info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
SPDX-License-Identifier: CC0-1.0
-->
<id>nextcloudapptemplate</id>
<name>Nextcloud App Template</name>
<id>pantry</id>
<name>Pantry</name>
<summary>Enter your app summary here.</summary>
<description><![CDATA[
Enter your app description here.
]]></description>
<version>1.0.0</version>
<licence>agpl</licence>
<author mail="your@email.com" homepage="https://your.website">Your Name</author>
<namespace>NextcloudAppTemplate</namespace>
<author mail="contact@casraf.dev" homepage="https://github.com/chenasraf/nextcloud-pantry">Chen Asraf</author>
<namespace>Pantry</namespace>
<documentation>
<user>https://github.com/your-user/nextcloud-nextcloudapptemplate/blob/master/README.md</user>
<admin>https://github.com/your-user/nextcloud-nextcloudapptemplate#installation</admin>
<developer>https://github.com/your-user/nextcloud-nextcloudapptemplate#development</developer>
<user>https://github.com/chenasraf/nextcloud-pantry/blob/master/README.md</user>
<admin>https://github.com/chenasraf/nextcloud-pantry#installation</admin>
<developer>https://github.com/chenasraf/nextcloud-pantry#development</developer>
</documentation>
<category>organization</category>
<category>tools</category>
<website>https://github.com/your-user/nextcloud-nextcloudapptemplate</website>
<bugs>https://github.com/your-user/nextcloud-nextcloudapptemplate/issues</bugs>
<repository>https://github.com/your-user/nextcloud-nextcloudapptemplate</repository>
<screenshot>https://raw.githubusercontent.com/your-user/nextcloud-nextcloudapptemplate/refs/heads/master/promo.png</screenshot>
<website>https://github.com/chenasraf/nextcloud-pantry</website>
<bugs>https://github.com/chenasraf/nextcloud-pantry/issues</bugs>
<repository>https://github.com/chenasraf/nextcloud-pantry</repository>
<screenshot>https://raw.githubusercontent.com/chenasraf/nextcloud-pantry/refs/heads/master/promo.png</screenshot>
<dependencies>
<nextcloud min-version="29" max-version="32"/>
</dependencies>
<settings>
<admin>OCA\NextcloudAppTemplate\Settings\Admin</admin>
<admin-section>OCA\NextcloudAppTemplate\Sections\Admin</admin-section>
<admin>OCA\Pantry\Settings\Admin</admin>
<admin-section>OCA\Pantry\Sections\Admin</admin-section>
</settings>
<navigations>
<navigation role="all">
<name>Nextcloud App Template</name>
<route>nextcloudapptemplate.page.index</route>
<name>Pantry</name>
<route>pantry.page.index</route>
<icon>app.svg</icon>
<order>6</order>
</navigation>

View File

@@ -1,6 +1,6 @@
<?php
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
//
declare(strict_types=1);

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Controller;
namespace OCA\Pantry\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\ApiRoute;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Command;
namespace OCA\Pantry\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
/**

View File

@@ -1,5 +1,5 @@
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
SPDX-License-Identifier: AGPL-3.0-or-later
-->

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Migration;
namespace OCA\Pantry\Migration;
use Closure;
use OCP\DB\ISchemaWrapper;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Db;
namespace OCA\Pantry\Db;
use JsonSerializable;

View File

@@ -2,12 +2,12 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Db;
namespace OCA\Pantry\Db;
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\Pantry\AppInfo\Application;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\QBMapper;
use OCP\DB\QueryBuilder\IQueryBuilder;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Service;
namespace OCA\Pantry\Service;
use Psr\Log\LoggerInterface;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Cron;
namespace OCA\Pantry\Cron;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\QueuedJob;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Cron;
namespace OCA\Pantry\Cron;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Util;
namespace OCA\Pantry\Util;
use Psr\Log\LoggerInterface;

View File

@@ -1,5 +1,5 @@
<!--
SPDX-FileCopyrightText: Your Name <your@email.com>
SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
SPDX-License-Identifier: AGPL-3.0-or-later
-->

View File

@@ -2,10 +2,10 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\AppInfo;
namespace OCA\Pantry\AppInfo;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
@@ -13,7 +13,7 @@ use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
class Application extends App implements IBootstrap {
public const APP_ID = 'nextcloudapptemplate';
public const APP_ID = 'pantry';
public const DIST_DIR = '../dist';
public const JS_DIR = self::DIST_DIR . '/js';
public const CSS_DIR = self::DIST_DIR . '/css';

View File

@@ -2,12 +2,12 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Controller;
namespace OCA\Pantry\Controller;
use OCA\NextcloudAppTemplate\AppInfo;
use OCA\Pantry\AppInfo;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\ApiRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;

View File

@@ -2,9 +2,9 @@
declare(strict_types=1);
namespace OCA\NextcloudAppTemplate\Controller;
namespace OCA\Pantry\Controller;
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\Pantry\AppInfo\Application;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;

View File

@@ -2,12 +2,12 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Sections;
namespace OCA\Pantry\Sections;
use OCA\NextcloudAppTemplate\AppInfo;
use OCA\Pantry\AppInfo;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
@@ -30,7 +30,7 @@ class Admin implements IIconSection {
}
public function getName(): string {
return $this->l->t('Nextcloud App Template');
return $this->l->t('Pantry');
}
public function getPriority(): int {

View File

@@ -2,12 +2,12 @@
declare(strict_types=1);
// SPDX-FileCopyrightText: Your Name <your@email.com>
// SPDX-FileCopyrightText: Chen Asraf <contact@casraf.dev>
// SPDX-License-Identifier: AGPL-3.0-or-later
namespace OCA\NextcloudAppTemplate\Settings;
namespace OCA\Pantry\Settings;
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\Pantry\AppInfo\Application;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IAppConfig;
use OCP\IL10N;

View File

@@ -1,7 +1,7 @@
{
"openapi": "3.0.3",
"info": {
"title": "nextcloudapptemplate",
"title": "pantry",
"version": "0.0.1",
"description": "Enter your app summary here.",
"license": {
@@ -47,7 +47,7 @@
}
},
"paths": {
"/ocs/v2.php/apps/nextcloudapptemplate/api/hello": {
"/ocs/v2.php/apps/pantry/api/hello": {
"get": {
"operationId": "api-get-hello",
"summary": "GET /api/hello",

View File

@@ -1,5 +1,5 @@
{
"name": "nextcloudapptemplate",
"name": "pantry",
"version": "0.0.0",
"license": "AGPL-3.0-or-later",
"type": "module",

View File

@@ -1,144 +0,0 @@
#!/usr/bin/env bash
# Replace template names in all text files under the current directory.
# Prompts for target names and replaces these sources:
# $SOURCE_PACKAGE -> <kebab-case input>
# $SOURCE_PASCAL -> <PascalCase input>
# $SOURCE_USER -> <username input> (default: your-user)
# $SOURCE_FULL -> <full-name input> (default: Your Name)
#
# Defaults (override via env before running):
# SOURCE_PACKAGE=nextcloudapptemplate
# SOURCE_PASCAL=NextcloudAppTemplate
# SOURCE_USER=your-user
# SOURCE_FULL=Your Name
set -euo pipefail
# --- Resolve absolute path to this script (portable) ---
abs_path() { perl -MCwd=abs_path -e 'print abs_path(shift)' "$1"; }
SCRIPT_ABS="$(abs_path "$0")"
SOURCE_PACKAGE="${SOURCE_PACKAGE:-nextcloudapptemplate}"
SOURCE_APPNAME="${SOURCE_APPNAME:-Nextcloud App Template}"
SOURCE_PASCAL="${SOURCE_PASCAL:-NextcloudAppTemplate}"
SOURCE_USER="${SOURCE_USER:-your-user}"
SOURCE_FULL="${SOURCE_FULL:-Your Name}"
SOURCE_EMAIL="${SOURCE_EMAIL:-your@email.com}"
SOURCE_WEBSITE="${SOURCE_WEBSITE:-https://your.website}"
printf "Enter package name (e.g., mynextcloudapp): "
IFS= read PACKAGE
printf "Enter app name (e.g., My Nextcloud App): "
IFS= read APPNAME
printf "Enter PascalCase name (e.g., MyNextcloudApp): "
IFS= read PASCAL
printf "Enter GitHub username (e.g., myUsername): "
IFS= read DEST_USER
printf "Enter full name (e.g., My Full Name): "
IFS= read DEST_FULL
printf "Enter email (e.g., myemail@example.com): "
IFS= read DEST_EMAIL
printf "Enter website (e.g., https://mywebsite.com): "
IFS= read DEST_WEBSITE
if [[ -z "${PACKAGE}" || -z "${APPNAME}" || -z "${PASCAL}" || -z "${DEST_USER}" || -z "${DEST_FULL}" || -z "${DEST_EMAIL}" || -z "${DEST_WEBSITE}" ]]; then
echo "All values are required." >&2
exit 1
fi
echo "Replacing:"
echo " ${SOURCE_PACKAGE} -> ${PACKAGE}"
echo " ${SOURCE_APPNAME} -> ${APPNAME}"
echo " ${SOURCE_PASCAL} -> ${PASCAL}"
echo " ${SOURCE_USER} -> ${DEST_USER}"
echo " ${SOURCE_FULL} -> ${DEST_FULL}"
echo " ${SOURCE_EMAIL} -> ${DEST_EMAIL}"
echo " ${SOURCE_WEBSITE} -> ${DEST_WEBSITE}"
echo
changed=0
checked=0
# Folders to skip
SKIP_DIRS=(
"*/.git/*"
"*/node_modules/*"
"*/vendor/*"
"*/dist/*"
"*/build/*"
"*/.next/*"
"*/.pnpm-store/*"
"*/.cache/*"
)
# Build the find prune expression
PRUNE_EXPR=()
for d in "${SKIP_DIRS[@]}"; do
PRUNE_EXPR+=(-path "$d" -o)
done
unset 'PRUNE_EXPR[${#PRUNE_EXPR[@]}-1]'
# Export for Perl
export PACKAGE PASCAL DEST_USER DEST_FULL SOURCE_PACKAGE SOURCE_PASCAL SOURCE_USER SOURCE_FULL SOURCE_EMAIL DEST_EMAIL SOURCE_WEBSITE DEST_WEBSITE SOURCE_APPNAME APPNAME
# Iterate files safely (null-delimited), skip binaries, replace in place with perl
while IFS= read -r -d '' file; do
[[ -f "$file" ]] || continue
# Skip this script itself
FILE_ABS="$(abs_path "$file")"
if [[ "$FILE_ABS" == "$SCRIPT_ABS" ]]; then
continue
fi
# Skip binary files
if ! LC_ALL=C grep -Iq . "$file"; then
continue
fi
checked=$((checked + 1))
perl -0777 -i.bak -pe '
BEGIN {
$src_k = $ENV{SOURCE_PACKAGE};
$src_a = $ENV{SOURCE_APPNAME};
$src_p = $ENV{SOURCE_PASCAL};
$src_u = $ENV{SOURCE_USER};
$src_f = $ENV{SOURCE_FULL};
$src_e = $ENV{SOURCE_EMAIL};
$src_w = $ENV{SOURCE_WEBSITE};
$dst_k = $ENV{PACKAGE};
$dst_a = $ENV{APPNAME};
$dst_p = $ENV{PASCAL};
$dst_u = $ENV{DEST_USER};
$dst_f = $ENV{DEST_FULL};
$dst_e = $ENV{DEST_EMAIL};
$dst_w = $ENV{DEST_WEBSITE};
}
s/\Q$src_k\E/$dst_k/g;
s/\Q$src_a\E/$dst_a/g;
s/\Q$src_p\E/$dst_p/g;
s/\Q$src_u\E/$dst_u/g;
s/\Q$src_f\E/$dst_f/g;
s/\Q$src_e\E/$dst_e/g;
s/\Q$src_w\E/$dst_w/g;
' -- "$file"
if ! cmp -s "$file" "$file.bak"; then
changed=$((changed + 1))
echo "Updated: $file"
fi
rm -f -- "$file.bak"
done < <(find . \( "${PRUNE_EXPR[@]}" \) -prune -o -type f -print0)
echo
echo "Checked $checked text file(s). Updated $changed file(s). ✅"
if [ -d ".github/workflows.template" ]; then
echo "Moving .github/workflows.template to .github/workflows"
mkdir -p .github/workflows
git mv .github/workflows.template/* .github/workflows/ 2>/dev/null || mv .github/workflows.template/* .github/workflows/
rmdir .github/workflows.template 2>/dev/null || true
fi

View File

@@ -1,5 +1,5 @@
<template>
<NcContent app-name="nextcloudapptemplate">
<NcContent app-name="pantry">
<!-- Left sidebar -->
<NcAppNavigation>
<template #search>
@@ -98,21 +98,21 @@ export default {
searchValue: '',
isRouterLoading: false,
// Mount path for this app section; adjust to your mount.
basePath: '/apps/nextcloudapptemplate',
basePath: '/apps/pantry',
strings: {
title: t('nextcloudapptemplate', 'Hello World — App'),
title: t('pantry', 'Hello World — App'),
subtitle: t(
'nextcloudapptemplate',
'pantry',
'Use the sidebar to navigate between views. Backend calls use {cStart}axios{cEnd} and OCS responses.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
{ escape: false },
),
searchLabel: t('nextcloudapptemplate', 'Search'),
searchPlaceholder: t('nextcloudapptemplate', 'Type to filter…'),
navHome: t('nextcloudapptemplate', 'Home'),
navExamples: t('nextcloudapptemplate', 'Examples'),
navAbout: t('nextcloudapptemplate', 'About'),
searchLabel: t('pantry', 'Search'),
searchPlaceholder: t('pantry', 'Type to filter…'),
navHome: t('pantry', 'Home'),
navExamples: t('pantry', 'Examples'),
navAbout: t('pantry', 'About'),
},
_removeBeforeEach: null,
_removeAfterEach: null,

View File

@@ -1,5 +1,5 @@
<template>
<div id="nextcloudapptemplate-content" class="section">
<div id="pantry-content" class="section">
<h2>{{ strings.title }}</h2>
<!-- Information / quick start -->
@@ -161,10 +161,10 @@ export default {
// Example: select with label <-> value mapping (like your intervals)
themeLabel: null,
themeOptions: [
{ label: t('nextcloudapptemplate', 'Light'), value: 'light' },
{ label: t('nextcloudapptemplate', 'Dark'), value: 'dark' },
{ label: t('pantry', 'Light'), value: 'light' },
{ label: t('pantry', 'Dark'), value: 'dark' },
{
label: n('nextcloudapptemplate', 'System (1 option)', 'System (%n options)', 2),
label: n('pantry', 'System (1 option)', 'System (%n options)', 2),
value: 'system',
},
],
@@ -183,15 +183,15 @@ export default {
// All user-visible strings go here
strings: {
// Titles / headers
title: t('nextcloudapptemplate', 'Hello World — App Template'),
infoTitle: t('nextcloudapptemplate', 'Information'),
examplesHeader: t('nextcloudapptemplate', 'Quick Examples'),
itemsHeader: t('nextcloudapptemplate', 'Editable List'),
backendHeader: t('nextcloudapptemplate', 'Backend Calls'),
title: t('pantry', 'Hello World — App Template'),
infoTitle: t('pantry', 'Information'),
examplesHeader: t('pantry', 'Quick Examples'),
itemsHeader: t('pantry', 'Editable List'),
backendHeader: t('pantry', 'Backend Calls'),
// Info
infoIntro: t(
'nextcloudapptemplate',
'pantry',
'This view shows {bStart}small, focused examples{bEnd} for inputs, lists, selections, and backend calls.',
{ bStart: '<b>', bEnd: '</b>' },
undefined,
@@ -200,21 +200,21 @@ export default {
gettingStartedList: [
t(
'nextcloudapptemplate',
'pantry',
'Import UI parts from {cStart}@nextcloud/vue{cEnd} and wire them with {cStart}v-model{cEnd}.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
{ escape: false },
),
t(
'nextcloudapptemplate',
'pantry',
'Use {cStart}axios{cEnd} for API calls; return OCS data as needed.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
{ escape: false },
),
t(
'nextcloudapptemplate',
'pantry',
'Keep user-facing text in a central {cStart}strings{cEnd} object with {cStart}t/n{cEnd}.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
@@ -223,7 +223,7 @@ export default {
],
tipsNote: t(
'nextcloudapptemplate',
'pantry',
'Pro tip: keep labels in {cStart}label{cEnd} and values in {cStart}value{cEnd} to simplify mapping.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
@@ -231,40 +231,40 @@ export default {
),
// Name example
nameInputHeader: t('nextcloudapptemplate', 'Your Name'),
nameInputLabel: t('nextcloudapptemplate', 'Name'),
nameInputPlaceholder: t('nextcloudapptemplate', 'e.g. Ada Lovelace'),
livePreview: t('nextcloudapptemplate', 'Live preview:'),
nameInputHeader: t('pantry', 'Chen Asraf'),
nameInputLabel: t('pantry', 'Name'),
nameInputPlaceholder: t('pantry', 'e.g. Ada Lovelace'),
livePreview: t('pantry', 'Live preview:'),
// Theme example
themeHeader: t('nextcloudapptemplate', 'Theme'),
themeLabel: t('nextcloudapptemplate', 'Choose a theme'),
themePreview: t('nextcloudapptemplate', 'Active value:'),
themeHeader: t('pantry', 'Theme'),
themeLabel: t('pantry', 'Choose a theme'),
themePreview: t('pantry', 'Active value:'),
// Counter example
counterHeader: t('nextcloudapptemplate', 'Counter'),
plus: t('nextcloudapptemplate', '+1'),
minus: t('nextcloudapptemplate', '-1'),
counterHeader: t('pantry', 'Counter'),
plus: t('pantry', '+1'),
minus: t('pantry', '-1'),
// Items table
newItemLabel: t('nextcloudapptemplate', 'New item'),
newItemPlaceholder: t('nextcloudapptemplate', 'e.g. Hello item'),
add: t('nextcloudapptemplate', 'Add'),
clear: t('nextcloudapptemplate', 'Clear'),
tableItem: t('nextcloudapptemplate', 'Item'),
tableActions: t('nextcloudapptemplate', 'Actions'),
editItemAria: t('nextcloudapptemplate', 'Edit item'),
duplicate: t('nextcloudapptemplate', 'Duplicate'),
remove: t('nextcloudapptemplate', 'Remove'),
noItems: t('nextcloudapptemplate', 'No items yet'),
newItemLabel: t('pantry', 'New item'),
newItemPlaceholder: t('pantry', 'e.g. Hello item'),
add: t('pantry', 'Add'),
clear: t('pantry', 'Clear'),
tableItem: t('pantry', 'Item'),
tableActions: t('pantry', 'Actions'),
editItemAria: t('pantry', 'Edit item'),
duplicate: t('pantry', 'Duplicate'),
remove: t('pantry', 'Remove'),
noItems: t('pantry', 'No items yet'),
// Backend
fetchHello: t('nextcloudapptemplate', 'Fetch Hello'),
save: t('nextcloudapptemplate', 'Save'),
loading: t('nextcloudapptemplate', 'Loading…'),
lastHelloAt: t('nextcloudapptemplate', 'Last hello at:'),
never: t('nextcloudapptemplate', 'Never'),
serverSaid: t('nextcloudapptemplate', 'Server said:'),
fetchHello: t('pantry', 'Fetch Hello'),
save: t('pantry', 'Save'),
loading: t('pantry', 'Loading…'),
lastHelloAt: t('pantry', 'Last hello at:'),
never: t('pantry', 'Never'),
serverSaid: t('pantry', 'Server said:'),
},
}
},
@@ -359,7 +359,7 @@ function cryptoRandom() {
</script>
<style scoped lang="scss">
#nextcloudapptemplate-content {
#pantry-content {
h2:first-child {
margin-top: 0;
}

View File

@@ -4,6 +4,6 @@ import { createApp } from 'vue'
import { http } from './axios'
import router from './router'
console.log('[DEBUG] Mounting NextcloudAppTemplate app')
console.log('[DEBUG] Mounting Pantry app')
console.log('[DEBUG] Base URL:', http.defaults.baseURL)
createApp(App).use(router).mount('#nextcloudapptemplate-app')
createApp(App).use(router).mount('#pantry-app')

View File

@@ -1,7 +1,7 @@
import { generateOcsUrl } from '@nextcloud/router'
import _axios from '@nextcloud/axios'
const baseURL = generateOcsUrl('/apps/nextcloudapptemplate/api')
const baseURL = generateOcsUrl('/apps/pantry/api')
export const http = _axios.create({ baseURL })
export const ocs = _axios.create({ baseURL })
ocs.interceptors.response.use(

View File

@@ -69,10 +69,10 @@ export default defineComponent({
},
tooltipText(): string {
const statusLabels: Record<StatusType, string> = {
success: t('nextcloudapptemplate', 'Completed successfully'),
warning: t('nextcloudapptemplate', 'Completed with warnings'),
pending: t('nextcloudapptemplate', 'In progress'),
error: t('nextcloudapptemplate', 'Failed'),
success: t('pantry', 'Completed successfully'),
warning: t('pantry', 'Completed with warnings'),
pending: t('pantry', 'In progress'),
error: t('pantry', 'Failed'),
}
return statusLabels[this.status] || ''
},

View File

@@ -4,7 +4,7 @@ import { generateUrl } from '@nextcloud/router'
const routes: RouteRecordRaw[] = [{ path: '/', component: () => import('@/views/AppView.vue') }]
const router = createRouter({
history: createWebHistory(generateUrl('/apps/nextcloudapptemplate')),
history: createWebHistory(generateUrl('/apps/pantry')),
routes,
})

View File

@@ -3,6 +3,6 @@ import Settings from './Settings.vue'
import './style.scss'
import { createApp } from 'vue'
console.log('[DEBUG] Mounting NextcloudAppTemplate Settings')
console.log('[DEBUG] Mounting Pantry Settings')
console.log('[DEBUG] Base URL:', http.defaults.baseURL)
createApp(Settings).mount('#nextcloudapptemplate-settings')
createApp(Settings).mount('#pantry-settings')

View File

@@ -171,10 +171,10 @@ export default {
name: '',
themeLabel: null,
themeOptions: [
{ label: t('nextcloudapptemplate', 'Light'), value: 'light' },
{ label: t('nextcloudapptemplate', 'Dark'), value: 'dark' },
{ label: t('pantry', 'Light'), value: 'light' },
{ label: t('pantry', 'Dark'), value: 'dark' },
{
label: n('nextcloudapptemplate', 'System (1 option)', 'System (%n options)', 2),
label: n('pantry', 'System (1 option)', 'System (%n options)', 2),
value: 'system',
},
],
@@ -184,15 +184,15 @@ export default {
strings: {
// Toolbar
searchLabel: t('nextcloudapptemplate', 'Search'),
searchPlaceholder: t('nextcloudapptemplate', 'Filter messages…'),
refresh: t('nextcloudapptemplate', 'Refresh'),
showForm: t('nextcloudapptemplate', 'Show form'),
hideForm: t('nextcloudapptemplate', 'Hide form'),
searchLabel: t('pantry', 'Search'),
searchPlaceholder: t('pantry', 'Filter messages…'),
refresh: t('pantry', 'Refresh'),
showForm: t('pantry', 'Show form'),
hideForm: t('pantry', 'Hide form'),
// Info
quickHelp: t(
'nextcloudapptemplate',
'pantry',
'Use the form to post a hello. The list shows recent hellos fetched from the server. All user-visible text is centralized in {cStart}strings{cEnd}.',
{ cStart: '<code>', cEnd: '</code>' },
undefined,
@@ -200,29 +200,29 @@ export default {
),
// Form
formHeader: t('nextcloudapptemplate', 'Say hello'),
nameInputLabel: t('nextcloudapptemplate', 'Name'),
nameInputPlaceholder: t('nextcloudapptemplate', 'e.g. Ada'),
themeLabel: t('nextcloudapptemplate', 'Theme'),
add: t('nextcloudapptemplate', 'Add'),
clear: t('nextcloudapptemplate', 'Clear'),
livePreview: t('nextcloudapptemplate', 'Preview:'),
formHeader: t('pantry', 'Say hello'),
nameInputLabel: t('pantry', 'Name'),
nameInputPlaceholder: t('pantry', 'e.g. Ada'),
themeLabel: t('pantry', 'Theme'),
add: t('pantry', 'Add'),
clear: t('pantry', 'Clear'),
livePreview: t('pantry', 'Preview:'),
// List
loading: t('nextcloudapptemplate', 'Loading…'),
emptyTitle: t('nextcloudapptemplate', 'No hellos yet'),
emptyDesc: t('nextcloudapptemplate', 'Try adding one using the form above.'),
addExample: t('nextcloudapptemplate', 'Add example'),
colMessage: t('nextcloudapptemplate', 'Message'),
colStatus: t('nextcloudapptemplate', 'Status'),
colAt: t('nextcloudapptemplate', 'Time'),
colActions: t('nextcloudapptemplate', 'Actions'),
statusSynced: t('nextcloudapptemplate', 'Synced'),
statusLocal: t('nextcloudapptemplate', 'Local'),
duplicate: t('nextcloudapptemplate', 'Duplicate'),
remove: t('nextcloudapptemplate', 'Remove'),
clearAll: t('nextcloudapptemplate', 'Clear all'),
never: t('nextcloudapptemplate', 'Never'),
loading: t('pantry', 'Loading…'),
emptyTitle: t('pantry', 'No hellos yet'),
emptyDesc: t('pantry', 'Try adding one using the form above.'),
addExample: t('pantry', 'Add example'),
colMessage: t('pantry', 'Message'),
colStatus: t('pantry', 'Status'),
colAt: t('pantry', 'Time'),
colActions: t('pantry', 'Actions'),
statusSynced: t('pantry', 'Synced'),
statusLocal: t('pantry', 'Local'),
duplicate: t('pantry', 'Duplicate'),
remove: t('pantry', 'Remove'),
clearAll: t('pantry', 'Clear all'),
never: t('pantry', 'Never'),
},
}
},

View File

@@ -1,6 +1,6 @@
<?php
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\Pantry\AppInfo\Application;
use OCP\Util;
/* @var array $_ */
@@ -9,4 +9,4 @@ $style = $_['style'];
Util::addScript(Application::APP_ID, Application::JS_DIR . "/$script");
Util::addStyle(Application::APP_ID, Application::CSS_DIR . "/$style");
?>
<div id="nextcloudapptemplate-app"></div>
<div id="pantry-app"></div>

View File

@@ -1,6 +1,6 @@
<?php
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\Pantry\AppInfo\Application;
use OCP\Util;
/* @var array $_ */
@@ -9,4 +9,4 @@ $style = $_['style'];
Util::addScript(Application::APP_ID, Application::JS_DIR . "/$script");
Util::addStyle(Application::APP_ID, Application::CSS_DIR . "/$style");
?>
<div id="nextcloudapptemplate-settings"></div>
<div id="pantry-settings"></div>

View File

@@ -25,7 +25,7 @@ if ($nextcloudBootstrap && file_exists($nextcloudBootstrap)) {
}
require_once $nextcloudBootstrap;
require_once __DIR__ . '/../vendor/autoload.php';
\OC_App::loadApp(OCA\NextcloudAppTemplate\AppInfo\Application::APP_ID);
\OC_App::loadApp(OCA\Pantry\AppInfo\Application::APP_ID);
OC_Hook::clear();
} else {
// Cannot find Nextcloud bootstrap

View File

@@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Controller;
use OCA\NextcloudAppTemplate\AppInfo\Application;
use OCA\NextcloudAppTemplate\Controller\ApiController;
use OCA\Pantry\AppInfo\Application;
use OCA\Pantry\Controller\ApiController;
use OCP\IAppConfig;
use OCP\IL10N;
use OCP\IRequest;