Skip to content
Open

sync #38

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
10ce568
added python script to manage organizations in SMLM and generic boots…
May 28, 2025
748dfec
Merge pull request #1 from rmahique/develop
rmahique May 28, 2025
149c054
added script to manage activation keys
May 28, 2025
7809cd4
Merge pull request #2 from rmahique/develop
rmahique May 28, 2025
09c0048
minor cosmetic changes
May 30, 2025
57c71f3
Merge branch 'SUSE-Technical-Marketing:develop' into develop
rmahique May 30, 2025
6ec5120
Merge pull request #3 from rmahique/develop
rmahique May 30, 2025
b05d1fe
added manage users
Jun 26, 2025
a9b11d2
Merge pull request #4 from rmahique/develop
rmahique Jun 26, 2025
5dff7b9
changes
Jul 2, 2025
925b82c
Merge pull request #5 from rmahique/develop
rmahique Jul 2, 2025
cf8ec44
added support for multiple roles
Jul 2, 2025
83deaa6
Merge pull request #6 from rmahique/develop
rmahique Jul 2, 2025
3d1e195
cosmetic changes
Jul 2, 2025
91202b8
cosmetic changes
Jul 2, 2025
88deb01
Merge pull request #7 from rmahique/develop
rmahique Jul 2, 2025
0d0db20
cosmetic changes
Jul 3, 2025
faf9907
Merge pull request #8 from rmahique/develop
rmahique Jul 3, 2025
75e83e1
added extra var and condition for older systems
Jul 7, 2025
94ba801
Merge pull request #9 from rmahique/develop
rmahique Jul 7, 2025
687c71b
added extra output for debug
Jul 7, 2025
d5575ca
Merge pull request #10 from rmahique/develop
rmahique Jul 8, 2025
012a5c9
fix typo in variable
Jul 8, 2025
540c4fc
Merge pull request #11 from rmahique/develop
rmahique Jul 8, 2025
6c40269
fix unable to set the profile name
Jul 8, 2025
2af21c9
Merge pull request #12 from rmahique/develop
rmahique Jul 8, 2025
d3c405a
added manage groups script
Jul 9, 2025
947d8ce
Merge pull request #13 from rmahique/develop
rmahique Jul 9, 2025
2033b5b
Added script to manipulate custom info keys
Jul 14, 2025
0b8c6b9
Merge pull request #14 from rmahique/develop
rmahique Jul 14, 2025
90e2f87
added script to manage systems
Jul 14, 2025
b8d1ade
Merge pull request #15 from rmahique/develop
rmahique Jul 14, 2025
5719bc2
extended manage_systems with new options
Jul 15, 2025
1404697
Merge pull request #16 from rmahique/develop
rmahique Jul 15, 2025
f7becf1
extended manage_systems with new options
Jul 16, 2025
aa08f64
Merge pull request #17 from rmahique/develop
rmahique Jul 16, 2025
89cf94a
added CSS for instruqt
Aug 8, 2025
0fce1fc
Merge pull request #18 from rmahique/develop
rmahique Aug 8, 2025
a86b33e
Added script to automate the creation of different language versions …
Dec 5, 2025
9dcb156
Merge pull request #19 from rmahique/develop
rmahique Dec 5, 2025
af48e57
added change to always enable maintenance mode for the first commit
Dec 5, 2025
a733178
Merge pull request #21 from rmahique/develop
rmahique Dec 5, 2025
f078fa6
fixed bug
Dec 5, 2025
f7e581d
Merge pull request #23 from rmahique/develop
rmahique Dec 5, 2025
37d2a1d
added a different mode to support working with -XX files instead of c…
Dec 12, 2025
063bd81
added resilience for multiple runs
Dec 12, 2025
614901a
added resilience for multiple runs
Dec 12, 2025
429d1db
Merge pull request #25 from rmahique/develop
rmahique Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions scripts/instruqt/create_language_clone.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
#!/bin/bash
# Script to ease the creation of different languages versions of existing Instruqt labs.
# Author/s: Raul Mahiques
# License: GPLv3
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/gpl-3.0.html>.


# Make it look nicer if possible
if [ -t 1 ] && command -v tput >/dev/null && [ "$(tput colors)" -ge 8 ]; then
export ERROR='\033[0;31m'
export SUCCESS='\033[0;32m'
export WARNING='\033[1;33m'
export PROGRESS='\033[1m'
export NC='\033[0m'
else
export ERROR='' SUCESS='' WARNING='' NC='' PROGRESS=''
fi

# Verification and parameters handling

git rev-parse --is-inside-work-tree &>/dev/null || { echo -e "${ERROR}ERROR${NC}: This command must run on inside the git repository folder" ; exit 1 ; }
[[ "$1" == "" ]] && { echo -e "${ERROR}ERROR${NC}: arguments not provided\n${PROGRESS}Example${NC}:\n\t$0 <lab folder> <language, 2 letters only> [<mode>]" ; exit 1 ; }
[[ "$2" == "" ]] && { echo -e "${ERROR}ERROR${NC}: Language not provided\n${PROGRESS}Example${NC}:\n\t$0 <lab folder> <language, 2 letters only> [<mode>]" ; exit 1 ; }

lab=${1//\.\/}
lab=${lab//\/}
lang=${2,,}
mode=${3:-a}


[[ -d "$lab" ]] || { echo -e "${ERROR}ERROR${NC}: lab folder \"${lab}\" not found or not a directory\n${PROGRESS}Example${NC}:\n\t$0 <lab folder> <language, 2 letters only> [<mode>]" ; exit 1 ; }
[[ ${#lang} -gt 2 ]] && { echo -e "${ERROR}ERROR${NC}: Language be only 2 characters, \"${lang}\" has ${#lang}\n${PROGRESS}Example${NC}:\n\t$0 ${lab} es b" ; exit 1 ; }
[[ -d "${lab}-${lang}" ]] && { echo -e "${ERROR}ERROR${NC}: There is already a lab with the same language \"${lab}-${lang}\""; exit 1 ; }



if [[ "" == "a" ]]
then
# Start the process
mkdir ${lab}-${lang}


cp -r ${lab}/[0-9]* ${lab}-${lang}/

cd ${lab}
find -type d |while read line
do
mkdir -p "../${lab}-${lang}/$line"
done

find assets -type f |while read line
do
ln "../${lab}/$line" "../${lab}-${lang}/$line"
done
find track_scripts -type f |while read line
do
ln "../${lab}/$line" "../${lab}-${lang}/$line"
done

echo -e "${PROGRESS}Change all the text inside the following files:${NC}"
find [0-9][0-9]* -type d | while read line
do
mkdir -p "../${lab}-${lang}/$line"
done
find [0-9][0-9]* -iname '*.md' | while read line
do
cp $line "../${lab}-${lang}/$line"
echo -e "\tvim ${lab}-${lang}/$line"
done

find [0-9][0-9]* -type f -not -iname '*.md' | while read line
do
ln "../${lab}/$line" "../${lab}-${lang}/$line"
done

cd - >/dev/null

cp ${lab}/config.yml ${lab}-${lang}/

cp ${lab}/track.yml ${lab}-${lang}/
if grep '^maintenance:' ${lab}-${lang}/track.yml >/dev/null
then
sed 's/^maintenance:.*/maintenance: true/' -i ${lab}-${lang}/track.yml
else
echo 'maintenance: true' >> ${lab}-${lang}/track.yml
fi
sed "s/^\(slug\)\(.*\)/\1\2-${lang}/i;s/^\(title\)\(.*\)/\1\2 - ${lang^^}/i" -i ${lab}-${lang}/track.yml

echo -e "${PROGRESS}Change the variables inside config.yml if you wish to personalize it, otherwise just copy it as it is${NC}
\tvim ${lab}-${lang}/config.yml
${PROGRESS}Change the description and other text for the lab found inside track.yml file${NC}:
\tvim ${lab}-${lang}/track.yml"

echo -e "${PROGRESS}Adding it to git, please push your changes when they are ready for review${NC}"
git add ${lab}-${lang}
git commit ${lab}-${lang} -m "Added language \"${lang}\" for lab \"${lab}\", first commit"
else
lst_files=''
find ${lab} -iname 'assignment.md' -o -iname 'track.yml' -o -iname 'config.yml' | while read line
do
if [[ ! -f "${line/./-$lang.}" ]]
then
cp $line "${line/./-$lang.}"
echo -e "\tvim ${line/./-$lang.}"
if [[ "${line}" == "${lab}/track.yml" ]]
then
if grep '^maintenance:' ${lab}/track-${lang}.yml >/dev/null
then
sed 's/^maintenance:.*/maintenance: true/' -i ${lab}/track-${lang}.yml
else
echo 'maintenance: true' >> ${lab}/track-${lang}.yml
fi
sed "s/^\(slug\)\(.*\)/\1\2-${lang}/i;s/^\(title\)\(.*\)/\1\2 - ${lang^^}/i" -i ${lab}/track-${lang}.yml
fi
git add "${line/./-$lang.}"
lst_files="${line/./-$lang.} ${lst_files}"
else
echo "File already exists: ${line/./-$lang.}"
fi
done

git commit -m "Added language \"${lang}\" for lab \"${lab}\", first commit" $lst_files
fi

Loading