specleap-framework 2.1.13 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/setup.sh CHANGED
@@ -48,37 +48,16 @@ echo -e "${YELLOW} v2.0.0 — Instalador Profesional${NC}"
48
48
  echo -e "${CYAN}${LINE}${NC}"
49
49
  echo ""
50
50
 
51
- # ============================================
52
- # PRE-CHECK: Aviso si la carpeta se llama "specleap-framework"
53
- # ============================================
54
- # Si el usuario clonó con `git clone <url>` (sin segundo argumento), la
55
- # carpeta se llamará "specleap-framework" por defecto. Le avisamos por si
56
- # quería otro nombre, antes de empezar el setup interactivo.
57
- # Solo aplica cuando setup.sh se ejecuta directamente (no via bin/specleap,
58
- # que ya pregunta nombre interactivamente). Detectamos este caso por
59
- # ausencia de la variable SPECLEAP_INSTALL_PATH (que solo la pone bin/specleap).
60
-
61
- CURRENT_FOLDER_NAME="$(basename "$(pwd)")"
62
-
63
- if [ -z "${SPECLEAP_INSTALL_PATH:-}" ] && [ "$CURRENT_FOLDER_NAME" = "specleap-framework" ]; then
64
- echo "ℹ️ Esta carpeta se llama 'specleap-framework' (nombre por defecto de git clone)."
65
- echo " This folder is named 'specleap-framework' (git clone default)."
66
- echo ""
67
- echo " Si querías otro nombre / If you wanted a different name:"
68
- echo " 1) Cancela con Ctrl+C / Cancel with Ctrl+C"
69
- echo " 2) Vuelve a ejecutar / Run again with:"
70
- echo " git clone https://github.com/ConceptualCreative/specleap-framework.git mi-proyecto"
71
- echo " cd mi-proyecto"
72
- echo " bash setup.sh"
73
- echo ""
74
- read -p "¿Continuar con el nombre 'specleap-framework'? / Continue with 'specleap-framework'? [S/n]: " CONTINUE_DEFAULT
75
- if [[ "$CONTINUE_DEFAULT" =~ ^[Nn]$ ]]; then
76
- echo ""
77
- echo "Cancelado por el usuario / Cancelled by user."
78
- exit 0
79
- fi
80
- echo ""
81
- fi
51
+ # Helper usado por el Paso 2 (nombre de carpeta) más abajo.
52
+ # Definido aquí porque es lógica pura sin dependencia de idioma.
53
+ is_valid_folder_name() {
54
+ local name="$1"
55
+ [ -z "$name" ] && return 1
56
+ [ ${#name} -gt 100 ] && return 1
57
+ [[ "$name" == .* ]] && return 1
58
+ [[ "$name" =~ ^[A-Za-z0-9_][A-Za-z0-9_.\-]*$ ]] && return 0
59
+ return 1
60
+ }
82
61
 
83
62
  # ============================================
84
63
  # PASO 1: Selección de Idioma
@@ -170,6 +149,114 @@ echo -e "${GREEN}✅ curl:${NC} available"
170
149
  echo ""
171
150
  sleep 1
172
151
 
152
+ # ============================================
153
+ # PASO 1.5: Nombre de la carpeta del proyecto
154
+ # ============================================
155
+ # Va DESPUÉS de la selección de idioma para que los textos salgan en el
156
+ # idioma elegido (no bilingües). Antes del Paso 2 (GitHub) para que el
157
+ # rename sea visible en el resto de prompts y en el resumen final.
158
+ #
159
+ # Solo aplica cuando setup.sh se ejecuta directamente (`bash setup.sh`).
160
+ # Si vienes desde `bin/specleap` (vía `npx`), ese script ya pidió nombre
161
+ # y ya creó la carpeta — entonces SPECLEAP_INSTALL_PATH está set y
162
+ # saltamos este bloque para no preguntar dos veces.
163
+
164
+ if [ -z "${SPECLEAP_INSTALL_PATH:-}" ]; then
165
+ CURRENT_PATH="$(pwd)"
166
+ CURRENT_FOLDER_NAME="$(basename "$CURRENT_PATH")"
167
+ PARENT_PATH="$(dirname "$CURRENT_PATH")"
168
+
169
+ echo -e "${CYAN}${LINE}${NC}"
170
+ if [ "$LANG" = "es" ]; then
171
+ echo -e "${BLUE}${BOLD}Nombre de la carpeta del proyecto${NC}"
172
+ else
173
+ echo -e "${BLUE}${BOLD}Project folder name${NC}"
174
+ fi
175
+ echo -e "${CYAN}${LINE}${NC}"
176
+ echo ""
177
+
178
+ if [ "$LANG" = "es" ]; then
179
+ echo "📝 ¿Cómo quieres que se llame la carpeta del proyecto?"
180
+ echo ""
181
+ echo " Carpeta actual: $CURRENT_FOLDER_NAME"
182
+ echo " Default si pulsas Enter: specleap-framework"
183
+ echo " Permitido: letras, números, '-', '_', '.'"
184
+ echo ""
185
+ else
186
+ echo "📝 What name do you want for the project folder?"
187
+ echo ""
188
+ echo " Current folder: $CURRENT_FOLDER_NAME"
189
+ echo " Default on Enter: specleap-framework"
190
+ echo " Allowed: letters, numbers, '-', '_', '.'"
191
+ echo ""
192
+ fi
193
+
194
+ while true; do
195
+ if [ "$LANG" = "es" ]; then
196
+ read -p "$(echo -e ${YELLOW}Nombre:${NC} )" RAW_NAME
197
+ else
198
+ read -p "$(echo -e ${YELLOW}Name:${NC} )" RAW_NAME
199
+ fi
200
+
201
+ if [ -z "$RAW_NAME" ]; then
202
+ NEW_NAME="specleap-framework"
203
+ else
204
+ NEW_NAME="$RAW_NAME"
205
+ fi
206
+
207
+ if is_valid_folder_name "$NEW_NAME"; then
208
+ break
209
+ fi
210
+
211
+ echo ""
212
+ if [ "$LANG" = "es" ]; then
213
+ echo -e "${RED}❌ Nombre inválido: \"$NEW_NAME\"${NC}"
214
+ echo " Usa solo letras, números, '-', '_' y '.' (no empezar con '.')"
215
+ else
216
+ echo -e "${RED}❌ Invalid name: \"$NEW_NAME\"${NC}"
217
+ echo " Use only letters, numbers, '-', '_' and '.' (cannot start with '.')"
218
+ fi
219
+ echo ""
220
+ done
221
+
222
+ if [ "$NEW_NAME" = "$CURRENT_FOLDER_NAME" ]; then
223
+ echo ""
224
+ if [ "$LANG" = "es" ]; then
225
+ echo -e "${GREEN}✅ Carpeta:${NC} $CURRENT_FOLDER_NAME"
226
+ else
227
+ echo -e "${GREEN}✅ Folder:${NC} $CURRENT_FOLDER_NAME"
228
+ fi
229
+ SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
230
+ else
231
+ NEW_PATH="$PARENT_PATH/$NEW_NAME"
232
+ if [ -e "$NEW_PATH" ]; then
233
+ echo ""
234
+ if [ "$LANG" = "es" ]; then
235
+ echo -e "${RED}❌ Ya existe:${NC} $NEW_PATH"
236
+ echo -e "${YELLOW} Se mantiene el nombre actual:${NC} $CURRENT_FOLDER_NAME"
237
+ else
238
+ echo -e "${RED}❌ Already exists:${NC} $NEW_PATH"
239
+ echo -e "${YELLOW} Keeping current name:${NC} $CURRENT_FOLDER_NAME"
240
+ fi
241
+ SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
242
+ else
243
+ mv "$CURRENT_PATH" "$NEW_PATH"
244
+ cd "$NEW_PATH"
245
+ CURRENT_PATH="$NEW_PATH"
246
+ CURRENT_FOLDER_NAME="$NEW_NAME"
247
+ SPECLEAP_INSTALL_PATH="$NEW_PATH"
248
+ echo ""
249
+ if [ "$LANG" = "es" ]; then
250
+ echo -e "${GREEN}✅ Carpeta renombrada:${NC} $NEW_NAME"
251
+ else
252
+ echo -e "${GREEN}✅ Folder renamed:${NC} $NEW_NAME"
253
+ fi
254
+ fi
255
+ fi
256
+ echo ""
257
+ sleep 1
258
+ fi
259
+
173
260
  # ============================================
174
261
  # PASO 2: GitHub
175
262
  # ============================================
@@ -555,6 +642,10 @@ GITHUB_USER=$GITHUB_USER
555
642
  # Asana (REQUIRED)
556
643
  ASANA_ACCESS_TOKEN=$ASANA_TOKEN
557
644
  ASANA_WORKSPACE_ID=$ASANA_WORKSPACE_ID
645
+ # ASANA_WORKSPACE_GID es alias de ASANA_WORKSPACE_ID — los scripts del backlog
646
+ # (generate-asana-structure.sh, asana-utils.sh) leen GID; lo exponemos para
647
+ # evitar tener que detectarlo cada vez via API.
648
+ ASANA_WORKSPACE_GID=$ASANA_WORKSPACE_ID
558
649
 
559
650
  # CodeRabbit (installed via GitHub App)
560
651
  # https://github.com/apps/coderabbitai